分享好友 最新动态首页 最新动态分类 切换频道
# 小程序简介
2024-12-26 19:20

小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验。

# 小程序简介

​小程序并非凭空冒出来的一个概念。当微信中的 WebView 逐渐成为移动 Web 的一个重要入口时,微信就有相关的 JS API 了。

代码清单1-1 使用 WeixinJSBridge 预览图片

​代码1-1是一个调用微信原生组件浏览图片的JS API,相比于额外引入一个JS图片预览组件库,这种调用方式显得非常简洁和高效。

​实际上,微信官方是没有对外暴露过如此调用的,此类 API 最初是提供给腾讯内部一些业务使用,很多外部开发者发现了之后,依葫芦画瓢地使用了,逐渐成为微信中网页的事实标准。2015年初,微信发布了一整套网页开发工具包,称之为 JS-SDK,开放了拍摄、录音、语音识别、二维码、地图、支付、分享、卡券等几十个API。给所有的 Web 开发者打开了一扇全新的窗户,让所有开发者都可以使用到微信的原生能力,去完成一些之前做不到或者难以做到的事情。

同样是调用原生的浏览图片,调用方式如代码清单1-2所示。

代码清单1-2 使用 JS-SDK 调用图片预览组件

​JS-SDK是对之前的 WeixinJSBridge 的一个包装,以及新能力的释放,并且由对内开放转为了对所有开发者开放,在很短的时间内获得了极大的关注。从数据监控来看,绝大部分在微信内传播的移动网页都使用到了相关的接口。

​JS-SDK 解决了移动网页能力不足的问题,通过暴露微信的接口使得 Web 开发者能够拥有更多的能力,然而在更多的能力之外,JS-SDK 的模式并没有解决使用移动网页遇到的体验不良的问题。用户在访问网页的时候,在浏览器开始显示之前都会有一个白屏的过程,在移动端,受限于设备性能和网络速度,白屏会更加明显。我们团队把很多技术精力放置在如何帮助平台上的Web开发者解决这个问题。因此我们设计了一个 JS-SDK 的增强版本,其中有一个重要的功能,称之为“微信 Web 资源离线存储”。

​以下文字引用自内部的文档(没有最终对外开放):

微信 Web 资源离线存储是面向 Web 开发者提供的基于微信内的 Web 加速方案。

通过使用微信离线存储,Web 开发者可借助微信提供的资源存储能力,直接从微信本地加载 Web 资源而不需要再从服务端拉取,从而减少网页加载时间,为微信用户提供更优质的网页浏览体验。每个公众号下所有 Web App 累计最多可缓存 5M 的资源。

​这个设计有点类似 HTML5 的 Application Cache,但在设计上规避了一些 Application Cache的不足。

​在内部测试中,我们发现 离线存储 能够解决一些问题,但对于一些复杂的页面依然会有白屏问题,例如页面加载了大量的 CSS 或者是 JavaScript 文件。​除了白屏,影响 Web 体验的问题还有缺少操作的反馈,主要表现在两个方面:页面切换的生硬和点击的迟滞感。

​微信面临的问题是如何设计一个比较好的系统,使得所有开发者在微信中都能获得比较好的体验。这个问题是之前的 JS-SDK 所处理不了的,需要一个全新的系统来完成,它需要使得所有的开发者都能做到:

- 快速的加载

- 更强大的能力

- 原生的体验

- 易用且安全的微信数据开放

- 高效和简单的开发

这就是小程序的由来。

​小程序的主要开发语言是 JavaScript ,小程序的开发同普通的网页开发相比有很大的相似性。对于前端开发者而言,从网页开发迁移到小程序的开发成本并不高,但是二者还是有些许区别的。

​网页开发渲染线程和脚本线程是互斥的,这也是为什么长时间的脚本运行可能会导致页面失去响应,而在小程序中,二者是分开的,分别运行在不同的线程中。网页开发者可以使用到各种浏览器暴露出来的 DOM API,进行 DOM 选中和操作。而如上文所述,小程序的逻辑层和渲染层是分开的,逻辑层运行在 JSCore 中,并没有一个完整浏览器对象,因而缺少相关的DOM API和BOM API。这一区别导致了前端开发非常熟悉的一些库,例如 jQuery、 Zepto 等,在小程序中是无法运行的。同时 JSCore 的环境同 NodeJS 环境也是不尽相同,所以一些 NPM 的包在小程序中也是无法运行的。

​网页开发者需要面对的环境是各式各样的浏览器,PC 端需要面对 IE、Chrome、QQ浏览器等,在移动端需要面对Safari、Chrome以及 iOS、Android 系统中的各式 WebView 。而小程序开发过程中需要面对的是两大操作系统 iOS 和 Android 的微信客户端,以及用于辅助开发的小程序开发者工具,小程序中三大运行环境也是有所区别的,如表1-1所示。

表1-1 小程序的运行环境

​网页开发者在开发网页的时候,只需要使用到浏览器,并且搭配上一些辅助工具或者编辑器即可。小程序的开发则有所不同,需要经过申请小程序账号、安装小程序开发者工具、配置项目等等过程方可完成。

开发者可使用微信客户端(6.7.2 及以上版本)扫码下方小程序码,体验小程序。

查看小程序示例源码

最新文章
“一起黑客网”揭开盗号集团内幕
  ◆ 600元终身学习盗号教程  批量盗各类网游帐号演示、制作钓鱼网站,每天收获上千QQ、600元终身学习盗号教程近日,一位对黑客技术一知半解的读者晓峰向记者介绍了一起黑客网(http://www.17hack.com),称无意中进入后一看是黑客技术
硬盘分区怎么改成mbr
在计算机领域,硬盘分区格式的转换是一个常见的操作,特别是在需要将GPT分区转换为MBR分区时。GPT(GUID分区表)和MBR(主引导记录)是两种不同的磁盘分区样式,各自具有不同的特点和适用场景。本文将详细介绍如何将硬盘分区从GPT改为MBR。
五种选择的可视化工具,用于探索Kafka
Apache Kafka是一个分布式流处理平台,能够处理大量实时数据。它广泛用于构建实时数据管道、消息队列和事件驱动的应用程序。Kafka的可视化工具可以帮助用户监控和管理Kafka集群,并更好地理解Kafka数据流。以下是对五种流行的Kafka可视化工
数智赋能 融合创新:数字化转型激发教育变革新动能丨IFIE2022·分论坛二
  2022年,教育部启动教育数字化战略行动,推出国家智慧教育公共服务平台,以推进技术与教育深度融合。教育数字化转型将通过创新教学模式、丰富资源供给、改革评价方式、优化教育治理等路径重塑数字化人才培养体系,重构智慧教育发展生态
外链哪家强?打造最佳外链计划!
1. 定义目标和受众明确定义目标受众和外链获取策略的目标。这有助于指导外链建设活动的规划和执行。2. 竞争对手分析分析竞争对手的外链档案,了解它们的优势和劣势。这提供见解,以识别潜在的外链机会并制定差异化的策略。3. 关键词研究确
滁州集成灶全国各市区售后服务热线/故障维修客服中心 - 焦点 - 百科知识-蓝心网
滁州集成灶售后服务电话-400各市区网点电话:400-658-8618滁州集成灶售后服务电话-400各市区网点电话尊敬的客户您好!这里是滁州集成灶售后服务电话-400各市区网点电话,如果您在使用过程中有什么问题,请拨打全国24小时服务热线电话。人工
平面广告设计的最实用技巧
如何在短时间内做一个出彩而效果又好的广告设计图?这是一个平面广告设计师日常面临的问题,下面小编为大家分享广告设计的8大技巧,为你的设计提供一些思路。平面广告设计8大技巧01主题明确02突出重点文字03符合阅读习惯04用最短的时间激起
免费资源网站大盘点,7个强大工具你绝对不能错过!
接下来,想要对照片进行简单处理吗?一键抠图(https://www.yijiankoutu.com/)就是这样一个完美的网站。无论是想去掉图片上多余的物品,还是需要把自己从合成照中抠出来,它都能轻松搞定。它还支持在线更换背景和多种图片处理功能,比如格
PanDownload:百度网盘不限速下载工具
百度云是我们用来下载资料的重要工具之一,但是百度云官方客户端的下载速度一直很让人郁闷,无法提供满速下载。当然我们chrome插件网之前有专门写过一篇文章还在为百度网盘下载速度太慢烦恼?chrome浏览器插件帮你解决!里面有介绍过一些常
除了宝塔面板,Linux下常见的web一键包运行环境和控制面板汇总
linux下的面板或者web运行环境还是有很多的,比如宝塔面板linux版本就非常受欢迎。但是,你不要以为只有宝塔面板,其实还有很多其他的面板或者web运行环境,比如说国内的AppNode、AMH,可惜wdcp不给力了,要不然也是一个非常好的面板。当然
相关文章
推荐文章
发表评论
0评