Vue.js 的源码都在 src 目录下,其目录结构如下。

src
├── compiler # 编译相关
├── core # 核心代码
├── platforms # 不同平台的支持
├── server # 服务端渲染
├── sfc # .vue 文件解析
├── shared # 共享代码

compiler

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

编译的工作可以在构建时做(借助 webpack、vue-loader 等辅助插件);也可以在运行时做,使用包含构建功能的 Vue.js。显然,编译是一项耗性能的工作,所以更推荐前者——离线编译。

core

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

这里的代码可谓是 Vue.js 的灵魂,也是我们之后需要重点分析的地方。

platform

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

我们会重点分析 web 入口打包后的 Vue.js,对于 weex 入口打包的 Vue.js,感兴趣的同学可以自行研究。

server

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

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

sfc

通常我们开发 Vue.js 都会借助 webpack 构建, 然后通过 .vue 单文件来编写组件。

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

shared

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

总结

从 Vue.js 的目录设计可以看到,作者把功能模块拆分的非常清楚,相关的逻辑放在一个独立的目录下维护,并且把复用的代码也抽成一个独立目录。

这样的目录设计让代码的阅读性和可维护性都变强,是非常值得学习和推敲的。

-----------------转自慕课网vue源码解析视频教程的内容-----------------

最新文章

  1. iOS -- CocoaPods
  2. 阶段一:AsyncTask的三个属性值和四个步骤
  3. Emmet语法
  4. IPv6协议介绍
  5. 解决CAS单点登录出现PKIX path building failed的问题
  6. 【Linux】鸟哥的Linux私房菜基础学习篇整理(二)
  7. Qt入门(10)——调试技术
  8. 使用日期工具类:DateUtil
  9. BZOJ2276: [Poi2011]Temperature
  10. asp.net 错误处理
  11. response 输出中文数据 文件下载
  12. python3 re模块
  13. 蓝桥杯_算法训练_ALGO10_集合运算
  14. 学习 Spring (十四) Introduction
  15. Hankson 的趣味题
  16. AI 卷积神经网络
  17. 线程安全地获取插入mysql的条目的id
  18. 音频播放封装(pcm格式,Windows平台 c++)
  19. 8.C#知识点:委托和事件
  20. 回归模型效果评估系列2-MAE、MSE、RMSE、MAPE(MAPD)

热门文章

  1. React Native运行出现Could not find "iPhone X" simulator
  2. Nginx-4.Nginx如何处理请求
  3. C#的冒泡排序
  4. 【DTOJ】1001:长方形周长和面积
  5. Node.js文档-path
  6. Sercet sharing
  7. P2813 母舰
  8. codechef Chef at the River
  9. netty 的事件驱动
  10. Android ListView的批量处理(多选/反选/删除)