Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >直击本质:聊聊小程序的前世今生

直击本质:聊聊小程序的前世今生

作者头像
薛定喵君
发布于 2020-12-31 02:44:43
发布于 2020-12-31 02:44:43
1K0
举报
文章被收录于专栏:薛定喵君薛定喵君

一文带你了解小程序技术的发展脉络。

提到小程序,大家就会不自觉地带上(微信)两个字吧,但是对于小程序这一应用形态的探索却不是最先从微信开始的。 首先我们来问自己一个问题,小程序是啥?(可以先自己思考一下) 之前分享过一个图片小程序发展时间轴,我们可以知道业界对于这一技术领域的探索已经持续了7年了。 (微信)小程序的前身叫"应用号",我们可以知道它首先是个应用。 所以当你听到『小程序就是个H5嘛~』这种说法是有失偏颇的,h5是一种技术,遵循W3C的开放标准规范,可以运行在符合H5标准的容器内(外壳是浏览器),小程序则是有自己的封闭规范的,它是一个应用,运行的壳子是APP。

# 轻应用

在微信应用号之前,2013年的时候百度就基于H5技术推出了轻应用这种形态,轻应用如何理解?我们可以把它当做是加强版的H5,webview+JS API从而实现更多功能。这一形态的顶峰则是2015年1月9日微信公众平台面向开发者开放微信内网页开发工具包(微信JS-SDK)。

通过微信JS-SDK提供的11类接口集,开发者不仅能够在网页上使用微信本身的拍照、选图、语音、位置等基本能力,还可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。

JS-SDK 解决了移动网页能力不足的问题,通过暴露微信的接口使得 Web 开发者能够拥有更多的能力,然而在更多的能力之外,JS-SDK 的模式并没有解决使用移动网页遇到的体验不良的问题,因为它的架构还是Browser/Server,所以依然还是会出现诸如白屏、卡顿等性能问题。

# 流应用

B/S 应用除了 JSON 数据外,还需要每次从服务器加载页面 DOM、样式、逻辑代码,导致 B/S 应用的页面加载很慢,体验很差。Hybrid 混合应用是 JS 编写的需要安装的 App,架构是Client/Server,页面加载时只需获取JSON数据,体验大大提升,但是仍然需要安装、更新。那么如何实现 Hybrid 应用的即时更新呢?

所以『流应用』的概念应运而生,把之前 Hybrid 应用里的运行于客户端的 JS 代码,先打包发布到服务器,制定流式加载协议,手机端引擎动态下载这些 JS 代码到本地,并且为了第一次加载速度更快,实现了应用的边下载边运行,让 JS 应用功能体验达到原生,并且可即点即用、可直达二级页面。

这套技术的核心是要把客户端引擎预预置在手机端,于是2015年 360 手机助手内嵌了客户端引擎实现了名为『360 微应用』的流式应用,做到了应用的秒开。

# 小程序

在2015年9月,DCloud 推进微信团队开展小程序业务,演示了流应用的秒开应用、扫码获取应用、分享链接获取应用等众多场景案例,以及分享了webview体验优化的经验。随后的2016年,微信团队经过分析,放弃了HTML5中国产业联盟的标准,订制了自己的标准、自研引擎。

  • 2016 年 1 月 11 日,微信公开课,张小龙罕见露面,公布了微信应用号的计划。
  • 2016 年 9 月 21 日,微信宣布更名应用号为小程序,面向首批开发者内测。
  • 2017 年 1 月 9 日,微信公开课,小程序正式发布。

随后各大厂商陆续推出了自己的小程序平台。

然而这不是最难的,小程序作为前端开发的一个细分领域出来了,但是开发者呢?开发工具、框架、组件、模板、以及各种轮子呢... 之前好不容易写的代码让我再用小程序的技术标准重写一遍?怎么保证我的投入产出?开发者们仿佛又回到了原始社会,一切都需要重来。

小程序丢弃了国际标准组织 W3C 的 DOM 和 Window 标准,仅仅采用基础 JavaScript。这意味着 HTML5 生态的各种轮子无法复用,要完全重造一个新的小程序开发生态。

幸运的是小程序做到了,随着跳一跳引爆小程序,各大厂商跟进。越来越多的开发者加入到了小程序的技术生态中来,小程序的开发效率也在不断提高,成本也在不断降低,中小型创业公司往往会选择小程序测试自己的产品MVP,快速迭代自己的业务。

终于,国际标准之外,在中国,建立起了自己的技术生态,时至今日小程序已经拥有了数百万开发者,日活4亿,全网小程序数量超550万,已有 11 家企业入局小程序赛道,包括微信小程序、QQ 小程序、京东小程序、360 小程序、网易云小程序、美团小程序、字节跳动小程序、百度小程序、支付宝小程序、轻淘店、快应用,纷纷在小程序方面进行发力。

# 小程序的本质

看到这里,让我们回到最初的问题--小程序的本质是什么? 应该有不少同学心中已经有了答案了吧...没错,小程序本质上还是一个 Hybrid 应用(即混合模式应用)。

渲染界面的技术有三种:

  • 用纯客户端原生技术来渲染
  • 用纯 Web 技术来渲染
  • 介于客户端原生技术与 Web 技术之间的,互相结合各自特点的技术(统称 Hybrid 技术)来渲染

小程序的宿主是微信,所以不太可能用纯客户端原生技术来编写小程序 。如果这么做,那小程序代码需要与微信代码一起编包,跟随微信发版本,这种方式跟开发节奏必然都是不对的。因此,我们需要像Web 技术那样,有一份随时可更新的资源包放在云端,通过下载到本地,动态执行后即可渲染出界面。

但是,如果用纯 Web 技术来渲染小程序,在一些有复杂交互的页面上可能会面临一些性能问题,这是因为在 Web 技术中,UI渲染跟 JavaScript 的脚本执行都在一个单线程中执行,这就容易导致一些逻辑任务抢占UI渲染的资源。

最终,小程序选择了类似于微信 JSSDK 这样的 Hybrid 技术,界面主要由成熟的 Web 技术渲染,定义了一套内置组件以统一体验,并且提供一些基础和通用的能力,辅之以大量的接口提供丰富的客户端原生能力。同时,每个小程序页面都是用不同的WebView去渲染,这样可以提供更好的交互体验,更贴近原生体验,也避免了单个WebView的任务过于繁重。

开发者上传代码时,微信开发者工具直接将本地的代码文件提交到后台,由后台进行编译打包。在渲染层使用的各类组件,在逻辑层使用的各类API都是小程序基础库提供的,用户在使用小程序时会先载入基础库,接着会从CDN服务器下载小程序代码包再载入业务代码,最后完成小程序首页初始化。此后,如果小程序代码包未更新且还被保留在缓存中,则下载小程序代码包的步骤会被跳过。

这一套全新的系统使得所有的开发者都能做到:

  • 快速的加载
  • 更强大的能力
  • 原生的体验
  • 易用且安全的微信数据开放
  • 高效和简单的开发

至此相信你已经对小程序这一细分技术领域有了一个比较深入的认识了吧。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/12/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
浅谈小程序运行机制
接触小程序有一段时间了,总得来说小程序开发门槛比较低,但其中基本的运行机制和原理还是要懂的。“比如我在面试的时候问到一个关于小程序的问题,问小程序有window对象吗?他说有吧”,但其实是没有的。感觉他并没有了解小程序底层的一些东西,归根结底来说应该只能算会使用这个工具,但并不明白其中的道理。
super.x
2019/07/02
8450
【技术创作101训练营】小程序技术发展史
提到小程序相信大家已不再陌生了,如今的微信小程序是一个拥有百万级开发者,日活过4亿的庞大生态,就连苹果也跟风推出了自家的小程序平台。小程序是前端开发的一个细分领域,小程序应用更确切的说是混合模式应用,即 Hybrid应用。
薛定喵君
2021/01/16
1.1K0
【技术创作101训练营】小程序技术发展史
浅谈Hybrid
随着 Web 技术和移动设备的飞速发展,各种 APP 层出不穷,极速的业务扩展提高了团队对开发效率的要求,这个时候使用 IOS/Andriod 开发一个 APP 似乎成本有点过高了,而 H5 的低成本、高效率、跨平台等特性马上被利用起来形成了一种新的开发模式:Hybrid APP。
前端森林
2020/04/23
7.1K0
浅谈Hybrid
从微信小程序原理来看app如何搭建自己的小程序环境
还记得当初小程序刚出来爆火的场景,依附于微信确实是给我们带来了极大的便利,有着微信的流量,用完即走,无需下载,随时使用,从17年到23年,小程序已经深入人心,吃喝玩乐你都可以找到小程序的身影,疫情期间各种码的场景也给小程序带来了巨大的流量
FE情报局
2023/03/01
2.6K0
从微信小程序原理来看app如何搭建自己的小程序环境
浅谈微信小程序底层架构
其实,小程序开发过程中我们面对的是iOS和Android微信客户端和辅助开发的小程序开发者工具。根据官方文档,这三大运行环境也是有所区别的:
极乐君
2019/07/30
3.4K0
浅谈微信小程序底层架构
微信小程序基础架构浅析
作者:billgong,腾讯IEG前端开发工程师。 微信小程序,简称小程序,英文 mini program。是一种不需要下载安装即可在微信中使用的应用,用户扫描小程序码或搜索小程序即可打开,触手可及,用完即走,不用关心是否安装太多应用的问题。 小程序技术演进 内部开放微信原生能力 使用 WeixinJSBridge 预览图片 此类 API 最初是提供给腾讯内部一些业务使用,很多外部开发者发现了之后,依葫芦画瓢地使用了,逐渐成为微信中网页开发的事实标准。 JS-SDK 发布 2015 年初,微信发
腾讯技术工程官方号
2021/06/10
3K0
小程序的底层框架
原文链接:https://godbasin.github.io/2018/09/02/wxapp-technology-architecture/
李成熙heyli
2018/11/14
1.6K0
小程序的底层框架
一文说清小程序运行基本机制
近年来,各大平台纷纷上架小程序,迎来了小程序的爆发式增长。今天就来跟大家简单分享一下小程序基本的运行机制和安全机制。
Lydiasq
2023/02/13
9540
一文说清小程序运行基本机制
H5打开小程序的方案和今天看到一句话的感触
今天同事遇到一个需求,需要用H5打开小程序。且H5和小程序是属于两个不同的东西,没有交集。想了想也没什么特别好的方案。我这里根据不同的场景,汇总一下可能的方案。
terrence386
2022/07/15
1.1K0
关于小程序的一切,读这一篇就够了~
1. 小程序发展史 1.1 Native App 在智能机刚兴起的时代,网络还不是很发达,网页浏览速度也很慢,以文字为主。市面上的应用以 Native App 为主。 Native App 是基于 iOS 或者安卓的原生应用,特点是开发成本高,迭代慢,但是性能和体验很好,消息推送及时,比如 qq,微信等。 1.2 H5 2014 年 HTML5 完成标准定制,他的设计目的是为了在移动设备上支持多媒体,引入了 Video、Audio 等技术。 在网页上浏览视频变得很方便,特点是开发和发布成本低,打开方便,无
用户1097444
2022/06/29
1.3K0
关于小程序的一切,读这一篇就够了~
Hybrid App技术解析 -- 原理篇
引言 随着 Web 技术和移动设备的快速发展,Hybrid 技术已经成为一种最主流最常见的方案。一套好的 Hybrid架构方案 能让 App 既能拥有极致的体验和性能,同时也能拥有 Web技术 灵活的
前端教程
2018/07/27
1.8K0
Hybrid App技术解析 -- 原理篇
什么是小程序运行时以及它将如何颠覆传统App?
长期以来,移动互联网界一直在寻找一种既能获得Native原生的体验,又可以低门槛快速开发的技术。在这个过程中出现了很多尝试,例如React Native(RN),RN本质上是轻量化Native开发,在Native基础上做减法;H5的特点是开发成本较低,可以做到比较灵活,但缺点在基础信息获取方面(如地理位置、手机信息、播放器等)和顺滑体验方面无法做到Native的效果;
凡泰极客
2020/03/03
1.1K0
什么是小程序运行时以及它将如何颠覆传统App?
React-Native与小程序的底层框架比较
页面渲染 1.在渲染层,宿主环境会把WXML可以先转成JS对象,然后再渲染出真正的Dom树。 2.在逻辑层发生数据变更的时候,需要通过宿主环境提供的setData方法把数据从逻辑层传递到渲染层 3.对比前后差异,把差异应用在原来的Dom树上,渲染出正确的UI界面
薛定喵君
2019/11/05
3.1K0
混合开发(Hybrid App)有哪些优劣点?
从当前移动开发的实际情况来看,移动端的开发方式三分天下:纯原生(Native App)、混合开发(Hybird App)、网页应用(Web App)。
用户10245619
2023/01/04
1.2K0
小程序的底层框架
| 导语  前端的框架太多让人眼花缭乱,很多相似的地方,优秀的地方大家都会借鉴,同时又会有各自的一些特点。小程序也好,其他框架也好,理解他们的设计缘由、实现原理,还是能学到很多很多东西的。 技术选型 目前来说,页面渲染的方式主要有三种: 一、Web 渲染。 二、Native 原生渲染。 三、Web 与 Native 两者掺杂,也即我们常说的 Hybrid 渲染。 前面也说过,小程序最终的呈现形式,是 WebView + 原生组件,Hybrid 方式。我们结合之前对小程序的期望来看: 开发门槛:Web
腾讯NEXT学位
2018/12/07
7900
小程序的底层框架
详解微信原生小程序架构及同构方案
最近实习中参与了H5项目向小程序迁移的工作,在微信官方文档和一些帖子上学习了小程序运行机制和底层原理,以及与Web页面的区别,在此基础上又看了一些关于小程序同构方案的内容。以下是我个人的一些学习总结。本文内容参考
极乐君
2020/07/28
2.9K0
详解微信原生小程序架构及同构方案
凭什么小程序能力好于H5,解析双线程技术
如今我们每个人都是小程序的使用者,小到日常的健康码,大到各种政务事项办理。究其因,对于用户来讲小程序无需下载,用完即走而且其具备轻量、流畅的使用体验;对于开发者来讲便捷简单的开发流程,学习的门槛极低,这也是小程序能够逐步受到广大使用者和开发者的认可和欢迎的原因。
Onegun
2022/11/07
6620
凭什么小程序能力好于H5,解析双线程技术
宏观泛前端
最早的网页是欧洲粒子物理研究所的科学家为了方便查看和共享文档,而基于 XML(Extensible Markup Language) 创造的,这也是为什么前端最重要的全局对象被称为 document,而不是 context/page/application 的原因。当时的网页只具备文本、图片的显示和页面间相互跳转(Hyper Link)的功能,因此被称为 HTML (Hyper Text Markup Language)。
lonelydawn
2022/09/20
6020
宏观泛前端
SGADC2019 移动端高可用 Hybrid 方案解析
从2013年到2019年,支付宝一路从一个单体应用的工具型APP发展成为承载诸多生态、月活6.6亿的国内TOP2应用。面对海量业务,支付宝如何技术选型?又将如何实现业务稳定运行和快速迭代?
软件绿色联盟
2022/03/31
1.8K0
SGADC2019 移动端高可用 Hybrid 方案解析
小程序会带动Hybrid App崛起吗?
Hhybrid App顾名思义就是原生 App 与 Web App 的结合。它的壳是原生 App,但是里面放的是网页。 可以理解成,混合 App 里面隐藏了一个浏览器,用户看到的实际上是这个隐藏浏览器渲染出来的网页。
火爆的小茶壶
2022/07/26
4000
小程序会带动Hybrid App崛起吗?
相关推荐
浅谈小程序运行机制
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档