青训营笔记

132 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第1天

小程序技术全解|青训营笔记

从四个维度介绍了小程序,分别是小程序的发展历程、业务价值、技术解析以及相关拓展。

一、发展历程

微信小程序简称小程序。张小龙于2017年1月9日在微信公开课上宣布其正式上线。2017年微信小程序出现,一开始,小程序是转为企业商家提供的,直到2018年才开始面向社会开发者公测。小程序英文名是Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。微信小程序诞生初期,备受各界人士关注和期待,但是短期之内并没有对行业造成绝对式的改变,因此曾一度被一些人认为小程序只是昙花一现。然而事实证明,小程序并没有就此消沉,而是在扎扎实实、脚踏实地的改变着整个互联网。“跳一跳”小游戏的出现,让更多的人认识到了小程序。正因“跳一跳”小程序发布,引爆了互联网,小程序生态也就从那时开始激增。

二、业务价值

首先和传统web相比

  • 它有较低的开发门槛,统一的版本管理以及平台审核
  • 它具备跨端分享能力,和平台绑定,如二维码、端内分享,易于推广
  • 小程序基于特殊的架构,和传统APP相比,体积更小,在流畅方面比WEB做的更好

其次是它带来的商业价值

  • 渠道价值

由于小程序的便捷性,并依托于超级平台,可以充分为很多场景进行导流作用。

  • 业务探索价值

和原生APP相比,小程序开发成本会比较低,更利于做一些探索性业务,减少快速试错的成本。

  • 数字升级价值

小程序为很多商家提供了数字化转型的机会,在很多线下场景中小程序可以覆盖的范围很广。

三、技术解析

首先,小程序利用js独立沙箱技术把逻辑层和渲染层是分开的,逻辑层运行在 JSCore 中,并没有一个完整浏览器对象。所以它没有相关的DOM API和BOM API,这也导致平时前端开发非常熟悉的一些库,在小程序中无法运行。总之,js是单线程的,小程序是双线程,逻辑层和视图层(渲染层)是分开的,同时运行的。 那么小程序无法操作dom,它是如何渲页面的数据呢?系统预留了setData函数,使用方法和react的setState类似。

四、相关拓展

市面上多端适配框架的原理,普遍可以分为编译时和运行时。

编译时原理一般是先将代码转化为AST语法树,再将AST语法树转化为相应小程序端的代码。但它存在着缺点,比如react语法是灵活多变,随着react版本迭代,react有些语法是小程序无法实现的。

而运行时的原理是将虚拟dom树转化为生成实际要渲染的元素树,js代码转化为组合template。虚拟dom本质其实就是js对象,通过虚拟dom可以渲染出真实dom。该方法在一些场景下相比原生小程序相比语法性能可能会稍微差点。