持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第31天,点击查看活动详情
今日目标
✔ 知道什么是小程序,拥有一个小程序开发者账号。
✔ 知道小程序项目目录的构成,会使用 view、scroll-view、swiper、button、image 组件。
✔ 了解小程序的开发、管理、上线流程,尝试上线一个体验版小程序。
什么是小程序
产品视角
小程序是一种不需要下载、安装即可使用的应用,它实现了应用触手可及的梦想,用户扫一扫或者搜一下就能打开应用,也实现了用完即走的理念,用户不用安装太多应用,应用随处可用,但又无须安装卸载。
用户视角
在微信里打开的应用。
开发视角
新的标签、新的 API(JS)、新的页面(代码)组织规则、新的 IDE。
周边生态
小程序与网页
- 宿主环境不同:网页运行在浏览器环境中,小程序运行在微信环境中。
- 使用 API 不同:在小程序中,无法调用 W3C 规定的 DOM 或浏览器提供的 BOM API;小程序中可以调用微信环境提供的各种 API,例如:微信支付、微信扫码、地理定位。
- 开发模式不同:网页可以直接通过各种代码编辑器 + 浏览器进行开发调试;小程序从申请小程序开发账号、安装小程序开发者工具、创建和配置小程序项目、上线到微信提供的环境等,拥有自己的一套开发模式。
注册开发账号
打开注册页面
使用浏览器打开微信公众平台网址,点击右上角的"立即注册"即可进入到小程序开发账号的注册流程。
选择帐号类型
填写账号信息
登录邮箱激活
点击激活链接
选择主体类型
主体登记信息
登录管理后台
注册完毕后可以登录小程序管理后台补充小程序的基本信息。
小程序 AppID
小程序 AppID 是用来创建小程序项目所需要的,有了 AppID 也可以调用一些高级的接口。
微信开发者工具
安装微信开发者工具
微信开发者工具是官方推荐使用的小程序开发工具,它提供的主要功能有:创建小程序项目、代码的查看和编辑、小程序功能的开发和调试、小程序的预览和发布。
扫码登录开发者工具
配置外观和代理模式
- 设置外观,或者进入开发者工具后,可以点击设置 --> 外观设置。
- 设置代理,如果电脑安装了翻墙工具,导致网络不稳定,所以推荐不使用任何代理。
演示新建小程序步骤
- 点击 + 号,新建项目。
- 填写项目信息。
预览小程序两种方式
- 在模拟器上查看项目效果。
- 在真机上预览项目效果。
开发者工具界面组成
主界面的 5 个组成部分,从上到下,到左到右,依次是:菜单栏、工具栏、模拟器、代码编辑区、调试区。
小程序项目构成
小程序目录文件数明
pages,用来存放所有小程序的页面。utils,用来存放工具性质的模块(例如:格式化时间的自定义模块)。.eslintrc.js,ESLint 相关的配置。app.js,小程序项目的入口文件。app.json,小程序应用的全局配置文件。app.wxss,小程序项目的全局样式文件。project.config.json,项目的公共配置信息。project.private.config.json,项目的私有配置信息。sitemap.json,用来配置小程序及其页面是否允许被微信索引。
小程序页面组成部分
小程序官方建议把所有的小程序页面,都存放在 pages 目录中,每个页面以单独的文件夹存在,每个页面由 4 个基本文件组成,具体如下。
.js文件,页面的脚本文件,定义页面的数据、事件处理函数、生命周期等。.json文件,当前页面的配置文件,配置页面的外观、表现等。.wxml文件,页面的模板结构文件。.wxss文件,当前页面的样式表文件。
小程序中的配置文件
常见的,小程序项目中有 4 种 json 类型的配置文件,分别如下。
- 项目根目录中的
app.json配置文件。 - 每个页面文件夹中的
.json配置文件。 - 项目根目录中的
project.config.json配置文件。 - 项目根目录中的
sitemap.json配置文件。
app.json
app.json 是当前小程序的全局配置,包括了小程序的所有页面路径、窗口外观、界面表现、底部 tab 等。
{
"pages": ["pages/index/index", "pages/logs/logs"],
"window": {
"backgroundTextStyle": "dark", // 开启下拉刷新是三个点的颜色
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#fff", // 只支持 16 进制表示的
"navigationBarTitleText": "Weixin",
"navigationBarTextStyle": "black" // 只支持 black 和 white
},
"style": "v2",
"sitemapLocation": "sitemap.json"
}
Demo 项目里面的 app.json 配置内容如下。
了解下这 4 个配置项的作用。
pages:用来记录当前小程序所有页面的路径。window:全局定义小程序所有页面的背景色、文字颜色等。style:全局定义小程序组件所使用的样式版本。sitemapLocation:用来指明 sitemap.json 的位置。
页面.json
可以对本页面的窗口外观进行配置,页面中的配置项会覆盖 app.json 中的 window 中的配置项。
project.config.json
项目配置文件,用来记录我们对小程序开发工具所做的个性化配置,例如。
setting中保存了项目相关的配置。projectname中保存的是项目名称。appid中保存的是小程序的账号 ID。
sitemap.json
配置小程序页面是否允许微信搜索,当开发者允许微信搜索时,微信会通过爬虫的形式,为小程序的页面内容建立索引。当用户的搜索关键字和页面的索引匹配成功的时候,小程序的页面将可能展示在搜索结果中。
如何新建小程序页面
- 第一种方式:在 pages 文件夹上点击鼠标右键,新建文件夹 --> 输入 home,选中 home 文件夹右键,新建 Page --> 输入 home。官方推荐文件夹名称和页面的名称一致,方便后期的维护,新建页面组件的时候,不需要输入后缀名。
- 第二种方式:在
app.json-->pages中新增页面的存放路径,小程序开发者工具即可帮我们自动创建对应的页面文件。 - 注意点:对 pages 目录下页面的删除也需要手动在 app.json 文件的 pages 数组中进行同步一下。
设置首页的两个方式
- 调整 app.json --> pages 数组中页面路径的前后顺序,即可修改项目的首页,小程序会把排在第一位的页面,当作项目首页进行渲染。
- 在
app.json中 pages 同级,配置一个新的节点 entryPagePath 节点,传入需要设置为首页的路径即可,最终小程序项目的首页,以 entryPagePath 节点设置的为准。
关于 WXML & HTML
-
是什么:WXML(WeiXin Markup Language)是框架设计的一套标签语言(组件),用来构建小程序页面的结构,其作用类似于网页开发中的 HTML。
-
WXML 和 HTML 的区别如下。
- 标签名称不同:HTML 常见的标签是 div、span、img、a,WXML 常见的标签是 view、text、image、navigator`。
- 标签属性不同:HTML
<a href="#">超链接</a>,WXML 是<navigator url="/pages/home/home"></navigator>。 - 提供了类似于 Vue 中的模板语法:例如插值表达式,判断、循环等。
关于 WXSS & CSS
-
是什么:WXSS(WeiXin Style Sheets)用于描述 WXML 的组件样式,类似于网页开发中的 CSS。
-
WXSS 和 CSS 之间的区别如下。
- 新增了 rpx 自适应尺寸单位,CSS 中需要手动进行像素单位换算,例如 REM,WXSS 在底层支持新的尺寸单位 RPX,在不同大小的屏幕上小程序会自动进行换算。
- 提供了全局的样式和局部样式,项目根目录中的
app.wxss会作用于所有小程序页面,局部页面的.wxss样式仅对当前页面生效。 - WXSS 仅支持部分 CSS 选择器,例如 .class 和 #id、element(标签选择器)、并集选择器和后代选择器、::after 和 ::before 等伪元素选择器。
小程序中的 JS 文件
小程序中的 JS 文件主要分为三大类,分别如下。
app.js,是整个小程序项目的入口文件,通过调用App()来启动整个小程序。页面.js文件,是页面的入口文件,通过调用Page()来创建小程序页面,并运行小程序页面。普通的.js文件,是普通的功能模块文件,用来封装公共的函数或属性供页面使用。
启动或渲染过程
- 小程序启动:把小程序的代码包下载到本地;加载
app.json全局配置文件;执行app.js小程序入口文件,调用App()创建小程序实例;渲染小程序首页;小程序启动完成。 - 页面渲染:加载页面的
.json配置文件;加载页面的.wxml模板和.wxss样式;执行页面的.js文件,调用Page()创建页面实例;页面渲染完成。
小程序中的组件
小程序中的组件也是由宿主环境提供的,开发者可以基于组件快速搭建出漂亮的页面结构,官方把小程序的组件分为了 9 大类,分别是:视图容器、基础内容、表单组件、导航组件、媒体组件、map 地图组件、canvas 画布组件、开发能力、无障碍访问等,常用的视图容器组件如下。
view:普通视图区域,类似于 HTML 中的 div,是一个块级元素,常用来实现页面的布局效果。scroll-view:表示可滚动的视图区域,常用来实现滚动列表效果。swiper和swiper-item:轮播图容器组件和轮播图 item 组件。
view
view 类似于 div,一般主要用来布局,实现如图的横向布局效果。
<view class="view-container">
<view>A</view>
<view>B</view>
<view>C</view>
</view>
.view-container {
display: flex;
justify-content: space-between;
}
.view-container view {
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
}
.view-container view:nth-child(1) {
background-color: lightgreen;
}
.view-container view:nth-child(2) {
background-color: lightskyblue;
}
.view-container view:nth-child(3) {
background-color: lightcoral;
}
scroll-view
<!-- scroll-x 属性:允许横向滚动 -->
<!-- scroll-y 属性:允许纵向滚动 -->
<!-- 注意:使用竖向滚动时,必须给 scroll-view 一个固定的高度 -->
<scroll-view class="scroll-container" scroll-y>
<view>A</view>
<view>B</view>
<view>C</view>
</scroll-view>
.scroll-container {
width: 100px;
height: 120px;
}
.scroll-container view {
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
}
.scroll-container view:nth-child(1) {
background-color: lightgreen;
}
.scroll-container view:nth-child(2) {
background-color: lightskyblue;
}
.scroll-container view:nth-child(3) {
background-color: lightcoral;
}
swiper 和 swiper-item
<!-- 轮播图区域 -->
<!-- indicator-dots 属性:显示面板指示点 -->
<swiper indicator-dots class="swiper-container">
<!-- 第一项 -->
<swiper-item>
<view>A</view>
</swiper-item>
<!-- 第二项 -->
<swiper-item>
<view>B</view>
</swiper-item>
<!-- 第三项 -->
<swiper-item>
<view>C</view>
</swiper-item>
</swiper>
.swiper-container {
/* 轮播图容器的高度 */
height: 150px;
}
.swiper-container swiper-item view {
height: 100%;
line-height: 150px;
text-align: center;
}
.swiper-container swiper-item:nth-child(1) view {
background-color: lightgreen;
}
.swiper-container swiper-item:nth-child(2) view {
background-color: lightblue;
}
.swiper-container swiper-item:nth-child(3) view {
background-color: lightcoral;
}
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| indicator-dots | boolean | false | 是否显示面板指示点 |
| indicator-color | color | rgba(0, 0, 0, .3) | 指示点颜色 |
| indicator-active-color | color | #000000 | 当前选中的指示点颜色 |
| autoplay | boolean | false | 是否自动切换 |
| interval | number | 5000 | 自动切换时间间隔 |
| circular | boolean | false | 是否采用衔接滑动 |
text 和 rich-text
-
常用的基础内容组件如下。
text组件:文本组件,类似于HTML中的span标签,是一个行内元素。rich-text组件:富文本组件,支持把HTML字符串渲染为WXML结构。
-
通过
text组件的user-select属性,实现长按选中文本内容的效果。
<!-- 常用的基础内容组件 text 和 rich-text 的用法 -->
<view>
手机号支持长按选中效果
<text user-select>13812345678</text>
</view>
- 通过
rich-text组件的nodes属性节点,把 HTML 字符串渲染为对应的 UI 结构。
<!-- 应用场景 -->
<rich-text nodes="<h2 style='color: red'>我是h2标题</h2>"></rich-text>
button
Button 组件的详细文档,功能比 HTML 中的 button 按钮丰富,通过 open-type 属性可以调用微信提供的各种功能(客服、转发、获取用户授权、获取用户信息等)。
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| size | String | default | 按钮的大小 |
| type | String | default | 按钮的样式类型 |
| plain | Boolean | false | 按钮是否镂空,背景色透明 |
| disabled | Boolean | false | 是否禁用 |
| loading | Boolean | false | 名称是否带 loading 图标 |
<view>~~~ 通过 type 指定按钮类型 ~~~</view>
<button>默认按钮</button>
<button type="primary">主色调按钮</button>
<button type="warn">警告按钮</button>
<view>~~~ size="mini" 小尺寸按钮 ~~~</view>
<button size="mini">默认按钮</button>
<button size="mini" type="primary">主色调按钮</button>
<button size="mini" type="warn">警告按钮</button>
<view>~~~ plain 镂空效果 ~~~</view>
<button plain size="mini">默认按钮</button>
<button plain size="mini" type="primary">主色调按钮</button>
<button plain size="mini" type="warn">警告按钮</button>
image
官方文档,src 属性支持本地和网络上的图片,mode 属性指定图片的裁剪、缩放的模式。
<!-- 1. 空图片,默认 320 * 240 -->
<image></image>
<!-- 2. 使用 src 指向本地图片路径 -->
<image src="/images/icon.jpg"></image>
<!-- 3. 使用 src 指向网络图片路径 -->
<image src="http://www.itcast.cn/2018czgw/images/logo.png"></image>
image {
border: 1px solid red;
}
image 组件的 mode 属性用来指定图片的裁剪和缩放模式,常用的 mode 属性值如下。
| mode 值 | 说明 |
|---|---|
| scaleToFill | 默认值,缩放模式,不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素。 |
| aspectFit | 缩放模式,保持纵横比缩放图片,使图片的长边能完全显示出来并顶满 image,短边自适应。 |
| widthFix | 缩放模式,图片顶满 image 的宽度,image 的高度自动跟着图片等比变化。 |
| heightFix | 缩放模式,图片顶满 image 的高度,image 的宽度自动跟着图片等比变化。 |
小程序协同工作
了解权限管理需求
在中大型的公司中,人员的分工非常仔细:同一个小程序项目,一般会有不同岗位、不同角色的员工同时参与设计与开发,此时出于管理需要,我们迫切需要对不同的岗位、不同的角色的员工的权限进行边界的划分,使他们能够高效的进行协同开发。
小程序的开发流程如下。
小程序成员的管理
小程序成员管理体现在管理员对小程序项目成员及体验成员的管理,后台入口。
- 项目成员:表示参与小程序开发、运营的成员,他们也可以登陆这个小程序管理后台。管理员添加项目成员的时候,也可以设置对应的权限,例如运营者权限、开发者权限、数据分析者等。
- 体验成员:表示参与小程序内测体验的成员,可使用体验版小程序,但不属于项目成员,管理员及项目成员均可添加、删除体验成员。
开发者的权限说明
- 不同项目成员对应的权限,项目成员分为三个角色: 运营成员、开发人员、数据分析者。
2. 开发者的权限说明如下。
- 登录权限:可登录小程序的后台管理,无需要管理员确认。
- 开发者权限:可使用小程序开发者工具及对小程序的功能进行代码管理。
- 管理者权限:例如设置小程序服务器域名。
- 体验者权限:可使用体验版小程序。
如何添加对应成员
主要分为项目成员和体验成员。
了解小程序发布
了解小程序的版本阶段
-
软件开发过程中,根据时间节点的不同,会产出不同的软件版本。
- 开发版本:开发者编写代码的同时,对项目代码进行自测。
- 体验版本:直到程序达到一个稳定可靠,可体验的状态时,开发者把体验版本给到产品经理和测试人员进行体验测试。
- 正式版本:最后修复完程序的 bug 后,发布正式版供外部用户使用。
-
小程序的版本,版本审核是微信官方进行审核,审核周期一般是 3 ~ 7 天。
了解发布上线主要步骤
- 小程序发布上线一般要经过上传代码 --> 提交审核 --> 发布这三个步骤。
- 上传代码:点击开发者工具顶部工具栏中的“上传”按钮,填写版本号以及项目备注。
- 在后台查看上传之后的版本,登录小程序管理后台 --> 管理 --> 版本管理 --> 开发版本,即可查看刚才上传的版本。
-
提交审核。
- 为什么需要提交审核:为了保证小程序的质量,以及符合相关的规范,小程序的发布是需要经过腾讯官方审核的
- 提交审核的方式:在开发版本的列表中,点击
提交审核按钮之后,按照页面提示填写相关的信息,就能把小程序提交到腾讯官方进行审核
- 发布,审核通过之后,管理员的微信中会收到小程序通过审核的通知,此时在审核版本的列表中,点击
发布按钮之后,即可把审核通过的版本发布为线上版本,供所有小程序用户访问和使用。
基于小程序码进行推广
- 相对于普通二维码来说,小程序码的优势:在样式上更具有辨识度和视觉冲击力;能够更加清晰的树立小程序的品牌形象;可以帮助开发者、商家更好的推广小程序。
- 获取小程序码的 5 个步骤:登录小程序管理后台 --> 设置 --> 基本设置 --> 基本信息 --> 小程序码及线下物料下载。
查看小程序的运营数据
- 在小程序后台查看:登录小程序管理后台,点击侧边栏的"统计",点击相应的 tab 可以看到相关的数据。
- 使用小程序数据助手查看:打开微信,搜索“小程序数据助手”,查看已发布的小程序相关的数据。