视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Vue源码之目录结构的简单分析
2020-11-27 19:26:56 责编:小采
文档


本篇文章给大家带来的内容是关于Vue源码之目录结构的简单分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

Vue版本:2.6.9

源码结构图

├─ .circleci // 包含CircleCI持续集成/持续部署工具的配置文件
├─ .github // 项目相关的说明文档,上面的说明文档就在此文件夹
├─ benchmarks // 基准,性能测试文件,Vue的跑分demo,比如大数据量的table或者渲染大量SVG
├─ dist // 构建后
输出的不同版本Vue文件(UMD、CommonJS、ES 生产和开发包) ├─ examples // 部分示例,用Vue写的一些小demo ├─ flow // flow 因为Vue使用了 [Flow](https://flow.org/) 来进行静态类型检查,静态类型检查类型声明文件 ├─ packages // 包含服务端渲染和模板编译器两种不同的NPM包,是提供给不同使用场景使用的 ├─ scripts // 存放npm脚本配置文件,结合webpack、rollup进行编译、测试、构建等操作(使用者不需要关心) │ ├─ alias.js // 模块导入所有源代码和测试中使用的别名 │ ├─ config.js // 包含在'dist/`中找到的所有文件的生成配置 │ ├─ build.js // 对 config.js 中所有的rollup配置进行构建 ├─ src // 主要源码所在位置,核心内容 │ ├─ compiler // 解析模版相关 │ ├─ codegen // 把AST转换为Render函数 │ ├─ directives // 通用生成Render函数之前需要处理的指令 │ ├─ parser // 解析模版成AST │ ├─ core // Vue核心代码,包括内置组件,全局API封装,Vue 实例化,观察者,虚拟DOM, 工具函数等等。 │ ├─ components // 组件相关属性,主要是Keep-Alive │ ├─ global-api // Vue全局API,如Vue.use,Vue.extend,Vue.mixin等 │ ├─ instance // 实例化相关内容,生命周期、事件等 │ ├─ observer // 响应式核心目录,双向数据绑定相关文件 │ ├─ util // 工具方法 │ └─ vdom // 包含虚拟DOM 创建(creation)和打补丁(patching) 的代码 │ ├─ platforms // 和平台相关的内容,Vue.js 是一个跨平台的MVVM 框架(web、native、weex) │ ├─ web // web端 │ ├─ compiler // web端编译相关代码,用来编译模版成render函数basic.js │ ├─ runtime // web端运行时相关代码,用于创建Vue实例等 │ ├─ server // 服务端渲染 │ └─ util // 相关工具类 │ └─ weex // 基于通用跨平台的 Web 开发语言和开发经验,来构建 Android、iOS 和 Web 应用 │ ├─ server // 服务端渲染(ssr) │ ├─ sfc // 转换单文件组件(*.vue) │ └─ shared // 全局共享的方法和常量 ├─ test // test 测试用例 ├─ types // Vue新版本支持TypeScript,主要是TypeScript类型声明文件 ├─ node_modules // npm包存放目录 |-- .babelrc.js // babel配置 |-- .editorconfig // 文本编码样式配置文件 |-- .eslintignore // eslint校验忽略文件 |-- .eslintrc.js // eslint配置文件 |-- .flowconfig // flow配置文件 |-- .gitignore // Git提交忽略文件配置 |-- BACKERS.md // 赞助者信息文件 |-- LICENSE // 项目开源协议 |-- package.json // 依赖 |-- README.md // 说明文件 |-- yarn.lock // yarn版本锁定文件

Vue 不同的构建版本对比


UMDCommonJSES Module (基于构建工具使用)ES Module (直接用于浏览器)
完整版vue.jsvue.common.jsvue.esm.jsvue.esm.browser.js
只包含运行时版vue.runtime.jsvue.runtime.common.jsvue.runtime.esm.js-
完整版 (生产环境)vue.min.js--vue.esm.browser.min.js
只包含运行时版 (生产环境)vue.runtime.min.js---

术语解释

完整版:同时包含编译器和运行时的版本。

编译器:用来将模板字符串编译成为 JavaScript 渲染函数的代码。

运行时: 用来创建 Vue 实例、渲染并处理虚拟 DOM 等的代码。基本上就是除去编译器的其它一切。

UMD:UMD 版本可以通过 <script> 标签直接用在浏览器中。jsDelivr CDN 的 https://cdn.jsdelivr.net/npm/vue 默认文件就是运行时 + 编译器的 UMD 版本 (vue.js)。

CommonJS:CommonJS 版本用来配合老的打包工具比如 Browserify 或 webpack 1。这些打包工具的默认文件 (pkg.main) 是只包含运行时的 CommonJS 版本 (vue.runtime.common.js) 。

ES Module: 从 2.6 开始 Vue 会提供两个 ES Modules (ESM) 构建文件:

为打包工具提供的 ESM:为诸如 webpack 2 或 Rollup 提供的现代打包工具。ESM 格式被设计为可以被静态分析,所以打包工具可以利用这一点来进行“tree-shaking”并将用不到的代码排除出最终的包。为这些打包工具提供的默认文件 (pkg.module) 是只有运行时的 ES Module 构建 (vue.runtime.esm.js)。

为浏览器提供的 ESM (2.6+):用于在现代浏览器中通过 <script type="module"> 直接导入。注意:如果你需要在客户端编译模板 (比如传入一个字符串给 template 选项,或挂载到一个元素上并以其 DOM 内部的 HTML 作为模板),就将需要加上编译器

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的JavaScript视频教程栏目!

下载本文
显示全文
专题