术语表
DSL
DSL
是 Domain Specific Language 的缩写,中文翻译为领域特定语言
;
而与DSL
相对的就是GPL
,是 General Purpose Language 的简称,即通用编程语言
,也就是我们非常熟悉的 Objective-C
、Java
、Python`` 以及
C` 语言等等。
vue 中的 DSL:
词法+语法+语义分析
生成 token 流
生成模板 ast
将 ast 转化为 js ast
将 ast 转化为 render 函数
js
const code = ``
const tokens = tokenize(code) // 词法+语法+语义分析,生成token流
const tAst = parse(tokens) // 生成ast
const jsAst = transform(tAst) // 将ast转化为jsAst
const renderCode = generate(jsAst) // 将jsAst转化为render函数
const code = ``
const tokens = tokenize(code) // 词法+语法+语义分析,生成token流
const tAst = parse(tokens) // 生成ast
const jsAst = transform(tAst) // 将ast转化为jsAst
const renderCode = generate(jsAst) // 将jsAst转化为render函数
SFC
单文件组件,如 vue 文件中将 template、script、style 写到同一个文件下。
IIFE
立即调用函数表达式,是一个在定义时就会立即执行的 JavaScript 函数。
在没有块级作用域的 ES3 时代,是相当普遍的做法。
js
;(function () {
// 块级作用域
})()
;(function () {
// 块级作用域
})()
用 IIFE,保证了每一个 IIFE 中的代码变量不会在全局作用域下被访问,也就起到了变量保护的作用。