这是我参与「第四届青训营 」笔记创作活动的第15天
重点记录小程序技术解析相关笔记,自己组织总结的一些记录,如有不妥,还望不吝赐教。
小程序原理
最简单的开发方式就是使用web技术来开发,课程中老师介绍了WebView + JSBridge的方式。
WebView可以简单理解为app内置的浏览器,可以在app内展示网页。 但当我们希望开发者能够使用js调用更多app上的功能,比如打开地图或者其他应用时,单靠web api无法实现,这个时候就需要用到 JSBridge 了
顾名思义,jsbridge就是js和native代码之间的桥梁,使两者能够相互沟通和利用,实现jsbridge的方式很多,比如:代码注入、url拦截等。
一些问题:
无网络的情况体验不佳
网页切换体验不佳
如何管控保证安全
查看如下代码:
if (Date.now( ) > new Date( '2022-02-02' )) {
document . body. innerHTML = '<h1>hello world</h1> '
}
这里我们的web方案走不通,要解决上述的三个问题,我们需要一个具有以下特点的方案:
- 开发门槛低
- 接近原生的使用体验
- 能够保证安全可控
开发门槛低
即使用的技术应该能够容易地被大多数人掌握,比如我们常说的前端三大件:HTML、CSS、JS
接近原生的使用体验
为了保证使用体验,我们要解决资源加载、渲染、页面切换三大问题。
资源的加载可以采用资源离线化的方式,
渲染:在解决第三个问题时我们需要禁用dom操作,那么我们就要选择一些可以不操作dom对页面进行渲染的框架,比如react,我们只需要关系数据流而不需要操作具体的dom就可以根据数据来渲染页面。
页面切换时可以通过保留切换前的页面降低成本
保证安全可控
将dom的api都禁用掉