和大家聊聊什么是小程序呢_小程序是做什么的

和大家聊聊什么是小程序呢_小程序是做什么的介绍了什么是小程序,以及小程序的特点以及发展优势

前言

作为本专栏的开篇之作,想了想觉得还是先给大家分享一篇关于小程序的介绍,以及小程序的生态支持,让我们先了解,什么是小程序,它能做什么,以及小程序和 普通应用的区别是什么?阅读完下面文章后,相信大家会对小程序有一些新的认识。


1. 什么是小程序?

在 2016 年的「微信公开课 Pro」演讲中,微信事业群总裁张小龙这样描述了小程序的前景与未来:

小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无须安装卸载

1.1 历史:

小程序概念在国内是首先由腾讯微信提出的。


2016年9月21日微信小程序首个内测版本公布并邀请大量的开发者进行尝试。

1.2.介绍

微信定位的小程序是一种寄生在原生app中不同于网页的微应用。他可以通过授权得到权限直接调用原生app中的api实现与原生app开发同样的体验,并且小程序渲染的页面不同于html页面,他并不是web网页,组件也是半原生混合的形式渲染到网页的,这样的小程序在app中的运行速度要快于网页。另外一点就是小程序本身相当于对当前的app进行功能扩展,所以整体的代码量占用的空间非常小。而且所有的资源不同于网页都是在客户端本地进行加载,并且有调用摄像头,文件管理,手机蓝牙,陀螺仪,重力感应,指纹设备,截图,震动,等等高级功能,他跨越了浏览器应用的界限让我们在app内部可以快速创建大量的微应用,对于微信来说他大大降低了自身应用建设成本,对于开发者来说在微信中开发一个小程序更加容易获得流量,因为微信有八亿活跃用户群体。微信小程序的出现可以算是国内互联网发展的一次革命性的跨越。

1.3.小程序市场竞争

小程序本身概念提出并在腾讯实现之后,个大厂商分别效仿研发自家小程序,现在活跃在线的小程序厂商有:

1:微信小程序
2:支付宝小程序
3:钉钉小程序
4:百度小程序
5:字节跳动小程序
6:360小程序
7:QQ 小程序

不过目前主流使用的小程序还是微信小程序和支付宝小程序

1.4 小程序与普通网页开发的区别

小程序的主要开发语言是 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 的微信客户端,以及用于辅助开发的小程序开发者工具,小程序中三大运行环境也是有所区别的,如下:

运行环境 逻辑处理层 视图渲染层
ios JavaScript Core WKWeb View
Android X5 JSCore X5浏览器
小程序开发者工具 NWJS Chrome WebView

2.小程序与 原生App 以及 H5 的区别?


原生App(C/S 架构):

原生应用也被叫做 Native App,相比于 H5 应用通过前端三大件进行实现不同,原生应用主要会采用 iOS 与 Android 的专有语言 Object-C(或 Swift),Java(或 Kotlin)进行实现定制化开发,大多我们所常见的国民应用,比如微信,支付宝等都属于这种原生应用。

既然被叫做 原生应用,就像为操作系统量身打造的一样,天然在性能与体验上具备优秀的潜质,也有组件库丰富,接口支持完善等各种优势特点。但原生应用最大的缺陷就是不能跨平台研发,以目前的主流市场为例,必须要支持 iOS 与 Android 两个主流平台。所以原生应用的使用场景是,对高性能,高权限有使用要求的生态圈。

H5(B/S架构):

其实 H5 也通常可以被视为一种 Web App,相比于我们在桌面端浏览器中打开的网页,主要是增加了一些响应式的设计与交互优化,从而使得这些网页更适合在移动端的浏览器中显示运行。既然是网页应用,那依然是基于 JavaScript,CSS 和 HTML 进行实现的,由于是基于各类前端技术栈进行实现,最大的好处就是快速、简单、方便,且有各种开发文档提空支持。

同样,作为 H5 的缺点与优点也是并存的,比如由于技术已经很成熟了,对于前端经验欠缺的新人来说,面对各式各样的框架,模块、任务管理工具,UI 库可能会出现无从下手的问题;此外相比于原生应用,对于系统权限的获取(比如数据缓存能力,网络通信状态等)都显得比较鸡肋,当低性能的设备加载包含复杂逻辑的页面时,会出现明显的卡顿与延迟问题。

混合应用:

混合应用一般被称为 Hybrid App。简单来说,混合应用就是将原生功能封装成对应的 JS 接口,在前端使用 H5 来开发对应的 App (即 H5 作为内容+原生应用作为壳) ,进行的一个套壳应用,看上去虽然是一个移动原生应用整体,但实际的页面还是网页,一套代码可以生成 iOS 与 Android 两种安装包,开发成本较低。

小程序:

严格意义上来说,小程序并不属于以上 3 种应用的任何一种。小程序主要通过 JavaScript 与 CSS 这种常见的前端技术进行开发,但又没有完全使用 HTML 进行实现,在不同的操作系统中,JavaScript 代码分别运行在 iOS 的 JavaScriptCore 与 Android 的 X5 JSCore 中,各家小程序平台或多或少都有一部分自研的核心,因此渲染视图层的组件也有所不同。

  • 具备跨平台的能力,一套代码可以在 iOS 与 Android 两个平台中运行;
  • 远超过 H5 的体验(支持本地缓存,Webview,有丰富的组件与支持库);
  • 能获取更多系统权限,完成更加丰富的产品设计;
  • 可以避免 DOM 泄露(不使用常用的 window 对象与 document 对象);
  • 开发简单,上手成本低(比如 FinClip 提供了 FIDE 与开发文档);

唯一需要注意的一点是:

小程序属于 寄生应用,简单来说,就是需要依托在特定的平台基座上,才能运行,如微信小程序,只能运行在微信的基座上。
在这里插入图片描述

3.什么应用场景需要采用小程序开发

根据大量的开发案例来说,需要符合「逻辑简单,使用低频,对性能要求不极致」的应用场景,更加适合使用小程序进行研发。

「逻辑简单」 是指应用的操作逻辑并不十分复杂,各类生活服务(如打车,订餐,查地图与导航等等)都需要给用户提供简单清晰的操作逻辑,而这一类也天然的符合起初小程序「用完即走」的定义,因此十分符合使用小程序研发。一些逻辑复杂的应用场景想要通过小程序进行适配,就可能会面临更多的设计与研发困难,同时在性能和体验也可能会面对更多需要解决的问题。

「使用低频」 是指小程序的使用频率不应该太高,比如社交类的钉钉或飞书,金融类的掌上生活或浦大喜奔,媒体类的网易云音乐或斗鱼都不太适合使用小程序进行重新设计。对于用户使用的频率较高的应用来说,直接打开应用进行体验的步骤肯定最快的,此外由于某些行业的特殊性质(比如具备交易,支付等能力)要求,对于安全性与保密性的首选风险判断原则,也不宜使用常见的小程序进行设计。

「对性能要求不极致」 是指由于小程序始终存在于某个独立应用(也被称为宿主应用)中,考虑到目前的性能与研发所限制,暂时不太适合开发对于这两者有更高要求的移动应用。比如把原神,王者荣耀这样的游戏应用通过小程序进行重新设计,在目前来说肯定是不现实的。


总结

以上就是给大家带来的有关 小程序 的介绍,后续将会继续在本专栏为大家带来更多有关小程序的内容知识点分享。


🚵‍♂️ 博主座右铭:向阳而生,我还在路上!
——————————————————————————————
🚴博主想说:将持续性为社区输出自己的资源,同时也见证自己的进步!
——————————————————————————————
🤼‍♂️ 如果都看到这了,博主希望留下你的足迹!【📂收藏!👍点赞!✍️评论!】
——————————————————————————————

今天的文章和大家聊聊什么是小程序呢_小程序是做什么的分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/87358.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注