最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Vue源码的目录都包含哪些内容?

    正文概述 掘金(一尾流莺)   2021-07-12   512

    「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!」

    声明

    本文是开始学习 Vue 源码的第一篇笔记,当前的版本是 2.6.14 。如果对你有一点点帮助,请点赞鼓励一下,如果有错误或者遗漏,请在评论区指出,非常感谢各位大佬。

    源码结构

    目录结构

    github 上下载了源码,是一个叫 vue-dev 的文件夹,展开以后 一级目录结构 是这样的。

    Vue源码的目录都包含哪些内容?

    Vue 源码各个目录的详细介绍,导图来源于

    ?人人都能懂的Vue源码系列(一)—Vue源码目录结构

    Vue源码的目录都包含哪些内容?

    .circleci

    CircleCI 是一个持续集成/持续部署的服务。 ?官网

    持续集成 指的是,当代码有变更时,立即进行构建和测试,反馈运行结果,我们可以根据测试结果,确定新代码是否可以和原有代码正确的集成在一起。

    持续部署 指的是,当代码有变更时,自动进行测试和构建,如果一切顺利则自动部署到服务器上。

    要使用 CircleCI,首先在项目 circleciTest 目录下创建一个名为 .circleci 的文件夹,并新建 config.yml 文件。

    .github

    项目相关的说明文档,也就是说你如果想开发这个项目,那么请务必看完这些开发文档,按照开发文档来开发。 这个对于我来说是完全用不到的。

    .benchmarks

    ├── big-table
    ├── dbmon
    ├── reorder-list
    ├── ssr
    ├── svg
    └── uptime
    

    Vue 的一些跑分 demo ,如大数据量的 table 或者渲染大量 SVG

    如该目录下的 big-table 目录,就是用于测试大量的 table 渲染的。

    Vue源码的目录都包含哪些内容?

    svg 目录就是用来测试 SVG 的。

    Vue源码的目录都包含哪些内容?

    .dist

    ├── README.md
    ├── vue.common.dev.js
    ├── vue.common.js
    ├── vue.common.prod.js
    ├── vue.esm.browser.js
    ├── vue.esm.browser.min.js
    ├── vue.esm.js
    ├── vue.js
    ├── vue.min.js
    ├── vue.runtime.common.dev.js
    ├── vue.runtime.common.js
    ├── vue.runtime.common.prod.js
    ├── vue.runtime.esm.js
    ├── vue.runtime.js
    └── vue.runtime.min.js
    

    构建好的不同 Vue 版本,包括了 UMDCommonJSES 生产和开发包,以及完整版,压缩版本、只包含运行时的版本。其实就是作为 rollup 打包的出口。

    .examples

    ├── commits
    ├── elastic-header
    ├── firebase
    ├── grid
    ├── markdown
    ├── modal
    ├── move-animations
    ├── select2
    ├── svg
    ├── todomvc
    └── tree
    

    一些用 vue 写的 demo

    打开 select2 里面的 index.html 看一下

    Vue源码的目录都包含哪些内容?

    .flow

    ├── compiler.js
    ├── component.js
    ├── global-api.js
    ├── modules.js
    ├── options.js
    ├── ssr.js
    ├── vnode.js
    └── weex.js
    

    vue 使用了 flow 来做静态类型检查,这个目录里主要是 flow 的类型声明文件。

    .packages

    ├── vue-server-renderer
    ├── vue-template-compiler
    ├── weex-template-compiler
    └── weex-vue-framework
    

    这里存放的是 服务端渲染模板编译器 以及 weex构建 相关的 npm 包,是提供给不同场景使用的,这些包都可以在 npm 库里搜索到,可以单独引入,具体的用途要具体场景具体分析。

    .scripts

    ├── alias.js
    ├── build.js
    ├── config.js
    ├── feature-flags.js
    ├── gen-release-note.js
    ├── get-weex-version.js
    ├── git-hooks
    ├── release-weex.sh
    ├── release.sh
    └── verify-commit-msg.js
    

    存放一些 npm 脚本的配置文件,结合 webpackrollup 等工具进行编译,测试,构建等操作。

    git-hooks 目录是用于 git-commit 的,有一些提交规则,如果这些规则没有通过,则会阻止提交并抛出提交错误,比如常见的 eslint 校验规则,当 eslint 校验没通过的时候,阻止提交。

    alias.js 是模块导入所有源代码和测试中使用的别名,其功能等同于 webpack.config.jsresolve 配置项的 alias

    .src

    vue 的主要源码都在这个目录下,下面重点介绍

    .test

    ├── e2e
    ├── helpers
    ├── ssr
    ├── unit
    └── weex
    

    测试模块,包含了 单元测试unite2e测试 以及 ssr服务端渲染weex 的一些测试用例。

    .types

    ├── index.d.ts
    ├── options.d.ts
    ├── plugin.d.ts
    ├── test
    ├── tsconfig.json
    ├── typings.json
    ├── umd.d.ts
    ├── vnode.d.ts
    └── vue.d.ts
    

    vue 新版本支持 TypeScript ,这里存放的都是 TypeScript 类型声明文件。

    .babelrc.js

    babel 配置文件 ?官网

    es6 特性浏览器还没有全部支持,但是使用 es6 是大势所趋,所以 babel 应运而生,用来将 es6 代码转换成浏览器能够识别的代码。

    .editorconfig

    针对编辑器的编码风格配置的文件 ?官网

    不同的开发人员,不同的编辑器,有不同的编码风格,而 EditorConfig 就是用来协同团队开发人员之间的代码的风格及样式规范化的一个工具,而 .editorconfig 正是它的默认配置文件。

    .eslintrc.js

    eslint 配置文件 ?官网

    ESLint 是一个插件化并且可配置的 JavaScript 语法规则和代码风格的检查工具。 .eslintrc.js 正是它的默认配置文件。

    .eslintignore

    忽略项目中某个文件夹的 eslint 代码规范。

    .flowconfig

    flow 的配置文件 ?官网

    上文说过是用来做静态类型检查的。.flowconfig 正是它的默认配置文件。

    .gitignore

    这个文件的作用就是告诉 Git 哪些文件不需要添加到版本管理中。

    BACKERS.md

    支持者

    LICENSE

    开源协议

    package.json

    Node.js 项目遵循模块化的架构,当我们创建了一个 Node.js 项目,意味着创建了一个模块,这个模块的描述文件,被称为 package.json

    README.md

    项目介绍

    yarn.lock

    每个 yarn 安装都会生成一个 yarn.lock 文件,而且它是默认创建的。除了常规信息之外,yarn.lock 文件还包含要安装的内容的校验和,以确保使用的库的版本相同。

    主要代码

    vue 的主要源码都在 src 这个目录下,而且源码根据不同的模块和功能都划分好了

    ├── compiler
    ├── core
    ├── platforms
    ├── server
    ├── sfc
    └── shared
    

    compiler

    目录包含 Vue 所有编译相关的代码,包括把模板解析成 AST语法树、及 AST语法树优化代码生成 等功能。

    ├── codegen // 把AST转换成Render函数
    ├── directives // 生成 Render 函数之前需要处理的指令
    └── parser // 解析模板成AST
    

    core

    包含了 Vue 的核心代码,包括 内置组件全局API 封装Vue 实例化观察者虚拟DOM, 工具函数等等

    ├── components // 组件相关的属性,目前这里只有keep-alive组件
    ├── global-api // Vue的全局api, 比如 Vue.extend、Vue.mixin
    ├── instance // 实例化相关的。比如 生命周期、事件等
    ├── observer// Vue响应式数据相关的目录
    ├── util // Vue相关的工具方法目录
    ├── vdom // 虚拟dom相关的内容
    ├── config.js
    └── index.js
    

    platforms

    Vue 是一个跨平台的 MVVM 框架,它可以跑在 web 上,可以跑在 weex 上, 跑在 native 客户端上,platformVue 的入口,分别打包成运行在 web 上和 weex 上。

    ├── web
        ├── compiler // web端编译器相关的代码,用来编译模板成Render函数
        ├── runtime // web端运行时相关的代码,用来创建Vue实列等操作
        ├── server // 服务器端渲染相关的
        └── util// 相关工具类
    └── weex  // ...同web 没有server目录
        
    

    server

    Vue2.x 支持了服务端渲染,所有服务端渲染相关的逻辑都在这个目录下。

    sfc

    转换单文件组件,通常我们开发 Vue 都会借助 webpack 构建,然后通过 .vue 单文件来编写组件。该目录下的代码逻辑会把 .vue 文件内容解析成一个 javascript 的对象。

    shared

    全局共享的一些方法和常量,这里定义的工具方法都是会被浏览器端的 Vue.js 和 服务端的 Vue.js 所共享的。

    运行源码

    github 上下载?? 源码

    进入到 vue-dev 目录 运行命令 npm i

    这个时候如果报了下面这个错误,按照这篇文章的步骤就可解决

    ??vue2.6.11版本源码运行报错问题处理

    Vue源码的目录都包含哪些内容?

    修改 package.json

    "dev": "rollup -w -c scripts/config.js --sourcemap --environment TARGET:web-full-dev",
    

    然后运行命令 npm run serve 就会在 dist 目录下 生成 vue.js.map 文件,用来进行调试。

    参考

    vue源码学习(一)——目录结构

    人人都能懂的Vue源码系列(一)—Vue源码目录结构

    vue2.6.11版本源码运行报错问题处理

    精通 Vue 技术栈的源码原理


    起源地下载网 » Vue源码的目录都包含哪些内容?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元