首先看一下整体的讲解思维导图
一、小程序发展史
简单来说从微信中的webview用的人越来越多之后,微信就已经出了一个相关的API了,就是JS-SDK
但是由于移动网页体验不良,微信为了提升用户体验,决定开发一个全新的系统:
它需要使得所有的开发者都能做到:
- 快速的加载
- 更强大的能力
- 原生的体验
- 易用且安全的微信数据开放
- 高效和简单的开发
这就是小程序的由来。可以理解为运行在微信中加强版的网页应用。
二、小程序与移动web的区别
1.渲染机制
网页中DOM与脚本是单线程渲染,长时间的脚本运行会导致页面失去响应,而小程序是分开执行。
网页中有DOM、BOM浏览器对象,而小程序中没有,这意味着一些常用的JS库在小程序中无法使用,如jQuery、 Zepto
2.运行环境
网页运行在这种浏览器中,PC 端需要面对 IE、Chrome、QQ浏览器等,在移动端需要面对Safari、Chrome以及 iOS、Android 系统中的各式 WebView
而小程序运行环境如下
| 运行环境 | 逻辑层 | 渲染层 |
|---|---|---|
| IOS | JavaScriptCore | WKWebView |
| 安卓 | V8 | chromium定制内核 |
| 小程序开发者工具 | NWJS | Chrome WebView |
3.开发语言
网页中一个页面一般由JS、HTML、CSS等3部分组成,可使用一些常用的UI框架: element-ui、iview等,JS框架: Vue、React、Angular 快速开发。
而小程序的一个页面由以下4个文件构成 .json、.wxml、.wxss、.js
.json配置
.json文件在小程序中可以理解为一种静态配置,如配置导航栏背景色、导航栏文字颜色
示例app.json
{
// 用于描述当前小程序所有页面路径,这是为了让微信客户端知道当前你的小程序页面定义在哪个目录
"pages":[
"pages/index/index",
"pages/logs/logs"
],
// 定义小程序所有页面的顶部背景颜色,文字颜色定义等
"window":{
"backgroundTextStyle":"light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "Weixin",
"navigationBarTextStyle":"black"
}
}
WXML 模板
网页编程采用的是 HTML + CSS + JS 这样的组合,其中 HTML 是用来描述当前这个页面的结构,CSS 用来描述页面的样子,JS 通常是用来处理这个页面和用户的交互。
在小程序中也有同样的角色,其中 WXML 充当的就是类似 HTML 的角色。打开 pages/index/index.wxml,你会看到以下的内容:
<view class="container">
<view class="userinfo">
<button wx:if="{{!hasUserInfo && canIUse}}"> 获取头像昵称 </button>
<block wx:else>
<image src="{{userInfo.avatarUrl}}" background-size="cover"></image>
<text class="userinfo-nickname">{{userInfo.nickName}}</text>
</block>
</view>
<view class="usermotto">
<text class="user-motto">{{motto}}</text>
</view>
</view>
和 HTML 非常相似,WXML 由标签、属性等等构成。但是也有很多不一样的地方
WXSS
WXSS对应网页中的CSS,用于样式修饰,与 CSS 相比,WXSS 扩展的特性有:
- 尺寸单位
- 样式导入
尺寸单位
- rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。
设备 | rpx换算px (屏幕宽度/750) | px换算rpx (750/屏幕宽度) -|-|-|- iPhone5 | 1rpx = 0.42px | 1px = 2.34rpx iPhone6 | 1rpx = 0.5px | 1px = 2rpx iPhone6 Plus | 1rpx = 0.552px | 1px = 1.81rpx
样式导入
- 使用@import语句可以导入外联样式表,@import后跟需要导入的外联样式表的相对路径,用;表示语句结束。
/** common.wxss **/
.small-p {
padding:5px;
}
/** app.wxss **/
@import "common.wxss";
.middle-p {
padding:15px;
}
查看更多WXSS相关内容 戳这里
JS逻辑交互
小程序中的时间绑定与原生JS绑定逻辑不同,小程序事件
体验小程序
开发者可使用微信客户端(6.7.2 及以上版本)扫码下方小程序码,体验小程序。小程序源码
三、如何实现的原生交互
web是无法调用原生的方法的,比如在手机上唤起键盘、调用文件系统等。那为什么用小程序里面一些API就能用了呢。这里面就涉及到了 JSBridge,见名知意,web应用与原生Native开发之间的桥梁。图解如下:(图片引用自大佬 草榴社区 的文章)
这里简单图示一下小程序实现原生交互的原理,JSBridge更多讲解可去看大佬文章 戳这里
四、开放能力
接下来看看小程序的开放能力到底有多强大,我这里简单梳理了一下我项目中用到的一些接口,全部API 戳这里
五、开始开发
了解了小程序的开放能力,与网页开发的差异之后,接下来开始实战开发了。上面看到小程序的结构与传统的网页开发还是有些差异的,如果使用小程序原生开发,可以使用 微信开发者工具 进行开发。不过我还是觉得这样学习成本也不小。
于是找了一下可以使用类似vue语法开发小程序的js框架:wepy 20K+、mpvue 20K 以上两种是支持Vue语法的小程序框架,也是本人使用过的两种,更多小程序相关资源 戳这里 - awesome-wechat-weapp
六、发布
自开发小程序发布
1.提交审核
登录微信公众平台小程序,进入开发管理,开发版本中展示已上传的代码,管理员可提交审核或是删除代码。
2.配置功能页面
登录微信公众平台小程序,进入开发管理,开发版本中展示已上传的代码,管理员可提交审核或是删除代码。
3.完成提交
提交审核完成后,开发管理页中审核版本模块展示审核进度。
代码发布
代码审核通过,需要开发者手动点击发布,小程序才会发布到线上提供服务。
注意:
内测期间,代码发布按钮不可点击。
第三方品台小程序发布
概述:
第三方平台开发者可以通过调用微信开放平台的接口能力,为公众号或小程序的运营者提供账号申请、小程序创建、技术开发、行业方案、活动营销、插件能力等全方位服务。同一个账号的运营者可以选择多家适合自己的第三方为其提供产品能力或委托运营。
流程:
第一步:绑定开发小程序
(1)第三方平台的开发人员需先到微信公众平台(mp.weixin.qq.com)申请一个普通的小程序并完善小程序的头像、昵称、简介、服务类目等信息。
(2)进入微信开放平台,在第三方平台详情中,将该小程序添加为开发小程序。
注意: 绑定为开发小程序后,该小程序的在开发工具中上传,代码会直接上传到开放平台,不会上传到公众平台。
第二步:小程序模板的开发和上传
使用开发小程序的开发者微信号登录微信开发者工具,开发者工具中按照正常的小程序开发流程进行代码开发和调试。开发完成后,在开发工具中点击上传。使用详见:第三方平台代开发小程序
第三步:添加到小程序模板库,获得模板 ID
从开发者工具中上传的代码,会先存在草稿箱中,每个开发小程序只保留最新一份上传记录。开发者可将草稿箱中的代码添加到小程序模板库中,小程序模板库中的模板不会被覆盖。最多可以有200个代码模板,添加后可以获得模板 ID(TemplateID)。
第四步:调用接口,为旗下授权的小程序部署代码
接口说明
第三方平台在开发者工具上开发完成后,可点击上传,代码将上传到开放平台草稿箱中,第三方平台可选择将代码添加到模板中,获得代码模板 ID 后,可调用以下接口进行代码管理
小结
小程序基于微信运行,无需安装,快捷方便。丰富的开放能力让小程序可以做越来越多的事情。开发成本低,让小商家也能有自己的品牌,降低他们在各大电商平台的运营维护跟推广的成本。
为商家降低成本,提供线上的销售平台,实打实的帮助商家把买卖做好做大。这可能就是我做小程序的最终目的吧。
以上就是本次分享的全部内容了。以下是相关参考链接