mipengine / mip2

MIP (移动网页加速器)通过优化网页JS、控制资源加载顺序,达到加速网页的效果。
https://www.mipengine.org/
MIT License
184 stars 49 forks source link

同步 AMP 的 on 和 bind 语法 #600

Closed yenshih closed 5 years ago

yenshih commented 5 years ago

要解决什么问题

MIP 的 on 和 bind 语法与 AMP 有很大差距,急需跟上。

需要同步的功能:

描述一下你理想中的解决方案

描述你的备选方案

补充信息

clark-t commented 5 years ago

分工上我负责 on 语法解析升级和 MIP 大对象的方法实现,@yensih 负责 mip-bind 升级

on 目前事件的绑定和触发机制基本 OK,主要问题在于 on 表达式解析比较弱,比如 event.xxx 的传参,MIP.setData() 等方法对表达式的支持不好,所以 on 这块的升级重点主要是写个解析器,覆盖原有功能的同时,增加对 event 参数、算数表达式的解析,改成 String -> AST -> Function。如果可能的 话,最好能够实现解析规则的扩展,后续可以考虑 mip-script 直接在这个规则基础上进行扩充,减小 mip-script 体积。

功能

预计 on 语法即将支持的功能包括:

需要考虑的问题

需要考虑对现有逻辑的兼容问题。目前 on 表达式在解析出方法调用时,会把括号中的内容(包括参数、逗号)的一整个文本作为唯一参数传入方法中由接收的方法进行解析,目前有限支持的 event 表达式直接将结果序列化成文本传入方法。所以需要考虑升级之后方法的参数设置问题。

我的想法是,第一参数保持字符串不变,方法的第二参数接收 AST 或者是直接计算好的结果。

clark-t commented 5 years ago

已上线