金大大
金大大
有类似的应用场景吗 个人感觉target是list就可以了
当target的list `hover` 或者 `click` 的时候 左侧的树显示对应的层级结构 这样那?
### [transform-runtime](http://babeljs.io/docs/plugins/transform-runtime/) 是为了减少重复代码而生的。 babel生成的代码,可能会用到一些_extend(), classCallCheck() 之类的工具函数,默认情况下,这些工具函数的代码会包含在编译后的文件中。如果存在多个文件,那每个文件都有可能含有一份重复的代码。 babel-runtime插件能够将这些工具函数的代码转换成require语句,指向为对babel-runtime的引用,如 require('babel-runtime/helpers/classCallCheck'). 这样, classCallCheck的代码就不需要在每个文件中都存在了。 当然,最终你需要利用webpack之类的打包工具,将runtime代码打包到目标文件中。
### transform-object-rest-spread
### add-module-exports
### [lodash](https://github.com/lodash/babel-plugin-lodash)
### [babel-plugin-react-require](https://github.com/vslinko/babel-plugin-react-require) Babel plugin that adds React import declaration if file contains JSX tags. This plugin is only about stateless components that doesn't extends React.Component. If you want to use...
## 理解作用域 我们用模拟几个人物对话的形式来学习作用域 ### 演员表 + 引擎 + 编译器 + 作用域 ### 对话 解析 var a = 1 的过程 1. 编译器会将这段程序分解为词法单元,然后将词法单元解析成抽象语法树 2. 遇到 var a,编译器会询问作用域是否在同一作用域下已经存在一个该名称的变量,如果已经存在,编译器会忽略该声明,继续编译;否则他会要求作用域在当前作用域的集合中声明一个新的变量,并命名为 a 3. 接下来编译器会为引擎生成运行时所需的代码,用来处理 a =...
## 作用域嵌套 当一个块或函数嵌套在另一个块或函数中时,就发生了作用域嵌套。因此,在当前作用域下无法找到某个变量时,引擎就会在外层嵌套的作用域中继续查找,直到找到该变量为止,或抵达最外层的作用域(全局作用域)为止,当抵达到最外层的全局作用域时,无论找到没找到,查找过程都会停止。 ```javascript function foo(a) { console.log(a + b); } var b = 1; foo(2); ``` 对 b 进行 RHS 引用无法在函数 foo 中完成,但可以在上一级作用域中完成 回顾之前的对话,我们会听到: > 引擎:foo 的作用域,你见过 b 吗...
## 异常 在变量还有声明的情况下,LHS 和 RHS的查询行为是不一样的 ```javascript function foo(a) { console.log(a + b); } foo(2); ``` 第一次对 b 进行 RHS 查询时是无法找到该变量的(`未声明`),如果 RHS 查询在所有嵌套的作用域中寻找不到所需的变量,引擎就会抛出 `ReferenceError` 异常 当引擎在执行LHS查询的时候,如果在全局作用域中也无法找到目标变量,全局作用域中就会创建一个具有该变量名称的变量,并将其返回给引擎,前提是程序运行在`非严格模式`下 > es5 `严格模式` 与 `非严格模式`其中一个不用的行为就是严格模式禁止自动或隐式的创建全局变量,因此在严格模式下,LHS...