登录
官网\文档:https://webpack.docschina.org/
前端最流行的编译工具之一,本身就有很多配套的工具,又可以兼容使用很多其他工具,功能齐全。
但它升级到成版本5后,默认去除了node的api,用起来有时不太方便。
安装指令:
生态过于复杂,下面安装的只是基础最核心的。
npm install -D webpack webpack-cli
官网\文档:https://vitejs.cn/
前端新晋的最流行的编译工具之一,因为需要浏览器支持 ES 模块,所以对老旧浏览器有兼容性问题。
安装指令:
输入指令回车后,可按照提示进一步选择要使用的框架、初始工具等。
npm create vite@latest
官网\文档:https://parceljs.org/
号称零配置构建工具,支持多种语言框架和功能。
安装指令:
以库的形式存在,安装后可以在 package.json 中添加一个使用 parcel 编译 html 的指令来使用。
npm install --save-dev parcel
官网\文档:https://umijs.org/
一个 React 的开发框架,自带框架、编译功能,一般时候没有必要使用。
安装指令:
先创建文件夹,再在空文件夹中执行初始化指令。
mkdir myapp && cd myapp
npx create-umi@latest
Babel文档:https://babeljs.io/docs/en/。
功能强大的 js 转译工具,可以把使用各种新语法的 js 代码,转译成其他平台(低版本的浏览器、低版本的node)可使用的代码,一些平台不支持的语法、原生功能,也可以提供垫片来兼容。
很少被单独使用,经常被嵌套在其他编译工具中使用,比如 webpack、vite等。
官网\文档:https://zh-hans.reactjs.org/
用于构建用户界面的 JavaScript 库,全球最流行的前端开发框架之一。
安装指令:
只这么安装是很难用的,正常开发是需要使用编译工具配套使用。
npm install -s react
官网\文档:https://cn.vuejs.org/
渐进式 JavaScript 框架易学易用,性能出色,适用场景丰富的 Web 前端框架。
安装指令:
只这么安装是很难用的,正常开发是需要使用编译工具配套使用。
npm install -s vue
node开发的常用工具。
node开发的一个开发框架。
一个框架,使用它开发的产品,可以编译为 Windows、MacOs、Linux 的软件。
前端界面使用web任选,后端使用 nodejs,所以整体来说对前端开发人员很友好。
但最大的缺点,就是编译出软件后,体积巨大,基本就是开发者开发的代码+140M左右的框架体积。
对标 Electron,基于Rust语言。
优点是体积小、提供页面可用的系统api、打包后体积小,基本就是开发者开发的代码+3M左右的框架体积。
缺点是页面兼容性问题、深度开发系统小工具需要学习Rust语言、暂不支持交叉编译(只能打包当前系统使用的软件包)。
上面说 react 直接使用很难用,需要安装配套的其他工具和对应的编译工具,这个就是官方提供的 react 脚手架。
安装指令:
回车后会要求再一步步选择使用的具体配套工具。
npx create-react-app my-app
和 create-react-app 类似,vue cli 是 vue 提供的官方脚手架。
安装指令:
这只是再全局安装这个脚手架生成工具,下一步会需要使用这个工具创建项目。
npm install -g @vue/cli
运行以下命令来创建一个新项目(会创建vue@3版本的项目):
vue create hello-world
创建 veu@2 版本的项目,需要使用旧版本的 vue init 功能,你可以全局安装一个桥接工具:
npm install -g @vue/cli-init
# 生成版本2的项目
vue init webpack my-project
这里也有它,因为它支持的比较多,使用指令和安装指令是一个:
输入指令回车后,可按照提示进一步选择要使用的框架、初始工具等。
npm create vite@latest
官网\文档:https://ant.design/index-cn
专门为 React 开发的UI框架,也有vue版本的。
安装指令:
@ant-design/icons 是 antd 配套的图标库,如果开发着想主动使用 antd 的图标,就需要安装这个库。
其实只安装 antd 时,这个库也会被安装,因为 antd 自己也需要使用,所以 @ant-design/icons 也会被安装到 node_modules 中,只是没有被显式的写在 package.json 中。
因为 @ant-design/icons 存在于 node_modules 中,所以项目中其实也可以使用,但最好,但是显式的手动安装一下,表明项目中的开发人员手动的使用了这些图标。
npm i -S antd @ant-design/icons
官网\文档:https://element.eleme.io/#/zh-CN
专门为 Vue@1 和 Vue@2 开发的UI框架。
安装指令:
npm i -s element-ui
官网\文档:https://element-plus.org/zh-CN/#/zh-CN
专门为 Vue@3 的组合式API开发的UI框架。
安装指令:
npm install element-plus --save
官网\文档:https://tailwindcss.com/
一个类名就是一个style属性,再也不用为起类名而烦恼了,而且,element-plus 官网文档中的代码demo中,也是使用了 tailwindcss。
这个不用说了,安装 node 自带的包管理工具。
和npm的主要区别,是使用 install 指令下载依赖时,npm 默认使用的是国外源,而 cnpm 使用的是国内淘宝源。
安装指令:
# 可以直接安装
npm install cnpm -g
# 但 npm 默认使用的是国外源,可能会下载慢,嫌弃下载慢也是要使用 cnpm 的原因
# 可以在安装时指定本次 install 时使用的源地址,这里指定为淘宝源
npm install cnpm -g --registry=https://registry.npmmirror.com
npm 的替代品,对 node_modules 中的依赖包的管理方式和 npm 有一些区别。
安装指令:
npm install -g yarn
npm 的替代品,这个工具对 node_modules 的改造比较大。
npm、cnpm、yarn之类的,在某个项目安装依赖时,都是把下载的依赖放在本项目的 node_modules 下。
但 pnpm 改造比较大,不管哪个项目,在安装依赖时,都会把依赖放在系统中的某个文件夹中。
如果存在相同依赖只是版本不同,则 pnpm 会额外存储此依赖的不同版本中的不同文件。
最后,在要使用这个依赖的项目的 node_modules 文件夹中,创建这个依赖的硬链接文件,这样就能保证即使是使用 pnpm 安装的依赖,但使用 npm、cnpm、yarn 等都可以启动项目,不受影响。
主要的好处就是,不同项目中的相同依赖,不需要在重复下载,节省掉下载的时间。
安装指令:
npm install -g pnpm
用来管理 npm 使用的下载源的工具。
安装指令:
npm install -g nrm
主要用户 node 开发时,不用每改动一次文件就需要重新启动项目的痛点。
node 的进程管理工具,主要 node 项目的生产环境,因为正常启动 node 项目是终端用 node 执行入口文件。
执行后,终端不能关,否则 node 服务也会停止。
pm2 就能解决这个问题,使用 pm2 启动 node 服务后,node 服务相当于托管给了 pm2,不需要依赖终端。
npm install -g pm2
百度的图表库
国外流行的一个图表库
展示股票、经济的价格走势无法绕开的强大图表工具。
node 版本的管理工具,当本地的不同项目需要使用不同版本的 node 时,可以使用这个工具方便的切换。
需要先卸载全局的 node,安装这个工具后,使用这个工具来 install 不同版本的 node,并方便的切换。
react 的轻量级全局存储库,比 redux 更轻量,大部分中小型项目使用这个就足够了。
react 的轻量级全局存储库,比 redux 更轻量,比react-hooks-global-state更流行,大部分中小型项目使用这个就足够了。
使用 create-react-app 创建的 react 项目,无法进行编译配置,比如创建别名 @ 等等。
此时安装这个依赖,创建一个 config-overrides.js 文件,再把 package.json 文件中的项目启动指令改为使用 react-app-rewired 启动。
那么项目启动时,就会读取 config-overrides.js 文件中的配置,就可以进行编译配置了。
前端最常用的接口工具。
前端工程化时代之前,最常用的前端开发工具。
异步辅助库,可以取代烦人的 try-catch 的写法,下面附上它得源码,不想引入库的也可以直接复制源码使用,基本用法见下:
import to from 'await-to-js'
// 定义一个异步方法,这个异步方法可能会抛出错误
async function loadSome(): Promise<any> {}
async function asyncFunctionWithThrow() {
const promise = awaitLoadSome()
// 一个异步 Promise,使用 to 包装
const [err, data] = await to(promise)
if (err) {
// 如果err不为null,说明上面的promise抛出异常走了 catch,这个err就是抛出的错误对象
console.log(err.message)
} else {
// err 为null正常拿到了返回值
console.log('加载成功:', data)
}
}
下面这是它的源码:
/**
* @param { Promise } promise
* @param { Object= } errorExt - Additional Information you can pass to the err object
* @return { Promise }
*/
function to(promise, errorExt) {
return promise
.then(function (data) { return [null, data]; })
.catch(function (err) {
if (errorExt) {
Object.assign(err, errorExt);
}
return [err, undefined];
});
}
export { to };
export default to;
两个工具都是剪贴板工具,推荐第一个,更轻量。
但 clipboard-polyfill 的 npm页面 有说明:
从2020年起,您可以在 所有主要浏览器的稳定版本 中使用 navigator.clipboard.writeText(...) 来复制文本到见剪切板。
加密标准的JavaScript库,提供各类加密解密工具。
提供各种实用工具 js,非常强大和常用。
github 仓库地址:https://github.com/ProjectOpenSea/opensea-js。
文档地址:https://docs.opensea.io/reference/api-overview。
这是面向 OpenSea (最大的nft市场)的 JavaScript SDK。
这个仓库挺有坑的,安装这个工具时,这个工具会依赖其他工具库,而其他一些工具库的下载地址是 github 地址,经常会下载失败。。。虽然本地访问 github 网站、克隆 github 项目都没有问题,但下载依赖时就是会下载失败,很头大,需要让终端给代理,需要特殊的软件。
文本转二维码图片的工具。
让页面支持多语言、国际化的常用工具,其实还是需要自己定义各个语言的页面内容json文件(语言包),切换语言时,这个工具能方便的使用不同的语言包。
前端使用 WebSocket 的工具。
import SockJS from 'sockjs-client'
import Stomp from 'stompjs'
let socket = new SockJS(CONFIG.SOCKET_URL)
const client = Stomp.over(socket)
socket 工具。
页面 dom 转 canvas 图片的工具,方便为页面部分区域提供 导出为图片 的功能。
把视频作为页面某区域背景的工具。
读取、转译 url 的 search 部分的参数功能。
七牛云的 SDK。
大名鼎鼎的 three.js,前端页面的3D功能库,可以方便的制作 3D 功能,也可以展示 3D 模型等。
dat.gui 是 three 配套的一个模型参数控制工具。
前端使用的图片压缩工具,但这个工具已经不再维护了。
可以仍然使用这个,也可以搜索使用其他的前端图片压缩工具。
前端网格布局系统,生成多个盒子,每个盒子中内容完全自定义。
用户可以对任意一个盒子进行拖拽位置、修改尺寸等等。
进行操作时,其他盒子也会自动响应式的调整自身位置,很好用。
官网:https://www.swiper.com.cn/。
一个前端滚动滑动、轮播图工具,轮播功能非常强大,当遇到复杂的轮播功能需求时可以使用。
用于开发阶段,使用后页面会有一个悬浮按钮,点击后打开一个此插件生成的控制台。
多用于移动端页面开发,因为pc端开发可以方便的打开控制台,查看元素、网络请求等,而开发移动端页面时不行。
当遇到某个问题只移动端才出现时,就需要使用这个工具查看控制台了。
npm:https://www.npmjs.com/package/sortablejs
demo:http://sortablejs.github.io/Sortable/。
用于可重新排序拖放列表的JavaScript库。
主要就是拖拽功能。
用于数学计算的插件,因为 js 进行小数计算时,经常会失去精度,所以引入第三方数学计算插件,开发时会很方便。
decimal.js的npm:https://www.npmjs.com/package/decimal.js。
mathjs的npm:https://www.npmjs.com/package/mathjs。
前端方便的控制 cookie 的工具。
react-hook 可以更方便的使用的cookie管理工具。
阿里云 OSS 对象存储的 SDK。
生成、计算 md5 的工具
一个小巧、安全、URL友好、唯一的 JavaScript 字符串ID生成器,类似uuid,但更小巧。
自说明:https://github.com/ai/nanoid/blob/HEAD/README.zh-CN.md
用于创建随机的通用唯一标识符(UUID)。
在package.json中,可以进行跨平台的环境变量的配置。
在使用构建指令时比如 build 时,需要配置 NODE_ENV=production,但如果直接写在 package.json 的 scripts 脚本中,在不同平台执行脚本时可能会因为不支持而报错。
cross-env 就可以解决这个问题。
进行开发时,一些编译器会支持开发者在项目根目录创建 .env、.env.pro、.env.dev 文件,然后执行指令时指定环境变量,编译时就会使用对应的 env 文件。
但部分编译器并不支持,我们可以使用这个工具来自行支持。
用于 React 开发时,指定 dom 的 className 时,方便的设定多个类名,设定的同时可进行各种判断。
web3 时代的方便的工具库,可以理解为 web2 时代的jquery。
web3文档:https://web3js.readthedocs.io/。
ethers文档:https://docs.ethers.org/v5/。
ethers文档(中文):https://learnblockchain.cn/ethers_v5/。
使用web3技术的页面连接各种钱包的库,基于react。
官方文档:https://trufflesuite.com/docs/truffle/how-to/install/。
web3时代的区块链,这个工具是用来部署智能合约到区块链上面的。
浏览器中把二进制保存成文件给用户下载,支持多种文件格式,图片、文本、excel等等。
如果导出 excel,可能还配合 xlsx-style、xlsx 等插件使用。
官网:https://github.com/fb55/htmlparser2
node解析html,使用字符串状态机解析 html 的文本,并且保留出方法,能参与到解析的过程中。
官网:https://github.com/cheeriojs/cheerio
node解析html,按照 jquery 的 API 设计的功能。
官网:https://github.com/taoqf/node-html-parser
node解析html,后起之秀吧,github 中的 api 简单方便看。
Nzh 适用于需要转换阿拉伯数字与中文数字的场景,比如 101、一百零一、壹佰零壹 三者的互转。
强大的js动画库,兼容canvas、svg、three.js、WebGl等。
支持前端和node的base64编码解码转码处理。
经常有业务需要点击后滚动页面到某个模块,但好用的 Element.scrollIntoView()
方法,safari 却不支持。
所以找到了 smoothscroll 这个库,很好用。
npm:https://www.npmjs.com/package/fullcalendar
官方demo:https://fullcalendar.io/demos
据说是最强的前端日历组件。
纯粹的基于react的弹框插件,支持方便的二次封装。
@types/react-modal
。基于react的toast消息提示库。
另一个基于react的toast消息提示库。
无头的富文本编辑器,也就是只提供api但不提供样式,实际很好用,虽然所有样式需要自己写。
前端输入验证码时,一个框一个字符的组件。
一个事件管理库,进行全局事件监听、事件出发的总线工具。
Mitt是为浏览器设计的,但可以在任何JavaScript运行时中工作。它没有依赖项,支持IE9+。