爱本泡沫多脆弱 2022-05-04 13:55:46
react 是委托到 document 上, 然后自己生成了合成事件, 冒泡到 document 的时候进入合成事件, 然后他通过 getParent() 获取该事件源的所有合成事件, 触发完毕之后继续冒泡
vue 是怎么做的我就不清楚了, 但是尤大应该会意识到合成事件带来的好处, 跨端跨浏览器每个dom都有的事件都代理到document上,但是一些特殊的比如focus这种必须放在input这些dom上。
爱本泡沫多脆弱 2022-05-03 06:22:15
把 ES6 代码转成 ES5 代码的实现思路可以分成三步:
- 打开冰箱
- 把大象装进去
- 关上冰箱
喔,不对,原谅我开了个玩笑,嗯,有点冷……
回到正题上来,说到 ES6 代码转成 ES5 代码,我们肯定会想到 Babel。所以,我们可以参考 Babel 的实现方式。
那么 Babel 是如何把 ES6 转成 ES5 呢,其大致分为三步:
- 将代码字符串解析成抽象语法树,即所谓的 AST
- 对 AST 进行处理,在这个阶段可以对 ES6 代码进行相应转换,即转成 ES5 代码
- 根据处理后的 AST 再生成代码字符串
基于此,其实我们自己就可以实现一个简单的“编译器”,用于把 ES6 代码转成 ES5。
比如,可以使用 @babel/parser
的 parse
方法,将代码字符串解析成 AST;使用 @babel/core
的 transformFromAstSync
方法,对 AST 进行处理,将其转成 ES5 并生成相应的代码字符串;过程中,可能还需要使用 @babel/traverse
来获取依赖文件等。对此感兴趣的可以看看这个。
如果有误,希望可以帮忙指出来,多谢。
- 共 1 页
- 1
第 71 题: 实现一个字符串匹配算法,从长度为 n 的字符串 S 中,查找是否存在字符串 T,T 的长度是 m,若存在返回所在位置