[TOC]
*****
## web-runtime-with-compiler web运行编译时
>[info] import
~~~
;(导入)编译运行时
import config from 'core/config'
import { warn, cached } from 'core/util/index'
import { query } from 'web/util/index'
import Vue from './web-runtime'
import { compileToFunctions } from './web-compiler'
~~~
>[info] module
~~~
;获取元素模板
const idToTemplate = cached(id => query(id).innerHTML)
;保存mount接口
const mount = Vue.prototype.$mount
;编译运行时$mount修正
Vue.prototype.$mount = function (el) {
;获取元素
el = el && query(el)
;选项
const options = this.$options
;检查是否包含渲染选项
if (!options.render) {
;获取模板选项
let template = options.template
;检查是否已包含模板
if (template) {
if (typeof template === 'string') {
if (template.charAt(0) === '#') {
template = idToTemplate(template)
}
} else if (template.nodeType) {
template = template.innerHTML
} else {
warn('invalid template option:' + template, this)
}
} else if (el) {
;生成模板
template = getOuterHTML(el)
}
;检查模板
if (template) {
;生成render,staticRenderFns函数
const { render, staticRenderFns } = compileToFunctions(template, {
preserveWhitespace: config.preserveWhitespace,
delimiters: options.delimiters
})
;挂载到options
options.render = render
options.staticRenderFns = staticRenderFns
}
}
;调用原生mount函数实现挂载
mount.call(this, el)
}
;获取el的模板
function getOuterHTML (el) {
if (el.outerHTML) {
return el.outerHTML
} else {
const container = document.createElement('div')
container.appendChild(el.cloneNode(true))
return container.innerHTML
}
}
;编译入口
Vue.compile = compileToFunctions
;编译运行时Vue
export default Vue
~~~
>[info] export
~~~
;(导出)编译运行时Vue
export default Vue
~~~
- 概述
- 框架结构
- 编译入口(\entries)
- web-compiler.js(web编译)
- web-runtime.js(web运行时)
- web-runtime-wih-compiler.js(web编译运行)
- web-server-renderer.js(web服务器渲染)
- 核心实现 (\core)
- index.js(核心入口)
- config.js(核心配置)
- core\util(核心工具)
- core\observer(双向绑定)
- core\vdom(虚拟DOM)
- core\global-api(核心api)
- core\instance(核心实例)
- 模板编译(\compiler)
- compiler\parser(模板解析)
- events.js(事件解析)
- helper.js(解析助手)
- directives\ref.js(ref指令)
- optimizer.js(解析优化)
- codegen.js(渲染生成)
- index.js(模板编译入口)
- web渲染(\platforms\web)
- compiler(web编译目录)
- runtime(web运行时目录)
- server(web服务器目录)
- util(web工具目录)
- 服务器渲染(\server)
- render-stream.js(流式渲染)
- render.js(服务器渲染函数)
- create-renderer.js(创建渲染接口)
- 框架流程
- Vue初始化
- Vue视图数据绑定
- Vue数据变化刷新
- Vue视图操作刷新
- 框架工具
- 基础工具(\shared)
- 模板编译助手
- 核心实例工具
- Web渲染工具
- 基础原理
- dom
- string
- array
- function
- object
- es6
- 模块(Module)
- 类(Class)
- 函数(箭头)
- 字符串(扩展)
- 代理接口(Proxy)
- 数据绑定基础
- 数据绑定实现
- mvvm简单实现
- mvvm简单使用
- vdom算法
- vdom实现
- vue源码分析资料