当前位置: 首页 > news >正文

官方网站下载派的app知道ip怎么查域名

官方网站下载派的app,知道ip怎么查域名,揭阳市建设发展总公司网站,免费推广软件工具vite分享ppt#xff0c;感兴趣的可以下载#xff1a; ​​​​​​​Vite分享、原理介绍ppt 什么是vite系列目录#xff1a; #xff08;一#xff09;什么是Vite——vite介绍与使用-CSDN博客 #xff08;二#xff09;什么是Vite——Vite 和 Webpack 区别#xff0… vite分享ppt感兴趣的可以下载 ​​​​​​​Vite分享、原理介绍ppt 什么是vite系列目录 一什么是Vite——vite介绍与使用-CSDN博客 二什么是Vite——Vite 和 Webpack 区别冷启动-CSDN博客 三什么是Vite——Vite 主体流程(运行npm run dev后发生了什么)-CSDN博客 四什么是Vite——冷启动时vite做了什么源码、middlewares-CSDN博客 五什么是Vite——冷启动时vite做了什么依赖、预构建-CSDN博客 六什么是Vite——热更新时vite、webpack做了什么-CSDN博客 七什么是Vite——vite优劣势、命令-CSDN博客 vite 源码总体目录结构 | -CHANGELOG.md |-LICENSE.md |-README.md |-bin | |-openChrome.applescript | |-vite.js |-client.d.ts |-package.json |-rollup.config.js #打包配置文件 |-scripts | |-patchTypes.js |-src | |-client #客户端 | | |-client.ts | | |-env.ts | | |-overlay.ts | | |-tsconfig.json | |-node #服务端 | | |-build.ts | | |-cli.ts #命令入口文件 | | |-config.ts | | |-constants.ts #常量 | | |-importGlob.ts | | |-index.ts | | |-logger.ts | | |-optimizer | | | |-esbuildDepPlugin.ts | | | |-index.ts | | | |-registerMissing.ts | | | |-scan.ts | | |-plugin.ts #rollup 插件 | | |-plugins #插件相关文件 | | | |-asset.ts | | | |-clientInjections.ts | | | |-css.ts | | | |-esbuild.ts | | | |-html.ts | | | |-index.ts | | | |-... | | |-preview.ts | | |-server | | | |-hmr.ts #热更新 | | | |-http.ts | | | |-index.ts | | | |-middlewares #中间件 | | | | |-... | | | |-moduleGraph.ts #模块间关系组装(树形) | | | |-openBrowser.ts #打开浏览器 | | | |-pluginContainer.ts | | | |-send.ts | | | |-sourcemap.ts | | | |-transformRequest.ts | | | |-ws.ts | | |-ssr | | | |-__tests__ | | | | |-ssrTransform.spec.ts | | | |-ssrExternal.ts | | | |-ssrManifestPlugin.ts | | | |-ssrModuleLoader.ts | | | |-ssrStacktrace.ts | | | |-ssrTransform.ts | | |-tsconfig.json | | |-utils.ts |-tsconfig.base.json |-types | |-... 运行npm run dev后发生了什么 初识 vite 原理vite 是如何启动项目的源码调试下一代前端构建工具 - Vite 2.x 源码级分析 vite命令是在哪里注册的呢在 node_modules/vite/package.json 中查看bin字段。bin 字段的作用是能让我们在命令窗口全局输入命令执行。vite启动的时候会执行 bin 目录下的 vite.js 文件在这个文件里面我们会看到获取了当前的电脑的 绝对路径 如果不包含 node_module 路径就需要引入 source-map-support 这个包来处理如果是相对路径则会进行路径补全当然在 dev 环境下都会有 node_module 路径在 prod 环境下 vite 会使用 rollup 来进行打包。 示例项目下package-lock.json 再示例项目下bin文件下看到三个vite文件分别是针对unitywindows跨平台三个方向链接对应的环境变量 server 核心方法执行命令行脚本 打开项目中的vite.js看到其中主要运行的是从入口文件 cli.js。 vite.js 中的核心内容就是执行了 start 方法动态引入了 ../dist/node/cli.js 这个地址是打包后的地址在 vite 源码中脚本地址在 packages/vite/src/node/cli.ts 。 这里的/dist/node/cli.js是打包后的文件可能有点长可以配合vite打包前的源码一起阅读 在 /dist/node/cli.js 中首先使用 cac 命令工具处理用户的输入。 然后命令执行的是 createServer这个 createServer 从 ./chunks/dep-df561101.js 引入这里也是打包后的代码比较长。 cli.ts 的核心功能是解析命令行参数并启动本地项目解析命令行参数通过 cac 库这里我们主要看启动本地项目的命令。在 cac 库中通过 command 定义基础命令通过 alias 方法定于命令别名通过 option 方法定义命令行参数最后通过 action 方法执行具体的操作。在 action 方法中最核心的部分就是引入了 createServer 方法通过 listen 启动本地 server。 同时在 cli.js 文件中可以看到四个命令对应了 4 个核心的文件方法 1. dev 命令 文件路径./server/index.ts 主要方法createServer 主要功能项目的本地开发命令基于 httpServer 启动服务Vite 通过对请求路径的劫持获取资源的内容返回给浏览器服务端将文件路径进行了重写。例如 项目源码如下 import { createApp } from vue; import App from ./index.vue; 经服务端重写后node_modules 文件夹下的三方包代码路径也会被拼接完整。 import __vite__cjsImport0_vue from /node_modules/.vite/vue.js?ved69bae0; const createApp __vite__cjsImport0_vue[createApp]; import App from /src/pages/back-sky/index.vue;2. build 命令文件路径./build.ts 主要方法build 主要功能使用 rollup 打包编译 3.optimize 命令 文件路径./optimizer/index.ts 主要方法optimizeDeps 主要功能主要针对第三方包Vite 在执行 runOptimize 的时候中会使用 rollup 对三方包重新编译将编译成符合 esm 模块规范的新的包放入 node_modules 下的 .vite 中然后配合 resolver 对三方包的导入进行处理使用编译后的包内容代替原来包的内容这样就解决了 Vite 中不能使用 cjs 包的问题。 下面是 .vite 文件夹中的 _metadata.json 文件它在预编译的过程中生成罗列了所有被预编译完成的文件及其路径。例如 {hash: 1848098d,browserHash: f4266ce6,optimized: {./src/lib/index.js: {src: ../../../src/lib/index.js,file: ___src_lib_index__js.js,fileHash: 58a83bbc,needsInterop: false},lodash-es: {src: ../../lodash-es/lodash.js,file: lodash-es.js,fileHash: 915b5f31,needsInterop: false},vue: {src: ../../vue/dist/vue.runtime.esm-bundler.js,file: vue.js,fileHash: c91074d2,needsInterop: false}},chunks: {} } 4. preview 命令 文件路径./preview/index.ts 主要方法preview 主要功能本地预览构建产物。不要将其用作生产服务器因为它不是为此而设计的。 createServer # 我们找到了前面大概执行的顺序后这里回到源码在 packages/vite/src/node/server/index.ts 里面找到 createServer export async function createServer(inlineConfig: InlineConfig {} ): PromiseViteDevServer {// Vite 配置整合// resolveConfig 方法解析 vite 核心配置包括来自命令行、vite.config 文件的配置参数const config await resolveConfig(inlineConfig, serve, development)const root config.rootconst serverConfig config.server// 创建http服务,根目录的 index.html 就是服务器的入口const httpServer await resolveHttpServer(serverConfig, middlewares, httpsOptions)// 创建ws服务,主要是用于实现热更新HMR当代码发生变化时服务器通过 WebSocket 向客户端发送更新通知const ws createWebSocketServer(httpServer, config, httpsOptions)// 创建watcher设置代码文件监听,实时地响应文件的增删改操作也是用于实现热更新功能const watcher chokidar.watch(path.resolve(root), {ignored: [**/node_modules/**,**/.git/**,...(Array.isArray(ignored) ? ignored : [ignored])],...watchOptions}) as FSWatcher// 创建server对象const server: ViteDevServer {config, // 配置属性middlewares, // 中间件httpServer, // HTTP server 实例watcher, // chokidar 文件监听实例pluginContainer: container, // 插件容器ws, // WebSocket 实例moduleGraph, // 模块依赖图listen,...}// 文件监听变动websocket向前端通信watcher.on(change, async (file) {...handleHMRUpdate()})// 服务 middleware,通过 use 方法添加启动项目阶段需要的中间件middlewares.use(...)// optimize: 预构建await initDepsOptimizer(config, server)// 监听端口启动服务httpServer.listen (async (port, ...args) { ... })return server }可以看到 createServer 做了很多事情 配置参数解析包括 vite 核心配置、https 配置、chokidar 配置 创建 HTTP 和 WebSocket server用于启动开发 server 和热更新通信 通过 createHttpServer 创建一个 HTTP 服务器实例根目录的 index.html 就是服务器的入口。通过 createWebSocketServer 创建 WebSocket 服务器主要是用于实现热更新HMR当代码发生变化时服务器通过 WebSocket 向客户端发送更新通知 启动 chokidar 文件监听器监听文件变化实现热更新 HMR chokidar 能够创建一个文件监听器监听文件和目录的变化实时地响应文件的增删改操作也是用于实现热更新功能。 创建 ModuleGraph 实例记录模块依赖关系 通过 ModuleGraph class 创建一个模块依赖图实例模块依赖图主要用于维护各个模块之间的依赖关系主要有两个用处 热更新过程中通过模块依赖图获取所有相关依赖保证正确完整的实现热更新。打包过程中根据模块之间的依赖关系进行优化比如将多个模块合并为一个请求、按需加载模块等提高打包速度和加载性能。 创建插件容器管理插件生命周期、执行过程、插件之间传递上下文 通过 createPluginContainer 方法创建插件容器插件容器主要有三个功能 管理的插件的生命周期根据插件的钩子函数在特定的时机执行插件在插件之间传递上下文对象上下文对象包含 vite 的内部状态和配置信息这样插件通过上下文对象就能访问和修改 vite 内部状态。 定义 ViteDevServer 对象包含核心配置和启动开发 server 核心方法 ViteDevServer 对象就是 createServer 方法最终返回的对象主要包含前几步创建的对象实例和启动 server 相关的核心方法。其中比较特殊的是 createDevHtmlTransformFn 方法这个方法用于在开发环境下转换 index.html 文件默认注入一段客户端代码 /vite/client 用于在客户端创建 WebSocket接收服务端热更新传递的消息。 执行 configureServer 定义函数创建自定义中间件 configureServer 主要用于配置开发服务器比如在内部 connect 中添加自定义中间件。在这一步从配置中获取所有 configureServer 钩子并放入 postHooks 钩子中在内部中间中间件定义好之后执行 postHooks 钩子。注意到 postHooks 是在处理 index.html 中间件之前执行目的是为了自定义的中间件能够在返回 index.html 之前处理请求。 定义内部中间件 通过 connect 包创建 middlewares 中间件。中间件主要是用来处理 HTTP 请求和响应通过定义一系列的中间件并且按照一定的顺序执行每个中间件函数对请求和响应进行处理然后将处理后的请求和响应传递给下一个中间件函数直到最后一个中间件函数处理完毕并发送响应。定义好 middlewares 之后通过 use 方法添加启动项目阶段需要的中间件。 最后总结一下在开发过程中vite 启动命令 npm run dev 执行后实际执行的是 node_module/.bin 目录下的 vite 脚本在解析命令行参数之后通过执行 createServer.listen 方法启动 vite 。 Vite开发环境主体流程 下图是 Vite 在开发环境运行时加载文件的主体流程。 具体如下 在项目根目录下有一个index.html文件在其script标签设置typemodule 当声明一个 script 标签类型为 module 时 script typemodule src/src/main.js/script 启动项目vite会启动一个 dev server然后加载各种中间件进而监听对应的前端访问请求。github.com/vitejs/vite...同时会在开发环境中注入 Vite 自身的 client 客户端代码用于监听HMR等处理。github.com/vitejs/vite... 浏览器会向服务器发起一个GET请求拿到main.js文件 http://localhost:3000/src/main.js请求main.js文件// /src/main.js: import { createApp } from vue import App from ./App.vue createApp(App).mount(#app) 浏览器请求到了main.js文件检测到内部含有import引入的包又会对其内部的 import 引用发起 HTTP 请求获取模块的内容文件。如GET http://localhost:3000/modules/vue.js 如GET http://localhost:3000/src/App.vue Vite 的主要功能就是通过劫持浏览器的这些请求并在后端进行相应的处理将项目中使用的文件通过简单的分解与整合然后再返回给浏览器vite整个过程中没有对文件进行打包编译所以其运行速度比原始的 webpack 开发编译速度快出许多
http://www.huolong8.cn/news/104452/

相关文章:

  • 建设工程个人信息采集哪个网站静态网站策划书
  • 单页网站模板修改吗直播系统
  • 网站设计排行榜前十程序员用什么软件
  • php网站开发实训指导书深圳网站开发建设培训
  • 通过wordpress建站宝塔wordpress ssl证书
  • wordpress 外贸企业模板下载天津seo招聘
  • 网站信息内容建设自查4399观看视频免费哔哩哔哩
  • 网站比较分析房地产网站建设策划方案
  • 西地那非片吃了能延时多久做网站优化常用工具
  • 长春模板建站公司网上店铺怎么运营
  • 湖南益阳网站建设响应式网页设计技巧
  • 西安 h5网站建设wordpress+缩略图+api
  • 网站后台怎么上传文章罗湖区seo排名
  • 网站备案最快几天门窗网站免费模板
  • 龙胜网站建设公司医疗网站如何做优化
  • 广州做外贸网站的公司163邮箱新用户注册
  • .net做网站安全吗凡科做的网站百度能收录吗
  • wordpress网站百度数据wordpress分享服务器目录
  • 国外常用的seo站长工具龙岩房产网
  • 昆明网站建设注意事项域名回收网站
  • 网站优化人员上传电影网站源码
  • 什么公司做的网站好中国制造网介绍
  • 东营网站建设哪家好阿迪达斯网站建设的总体目标
  • 邢台专业网站建设推荐wordpress 限时 插件
  • 三元桥做网站的公司网站设置方案
  • 视频网站自己做服务器无锡网站制作哪家有名
  • 网站建设技能描述浙江华企做网站
  • 西部数码网站管理控制面板wordpress媒体库里文件
  • 做装修效果图的网站有哪些软件四川建筑职业学校官网教务网
  • 泰安网站建设制作服务北京市网站建设