说直白一点就是通过 ws,咱们可以实现服务端和客户端的长连接,且通过 ws 对象,就可以获取到客户端发送过来的信息和主动推送信息给客户端 。
使用:
- server.js
const WebSocket = require('ws')const WebSocketServer = WebSocket.Server;// 创建 websocket 服务器 监听在 3000 端口const wss = new WebSocketServer({port: 3000})// 服务器被客户端连接wss.on('connection', (ws) => {// 通过 ws 对象,就可以获取到客户端发送过来的信息和主动推送信息给客户端var i=0var int = setInterval(function f() {ws.send(i++) // 每隔 1 秒给连接方报一次数}, 1000)})
- client.js
const WebSocket = require('ws')const ws = new WebSocket('ws://localhost:3000')// 接受ws.on('message', (message) => {console.log(message)// 当数字达到 10 时,断开连接if (message == 10) {ws.send('close');ws.close()}})
16. connectconnect 是一个最早期的 HTTP 服务器框架,亦可称为中间件插件;express 就是基于此框架做的扩展;注意:从 vite2 开始官方已从依赖 koa 转成 connect 了;
至于为什么使用 connect 而不是 koa,咱们看官方的回答:
文章插图
大概意思就是:由于大部分逻辑应该通过插件钩子而不是中间件来完成,因此对中间件的需求大大减少;所以使用 connect优先级会高于 Koa 。
17. esnoesno 是一个基于 esbuild 的 TS/ESNext 的 Node.js 运行时;
说直白点就是可以类似 ts-node 一样直接运行 TS 文件,那为甚么还用 esno 呢?
因为 esno 是基于 esbuild 运行的,esbuild 有多快,上面我们有讲到了吧,这里就不复述了 。
使用:
{"scripts": {"start": "esno index.ts"},"dependencies": {"esno": "*"}}复制代码
npm run start复制代码
18. tsuptsup 是一个轻小且无需配置的,由 esbuild 支持的打包工具;它可以直接把 .ts.tsx 转成不同格式 esm、cjs、iife 的文件,快速打包你的工具库;
使用:
- 安装 tsup
pnpm i tsup -D
- 在根目录下的 package.json 中配置
{"scripts": {"dev": "pnpm run build -- --watch --ignore-watch examples","build": "tsup src/index.ts --dts --format cjs,esm"},}
19. vitepressvitepress 是在 vuepress 的基础上实现的静态网站生成器,区别在于 vitepress 是建立在 vite 之上做的开发;优势:
- 基于 vite 而不是 webpack,所有更快的启动时间,热重载等;
- 使用 vue3 来减少 js 的有效负载;
所以如果你想写一个在线文档仓库,那么 vitepress 就是一个很好的选择 。20. vitestvitest 是一个由 vite 提供支持的快速单元测试框架 。
优势:
- 由 Vite ??提供支持的极速单元测试框架 。
- 与 Vite 的配置通用,watch 模式下极快的反应(相当于测试中 HMR) 。
- 可以对 Vue/React 组件进行测试 。
- 开箱即用 Typescript/JSX/ESM(这一点我想配过 jest 的人应该懂是什么意思)
- 与 Jest 几乎相同的 API,同时也有 Jest 的快照功能(这个非常好用!)
- 模拟 DOM
- 生成测试覆盖率
- ESM优先,顶级等待
- 开箱即用的 TypeScript / JSX 支持
- 套件和测试的过滤、超时、并发
- 等等
所以你还有什么理由不使用 vitest 呢?其它【学会这20个库,让你快速看懂 vue3 和 vite3 源码】其实细心的同学可能会发现,目前 vue3 和 vite3 都是一个 monorepo 仓库,且都是使用 pnpm workspace 来进行仓库管理的;
所以了解 monorepo 和 pnpm workspace 对源码的阅读也是有很大的帮助的;
关于这块更多详细可以查看《如何入门 vite 源码》进行了解 。
当然,上面的分享的工具库只是在源码中使用场景较多的库,还有一些库由于场景较少 所以这里没有做详细的解释说明,如果您想了解源码中的哪个工具库,欢迎补充,取舍后我会做及时的更新;
推荐阅读
- 平板买什么好(500元内的最好平板)
- 天润酸奶为什么这么火(喝酸奶泻火吗)
- 鲱鱼罐头为什么这么臭(鲱鱼罐头好吃吗)
- 股票市盈率是什么意思(股票发行市盈率是什么意思)
- 琦玉老师为什么这么强(琦玉老师的最强形态是什么形态)
- 为什么选择这份工作(去单位面试自我介绍怎么说)
- 喝茶用什么杯子好(泡茶用什么材质的杯子好)
- 如何快速学会电脑盲打 如何练习盲打
- 2023 年 Web 框架性能报告
- 你好李焕英为什么删减(李焕英简介)