Vue源码之目录结构的简单分析


本文摘自PHP中文网,作者不言,侵删。

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

Vue版本:2.6.9

源码结构图

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

├─ .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视频教程栏目!

以上就是Vue源码之目录结构的简单分析的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

详解HTML5的video标签测试应用

通过14张有趣生动的图片来了解 flexbox 的用法(值得收藏)

css伪类是什么

关于css中display:flex与inline-flex属性的详细介绍

html br标签是什么意思?还有html<br/>和</br>的区别是什么?

HTML5中dialog元素的详细讲解(代码示例)

javascript编写工具可以是什么

javascript怎么查询数组长度

一起看看 鸿蒙 javascript gui 技术栈

HTML5和css3制作一个模态框实例

更多相关阅读请进入《HTML5》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...