网上对于小程序底层剖析的不多,我挑了 玖五老师 的两篇文章,先看我们再继续。
《小程序底层实现原理及一些思考》
《小程序底层实现原理及一些思考(2)》
文章中,玖五老师给出了小程序的要点:
站在技术角度思考,小程序至少要保证四点:安全、稳定、性能、简单。
- 安全,指的是小程序的安全性,由于小程序提供给开发者更高的权限,小程序开发者拥有很多OS能力的API,如果开发者利用这些API做些恶意的事情,那么对用户来说将是一场灾难(随便打开一个小程序,结果被黑客攻击了)。
- 稳定,指的是小程序的稳定性,某个小程序崩溃或者卡死,不应该影响宿主APP及其他小程序。手机上的小程序大部分只能同时打开一个小程序,所以读者可能无法理解什么是稳定性。PC上可以同时打开很多个小程序,根据产品形态不同,有的产品形态的小程序可能在一个网页里面运行(多个小程序同时在同一个网页里运行),这时候某个小程序卡死(例如写一个死循环),它不应该导致其他的小程序和宿主环境也跟着卡死。
- 性能,要保证小程序的执行、渲染等效率要足够高效。
- 简单,小程序对于开发者要足够简单,最好无需学习直接上手。
基于上,定了双线程(多线程)作为开发基调,Vue作为UI渲染。
由于已经实现了大部分模块的开发,所以文章中会放出比较多的简化代码实现,旨在抛砖引玉,省略细节和错误判断。
目录
其他
本篇文章旨在交流前端相关,所有没有实现其他端的需求。
- 对于客户端,PC端我们可以用 CEF 来实现套壳,移动端参考微信小程序。
- 对于服务端,现有的各大厂中厂都有自身的下发包机制,不发散。
- 小程序整个技术和生态也远不止这一些,我也没去研究过小程序底层源码,是基于自身的理解实现代码,不一定对,欢迎讨论。
PS
目前已提供 cli 体验,详见 fox2app-cli