小结一下最近的事情, 当然还是关于 Weex 为主,
晚饭前还跟同事扯淡说一晚上写一个 Weex 框架出来的可能性,
还是实力不够... 不过经过两个晚上的加白天偷了点时间, Respo 算是跑通了,
最近需要熟悉 Weex 的 Virtual DOM API, 因而顺带花了大量时间,
我想说, 如果你想造个 Weex 框架, 可以开始玩了...
Weex Conf 结束后我就有把 ClojureScript 编译过去的想法,
不过 Rax 是真让我意外, 特别是英文社区对于 Rax 的关注程度,
但前端社区就是这样, 大家永远没法统一. 所以, 我发起了一个投票,
http://vote.weibo.com/poll/13...
结果大家已经看到了, Vue 和 React 的拥护者大概各有 1/3,
剩下当中, 10% 说想要 jQuery, 8% 说要自已造一个框架出来.
无论是 jQuery 还是自己造框架, 这种可能性都很值得探索.
于是我就去探索了, 在官方仓库的文档里翻到了 DOM API, 也翻到了例子,
后来我的例子还跑通了, 因而我对于这件事情还是相当有信心的,
周二晚上整理了文章出来, 把大致的步骤都记录了一下:
https://hashnode.com/post/run...
简单说 Weex 环境是个 JavaScript 引擎, 去掉了 DOM API,
同时加上了 Weex 运行时所提供的一些 API, 以及全局对象.
这些 API 就像是一层 low level 的 IR, higher level 的 DSL 基于它们构建.
细节看文章描述, 尽管是英文... 由于模拟了 DOM API, 其实难度并不高,
而且多亏了 Weex Rax 在前面开路, 实际上我没碰到什么大问题.
但也有一些思考, 比如说基于单个 js 文件, 现在没看到有合适的热替换方案,
调试方面的 Weex 已经很赞, 但也有不完善的, cljs 的 SourceMap 我遇到坑了,
Weex Playground 的版本没有统计升级, 跟源码等各个地方短期还有不一致,
目前官方似乎都将精力放在 Weex 本身, Virtual DOM API 本身值得继续挖掘.
而这样一个环境, 其实值得引发更多我们对已有的技术栈的思考和重构.
回来扯一扯 ClojureScript 写的 Respo, prototype 已经正常跑, 问题不大,
https://github.com/Respo/weex
我的主要工作是替换了 DOM API 和事件处理部分调用 API 和写法,
同时由于事件机制存在区别, 事件冒泡的代码做了一些删减,
ClojureScript 虽然依赖 Closure Library, 后者对 DOM 存在依赖,
但是从结果看, 仅仅是编译的话不相关的代码其实会被自动清除, 并不影响,
但是在热替换方面, 模块级别的热替换难以做到, 这是个不小的遗憾,
我估计这也需要 ClojureScript 核心团队下手才能解决, 我尝试了, 段位不够.
另一方面, 我也整理了一篇短文, 关于将 Virtual DOM 作为 IR 的理解,
https://medium.com/@jiyinyiyo...
也趁机会和勾股交流了下想法. 我个人认为 Virtual DOM API 价值更大,
如果能将这些 API 整理更明确一些, 对于构建生态更为有利,
可以想象, 一套工具链就像是链条, 需要很多人从等分的位置托起, 才能平稳,
而 IR 如果充实, 意味着中间的位置更加稳定, 能够承载更多的力量和玩法,
而且未来业务和性能优化的分离我认为会更清晰, IR 对此也有助益.
我个人倒是觉得 Weex Playground 挺好玩的, 已经像浏览器了,
想象一下以后到了商家, 扫码, 点开商家的菜单, 然后就能看各种东西,
要是还能收藏... 我为什么要费事去手动输入一个网址呢. 再说也不止二维码.
Weex Conf 上午的 Keynote 也算是开了脑洞, 我们的需求在不断挑战技术,
大厂们迫切需要旗下的各种伙伴快速制作大量的高性能的站点以及应用,
然而 Native 应用这么多年, WebView 这么多年, 拖慢了产品的节奏,
有人在研究技术让生命延长, 同时也有人在研究技术在短暂的时间能感受更多.
扯远了. 我个人对 React 对 Vue 的好感都挺一般, 反而更希望 DOM API 更成熟,
其实现在 Weex 本身是 Vue 和 Weex runtime 的混合体, 工作量也挺大的,
总归来说, 360+ 的人里有 28 个人想自己写框架, 其实也是不错的事情,
我还是蛮期待官方对于热替换给出一些方案, 这样能给框架开发者很多想象力,
当然在前方开路那也是极难的事情. 我也就写到这里吧...
考验大家想象力和编码能力的时刻到了, 趁老外还没开始刷 Weex !