VUE源码--目录结构(一)

源码目录结构

VUE 2.6.10
├── scripts             # 打包相关的配置文件,其中最重要的是config.js。主要是根据不一样的入口,打    包为不一样的文件。
├── dist             # 打包以后文件所在位置
├── examples         # demo示例
├── flow             # Vue使用了Flow来进行静态类型检查,这里定义了声明了一些静态类型
├── packages         # vue还能够分别生成其它的npm包
├── src             # 主要源码所在位置
    ├── compiler        # 编译相关 
        ├── codegen         #根据ast生成render函数
        ├── directives         #通用生成render函数以前须要处理的指令
        ├── parser             #模板解析
    ├── core            # 核心代码
        ├── components         #全局的组件,这里只有keep-alive
        ├── global-api     #全局方法,也就是添加在Vue对象上的方法,好比Vue.use,Vue.extend,,Vue.mixin等
        ├── instance         #实例相关内容,包括实例方法,生命周期,事件等
        ├── observer         #双向数据绑定相关文件
        ├── util             #工具方法
        ├── vdom             #虚拟dom相关 
    ├── platforms       # 不一样平台的支持
        ├── web             #web端独有文件
            ├── compiler         #编译阶段须要处理的指令和模块
            ├── runtime         #运行阶段须要处理的组件、指令和模块
            ├── server             #服务端渲染相关
            ├── util             #工具库
        ├── weex             #weex端独有文件
    ├── server          # 服务端渲染
    ├── sfc             # vue 文件解析
    ├── shared          # 共享工具代码
├── test             # 测试用例

==主要源码所在位置Src==javascript

  1. compiler

compiler 目录包含 Vue.js 全部编译相关的代码。它包括把模板解析成 ast 语法树,ast 语法树优化,代码生成等功能。html

编译的工做能够在构建时作(借助 webpack、vue-loader 等辅助插件);也能够在运行时作,使用包含构建功能的 Vue.js。显然,编译是一项耗性能的工做,因此更推荐前者——离线编译。
  1. core
    core 目录包含了 Vue.js 的核心代码,包括内置组件、全局 API 封装,Vue 实例化、观察者、虚拟 DOM、工具函数等等。

    这里的代码可谓是 Vue.js 的灵魂,也是咱们以后须要重点分析的地方。vue

  2. platform
    Vue.js 是一个跨平台的 MVVM 框架,它能够跑在 web 上,也能够配合 weex 跑在 native 客户端上。platform 是 Vue.js 的入口,2 个目录表明 2 个主要入口,分别打包成运行在 web 上和 weex 上的 Vue.js。

    咱们会重点分析 web 入口打包后的 Vue.js,对于 weex 入口打包的 Vue.js,感兴趣的同窗能够自行研究。java

  3. server

    Vue.js 2.0 支持了服务端渲染,全部服务端渲染相关的逻辑都在这个目录下。注意:这部分代码是跑在服务端的 Node.js,不要和跑在浏览器端的 Vue.js 混为一谈。webpack

    服务端渲染主要的工做是把组件渲染为服务器端的 HTML 字符串,将它们直接发送到浏览器,最后将静态标记"混合"为客户端上彻底交互的应用程序。git

  4. sfc

    一般咱们开发 Vue.js 都会借助 webpack 构建, 而后经过 .vue 单文件来编写组件。github

    这个目录下的代码逻辑会把 .vue 文件内容解析成一个 JavaScript 的对象。web

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

引用: Vue.js 技术揭秘.npm

相关文章
相关标签/搜索