前言有时候使用 npm 上的包,发现有 bug ,我们知道如何修改,但是别人可能一时半会没法更新,或者是我们特殊需求,别人不愿意修改,这时候我们只能自己动手丰衣足食。那么我们应该如何修改别人的源码呢?首先,直接修改 node_modules 里面的文件是不太行的,重新安装依赖就没有了。一般常用办法有两个: 下载别人代码到本地,放在 src 目录,修改后手动引入。fork 别人的代码到自己仓库,修改后,从自己仓库安装这个插件。这两个办法的缺陷就是:更新麻烦,我们每次都需要手动去更新代码,蓝狮注册无法与插件同步更新。如果 ...
蓝狮注册TYPESCRIPT 工具类型
类型是 TypeScript 的灵魂,很多时候我们需要种种新的类型。工具类型是 TypeScript 的一种特殊类型,为了解决某一特定的类型问题,得到一种新的类型。有的就是一种通用类型;有的则可以对现有类型进行一定的转换,从而得到一种新的类型。 TypeScript 内置了很多工具类型,熟练运用它们,可以让我们开发工作事半功倍。 TypeScript 的工具类型文档:https://www.typescriptlang.org/docs/handbook/utility-types.html 本文出自:https://fjolt.com/series/typescript-utility-types,在此表示感谢下面我们将逐一介绍这些 ...
蓝狮注册TypeScript与JavaScript的区别
TypeScript 是一种由微软开发的自由和开源的编程语言,是一种非常受欢迎的 JavaScript 语言扩展,它也是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。它在现有的 JavaScript 语法之上加入了一层类型层,而这一层即使被删除,蓝狮注册也丝毫不会影响运行时的原有表现。许多人认为 TypeScript “只是一个编译器”,但更好的理解其实是把 TypeScript 看作两个独立的系统:编译器(即处理语法的部分)和语言工具(即处理与编辑器集成的部分)。通过独立看待这两个系统,就可以 ...
蓝狮注册JavaScript框架的四个时代
早在2012年,我开始主要用JavaScript进行编码。我曾为一家本地企业从头到尾做了一个php应用,一个基本的CMS和网站,公司决定要重写它并增加一些功能。 项目经理希望我使用.NET,部分原因是这是他所知道的,但也因为他希望这个应用感觉像一个本地应用程序–没有页面刷新或操作动作长时间等待。经过一番研究和原型设计,我说服了经理,可以使用当时刚开始出现的全新JS框架,它能做到这些事项。 我选择的第一个框架实际上是 angular 1。在我遇到路由器的一些问题之前,蓝狮官网已经建立了一个相当大的应用程序,并使用Fu ...
蓝狮官网浏览器底层工作那些事儿
浏览器已经成为我每天都需要打交道的工具,然而对于这个我们的老朋友,即使一些 web 开发人员也对它的底层工作原理不是非常清楚,今天我们就来简单谈一谈浏览器的底层工作原理。 浏览器的主要功能如果非要用一句话来概括浏览器的功能,那么浏览器就是一蓝狮官网个请求资源,然后显示资源的软件。 这里的资源主要就是我们经常提到的 html,css,js,还有图片等。 浏览器共有的接口: 地址栏前进后退按钮刷新按钮主页按钮收藏按钮通过这些接口我们就基本掌握了浏览器的基本操作。 浏览器的架构浏览器对外表现就是一个 ...
蓝狮官网测试一下Pinia,Vuex 要出局了?
自从我开始使用vue 3和组合api以来,我也尝试使用 Pinea 作为状态管理库。如果是从是 vue2 和 vuex 过来的,就会觉得用起来差别还是很大的。 说实话,我对 Vuex 使用还是很不适应。最初,蓝狮注册登陆有 “很多 “的模板代码,只是让 store 使用减少。不过,状态管理确实给我们带来了遍历,特别是每当我们有一小块应该跨组件共享的状态时,就会更倾向于使用它。 我们先来看看 Vuex 和 Pinia 的整体设计以及它们之间的区别是什么。 Vuex下面是Vuex工作原理的官方图示,刚开始学习时,一看就很懵,不过当用过时 ...
蓝狮官网13个你应该知道的 Webpack 优化技巧
在这篇文章中,我将从三个方面分享一些我常用的技巧: 提高优化速度压缩打包文件的大小改善用户体验。提高速度1、线程加载器多线程可以提高程序的效率,我们也可以在 webpack 中使用。蓝狮官网而thread-loader是一个可以在Webpack中启用多线程的加载器。 安装: npm i thread-loader -D配置: {test: /.js$/,use: [‘thread-loader’,‘babel-loader’],}2、缓存加载器在我们的项目开发过程中,Webpack 需要多次构建项目。为了加快后续构建,我们可以使用缓存,与缓存相关的加载器是缓存加载器 ...
蓝狮官网如何统一前端项目的 Node 版本和包管理器?
通过文档和沟通约束,远不如用工具(代码)约束。开发环境Node.jsPackage Manager (npm、yarn、pnpm)痛点问题成员机器 Node.js 版本不统一: 守旧派用 12.x、保守用 14.x、激进用 17.x。项目能否正常跑起来全凭天意,在没有 CICD 流水线加持本地 npm run build 的场景下线上风险可想而知。 有人习惯用 npm、有人习惯用 yarn, 代码库里面经常会存在 package-lock.json、yarn.lock 文件同时存在的情况。更痛的点还是各种奇奇怪怪问题排查起来没有头绪。 我们要做的就是将问题掐死在源头:锁定 Node.js 版本和包管理器 ...
蓝狮官网多项目node版本自动切换工具-Volta
一、项目痛点每一个前端项目都依赖不同的node版本,随着项目仓库的增多,已经记不清哪个仓库用的是哪个版本的node了,只有在项目安装依赖时发现报错,才会想起来排查默认node环境与项目默认node版本是否匹配,遗憾的是,并不是所有项目都会把node版本依赖这种细节交代清楚,因此也就只能多方打听,耗尽大量时间,只为寻找一个版本号。解决问题后,为了避免其他人踩坑,你将node版本依赖明确的写到README文件中,盼望着其他同事在开发前多看一眼,不要将他自己本地新安装的package.json强制覆盖仓库里的依赖。日积月累,node版本 ...
蓝狮官网JS计算两个日期之间的天数
算法:利用毫秒差,由于1秒等于1000毫秒,60秒等于1分钟,蓝狮注册登陆60分钟一小时,一天24小时。所以毫秒差除以(60×60×1000×24)等于天数。 实现方式一:Date.parse/** 计算两个日期之间的天数@param start 开始日期 yyyy-MM-dd@param end 结束日期 yyyy-MM-dd@returns {number} 如果开始日期等于结束日期,则返回一天;开始日期大于结束日期,则返回0/ function getDaysBetween(start,end){ var startDate = Date.parse(start); var endDate = Date.parse(end); if (startDate>endDate){ return 0; } if (startDate ...