vue系列文章 --- 源码目录结构整理(三)
vue的版本是:^2.6.10
结构如下:
|----- vue
| |--- dist # 打包之后的目录vue文件
| | |--- 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.rintime.common.prod.js
| | |--- vue.runtime.esm.js
| | |--- vue.runtime.js
| | |--- vue.runtime.min.js
| |--- src
| | |--- compiler # 模板解析相关的文件
| | | |--- codegen # 根据Ast 生成 render 函数
| | | | |--- events.js
| | | | |--- index.js
| | | |--- directives # 生成 render 函数之前需要处理的指令
| | | | |--- bind.js
| | | | |--- index.js
| | | | |--- model.js
| | | | |--- on.js
| | | |--- parser # 模板解析
| | | | |--- entity-decoder.js
| | | | |--- filter-parser.js
| | | | |--- html-parser.js
| | | | |--- index.js
| | | | |--- text-parser.js
| | | |--- codeframe.js
| | | |--- create-compiler.js
| | | |--- error-detector.js
| | | |--- helpers.js
| | | |--- index.js
| | | |--- optimizer.js
| | | |--- to-function.js
| | |---- core
| | | |--- components # 全局组件 目前只有 keep-alive
| | | | |--- index.js
| | | | |--- keep-alive.js
| | | |--- global-api # 全局方法 添加到vue上的方法
| | | | |--- assets.js
| | | | |--- extends.js
| | | | |--- index.js
| | | | |--- mixin.js
| | | | |--- use.js
| | | |--- instance # 实列相关的内容 包括实列方法。生命周期,事件等。
| | | | |--- render-helpers
| | | | | |--- bind-dynamic-keys.js
| | | | | |--- bind-object-listeners.js
| | | | | |--- bind-object-props.js
| | | | | |--- check-keycodes.js
| | | | | |--- index.js
| | | | | |--- render-list.js
| | | | | |--- render-slot.js
| | | | | |--- render-static.js
| | | | | |--- resolve-filter.js
| | | | | |--- resolve-scoped-slots.js
| | | | | |--- resolve-slots.js
| | | | |--- events.js
| | | | |--- index.js
| | | | |--- init.js
| | | | |--- inject.js
| | | | |--- lifecycle.js
| | | | |--- proxy.js
| | | | |--- render.js
| | | | |--- state.js
| | | |--- observer # 数据双向绑定文件
| | | | |--- array.js
| | | | |--- dep.js
| | | | |--- index.js
| | | | |--- scheduler.js
| | | | |--- traverse.js
| | | | |--- watcher.js
| | | |--- util # 工具方法
| | | | |--- debug.js
| | | | |--- env.js
| | | | |--- error.js
| | | | |--- index.js
| | | | |--- lang.js
| | | | |--- next-tick.js
| | | | |--- options.js
| | | | |--- perf.js
| | | | |--- props.js
| | | |--- vdom # 虚拟dom相关的
| | | | |--- helpers
| | | | | |--- extract-props.js
| | | | | |--- get-first-component-child.js
| | | | | |--- index.js
| | | | | |--- is-async-placeholder.js
| | | | | |--- merge-hook.js
| | | | | |--- normalize-children.js
| | | | | |--- normalize-scoped-slots.js
| | | | | |--- resolve-async-component.js
| | | | | |--- update-listeners.js
| | | | |--- modules
| | | | | |--- directives.js
| | | | | |--- index.js
| | | | | |--- ref.js
| | | | |--- create-component.js
| | | | |--- create-element.js
| | | | |--- create-functional-component.js
| | | | |--- patch.js
| | | | |--- vnode.js
| | | |--- config.js # 入口配置文件
| | | |--- index.js
| | |--- platforms # 平台相关的
| | | |--- web # web平台
| | | | |--- compiler # 编译期间需要处理的指令和模块
| | | | | |--- directives # 指令
| | | | | | |--- html.js
| | | | | | |--- index.js
| | | | | | |--- model.js
| | | | | | |--- text.js
| | | | | |--- modules # 模块
| | | | | | |--- class.js
| | | | | | |--- index.js
| | | | | | |--- model.js
| | | | | | |--- style.js
| | | | | |--- index.js
| | | | | |--- options.js
| | | | | |--- util.js
| | | | |--- runtime # 运行阶段处理的组件、指令和模块
| | | | | |--- components # 相关的组件
| | | | | | |--- index.js
| | | | | | |--- transition-group.js
| | | | | | |--- transition.js
| | | | | |--- directives # 相关的指令
| | | | | | |--- index.js
| | | | | | |--- model.js
| | | | | | |--- show.js
| | | | | |--- modules # 相关的模块
| | | | | | |--- attrs.js
| | | | | | |--- class.js
| | | | | | |--- dom-props.js
| | | | | | |--- events.js
| | | | | | |--- index.js
| | | | | | |--- style.js
| | | | | | |--- transition.js
| | | | | |--- class-util.js
| | | | | |--- index.js
| | | | | |--- node-ops.js
| | | | | |--- patch.js
| | | | | |--- transition-util.js
| | | | |--- server # 服务端渲染的指令和模块
| | | | | |--- directives # 指令
| | | | | | |--- index.js
| | | | | | |--- model.js
| | | | | | |--- show.js
| | | | | |--- modules # 模块
| | | | | | |--- attrs.js
| | | | | | |--- class.js
| | | | | | |--- dom-props.js
| | | | | | |--- index.js
| | | | | | |--- style.js
| | | | | |--- compiler.js
| | | | | |--- util.js
| | | | |--- util
| | | | | |--- attrs.js
| | | | | |--- class.js
| | | | | |--- compat.js
| | | | | |--- element.js
| | | | | |--- index.js
| | | | | |--- style.js
| | | | |--- entry-compiler.js
| | | | |--- entry-runtime-with-compiler.js
| | | | |--- entry-runtime.js
| | | | |--- entry-server-basic-renderer.js
| | | | |--- entry-server-renderer.js
| | | |--- weex # weex平台
| | |--- server
| | | |--- bundle-renderer
| | | | |--- create-bundle-renderer.js
| | | | |--- create-bundle-runner.js
| | | | |--- source-map-support.js
| | | |--- optimizing-compiler
| | | | |--- codegen.js
| | | | |--- index.js
| | | | |--- modules.js
| | | | |--- optimizer.js
| | | | |--- runtime-helpers.js
| | | |--- template-renderer
| | | | |--- create-async-file-mapper.js
| | | | |--- index.js
| | | | |--- parse-template.js
| | | | |--- template-stream.js
| | | |--- webpack-plugin
| | | | |--- client.js
| | | | |--- server.js
| | | | |--- util.js
| | | |--- create-basic-renderer.js
| | | |--- create-renderer.js
| | | |--- render-context.js
| | | |--- render-stream.js
| | | |--- render.js
| | | |--- util.js
| | | |--- write.js
| | |--- sfc
| | | |--- parser.js
| | |--- shared
| | | |--- constants.js
| | | |--- util.js
| |
| |--- types
| | |--- index.d.ts
| | |--- options.d.ts
| | |--- plugin.d.ts
| | |--- vnode.d.ts
| | |--- vue.d.ts
| |--- package.json
| |--- README.md
如上是 vue2.6.10版本所有的js目录结构
1. src/compiler: 该目录包含Vue.js所有编译相关的代码,包括把模板解析成AST语法树、及 AST语法树优化、代码生成等功能。
src/compiler/codegen: 把AST转换成Render函数。
src/compiler/parser: 解析模板成AST。
src/compiler/directives: 生成 Render 函数之前需要处理的指令。
2. src/core: 该目录包含了Vue.js的核心代码,包括内置组件、全局API封装、Vue实列化、观察者、虚拟DOM、工具函数等。
src/core/components: 组件相关的属性,目前这里只有keep-alive组件
src/core/global-api: Vue的全局api, 比如 Vue.extend、Vue.mixin.
src/core/instance: 实例化相关的。比如 生命周期、事件等。
src/core/observer: Vue响应式数据相关的目录。
src/core/util: Vue相关的工具方法目录。
src/core/vdom: 虚拟dom相关的内容。
3. src/platforms: platforms 是Vue.js的入口文件,有2个入口文件 web 和 weex,分别打包运行在 web或 weex 平台上的。
src/platforms/web 平台上的(src/platforms/weex 也是一样的意思)。
src/platforms/web/compiler: web端编译器相关的代码,用来编译模板成Render函数。
src/platforms/web/runtime: web端运行时相关的代码,用来创建Vue实列等操作。
src/platforms/web/util: 相关工具类。
src/platforms/web/server: 服务器端渲染相关的。
4. src/server: Vue2.0+ 为了支持服务器端渲染,所有服务器端渲染相关的逻辑都放在这个目录下。
5. src/sfc: 该目录下的代码逻辑会把 .vue 文件内容解析成一个 javascript 的对象。
src/sfc/parser.js: 转换单文件组件(*.vue) 解析成一个javascript对象。
6. src/shared: 该目录下会定义一些工具方法。这些工具方法会被浏览器端 Vue.js 和 服务器端 Vue.js所共享的。
vue系列文章 --- 源码目录结构整理(三)的更多相关文章
- Vue2.x源码学习笔记-源码目录结构整理
先从github上下载或者clone一个vue分支项目 https://github.com/vuejs/vue 查看下目录结果 先列出一些目录 Vue |— build 打包相关的配置文件,其中最重 ...
- chromium浏览器开发系列第三篇:chromium源码目录结构
上两篇介绍了下载源码和编译源码,这次主要介绍chromium的源码目录结构,我也是通过源码和官网结合来跟大家说,如果有说的不准确的,欢迎交流. 另外,官网的不一定准确,他们其实也很懒,所以最主要还是靠 ...
- Linux基础系列—Linux内核源码目录结构
/** ****************************************************************************** * @author 暴走的小 ...
- 【安卓本卓】Android系统源码篇之(一)源码获取、源码目录结构及源码阅读工具简介
前言 古人常说,“熟读唐诗三百首,不会作诗也会吟”,说明了大量阅读诗歌名篇对学习作诗有非常大的帮助.做开发也一样,Android源码是全世界最优秀的Android工程师编写的代码,也是A ...
- Locust源码目录结构及模块作用
Locust源码目录结构及模块作用如下: 参考文章:https://blog.csdn.net/biheyu828/article/details/84031942
- InfluxDB源码目录结构解析
操作系统 : CentOS7.3.1611_x64 go语言版本:1.8.3 linux/amd64 InfluxDB版本:1.1.0 influxdata主目录结构 [root@localhost ...
- (转)android系统架构及源码目录结构
转自:http://blog.csdn.net/finewind/article/details/46324507 1. Android系统架构: android系统架构采用了分层架构的思想,如下图所 ...
- (3.1)mysql基础深入——mysql二进制与源码目录结构介绍
(3.1)mysql基础深入——mysql二进制与源码目录结构介绍 关键字:二进制目录结构,源码目录结构(编译安装目录结构) 1.二进制安装程序目录结构 [1] BIN -- mysql的可执行文件( ...
- Source Code Structure - Python 源码目录结构
Source Code Structure - Python 源码目录结构 Include 目录包含了 Python 提供的所有头文件, 如果用户需要用 C 或 C++ 编写自定义模块扩展 Pytho ...
随机推荐
- JAVA自学笔记 - 从零开始
文中记录的内容都是博主从自己的学习笔记中总结的. 如果遇到问题,或者有不一样的看法,欢迎提出! 1安装JDK 从Oracle官网下载JDK,我使用的版本是1.7.0.80. 操作系统是win7 64位 ...
- Tomcat部署spring boot项目
Tomcat部署spring boot项目 需要在启动类做修改
- java 数组定义
1.方式一: 数组声明: int[] intArr ; String [] strArr; int [][] intArrs; 数组初始化: intArr = new int[6]; //一维数组 s ...
- 第八届蓝桥杯java b组第十题
标题: k倍区间 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍 ...
- TCP通信 -C/S中的Socket与ServerSocket
客户端类:Socket类 TCP通信的客户端:向服务器发送连接请求,给服务器发送数据,读取服务器的数据,两次IO流 java.lang.Object 继承者 java.net.Socket 构造方法: ...
- JS中数据类型转换
JS中数据类型转换汇总 JS中的数据类型分为 [基本数据类型] 数字 number 字符串 string 布尔 boolean 空 null 未定义 undefined [引用数据类型] 对象 obj ...
- Oracle clob列union的方法(ORA-00932)
今天在做“站内搜索”数据抽取时,为了能将多个相似的数据库表数据合并,使用了SQL中union关键字,期望将多个单独的SQL查询结果合并到一起.每个单独的SQL都能成功执行,在union合并的过程中遇到 ...
- java异常类的妙用
异常类的妙用 以往在使用异常时,只是知道通过异常类的构造方法设置一些出错信息,此外最多就是把引起该异常的原因通过Throwable类的子类一同设置进去.今天在分析springSecurity3.0 ...
- 为何stop()和suspend()方法不推荐使用(转)
stop()方法作为一种粗暴的线程终止行为,在线程终止之前没有对其做任何的清除操作,因此具有固有的不安全性. 用Thread.stop()方法来终止线程将会释放该线程对象已经锁定的所有监视器.如果以前 ...
- .Net Core 商城微服务项目系列(十三):搭建Log4net+ELK+Kafka日志框架
之前是使用NLog直接将日志发送到了ELK,本篇将会使用Docker搭建ELK和kafka,同时替换NLog为Log4net. 一.搭建kafka 1.拉取镜像 //下载zookeeper docke ...