微信小程序第一天
1. 什么是小程序
1.1 小程序的概念
小程序是一种不需要下载、安装即可使用的应用,它实现了应用触手可及的梦想,用户扫一扫或者搜一下就能打开应用,也实现了用完即走的理念,用户不用安装太多应用,应用随处可用,但又无须安装卸载
- 特点:无需下载(并非不下载,而是小程序体积非常小,用户感知不到下载的过程 打开任意一个小程序(2MB))、无需卸载
- 理念:用完即走(让用户在短时间内完成某件操作,用户离开小程序即可,并不需要关注小程序本身)
- 入口:扫一扫、搜一下、群聊……
1.2 小程序产生的目的
拦截用户流量入口,今后,用户每天的大多数应用需求,都可以从微信小程序中获得
2. 小程序与普通网页开发以及APP的区别
-
运行环境不同
网页
运行在浏览器环境
中小程序
运行在微信环境
中App
运行在手机操作系统
中
-
API
不同- 由于运行环境的不同,所以小程序中,
无法调用 DOM 和 BOM 的 API
- 但是,在小程序中可以调用微信环境提供的各种 API,例如:
- 微信支付
- 微信扫码
- 地理定位
App
的 API 是手机操作系统给提供
- 由于运行环境的不同,所以小程序中,
-
开发模式不同
- 网页的开发模式:
代码编辑器
+浏览器
- 小程序拥有自己的一套标准开发模式
申请小程序开发账号
安装小程序开发者工具
创建和配置并开发小程序项目
在开发者工具中对代码进行上线
App
开发模式需要调用IOS
和Android
的组件库
- 网页的开发模式:
3. 小程序开发的流程
参考网址:微信公众平台
-
注册:在微信公众平台注册小程序,完成注册后可以同步进行信息完善和开发
- 在实际开发中,注册通常由运营、产品经理、项目经理进行注册
- 并不是前端程序员来进行注册
-
小程序信息完善:填写小程序基本信息,包括名称、头像、介绍及服务范围等
- 在实际开发中,完善小程序的基本信息,通常是由运营、项目经理、产品经理进行完善
- 前端程序员不要更改这些的基本信息
-
开发小程序:完成小程序开发者绑定、开发信息配置后,开发者可下载开发者工具、参考开发文档进行小程序的开发和调试
- 前端程序员主要战场
- 在实际开发中,开发一个小程序,首先需要将自己的微信号给相关的负责人绑定到注册的小程序中,才能够进行开发
- 下载开发者工具
- 参考开发文档进行小程序的开发
-
提交审核和发布:完成小程序开发后,提交代码至微信团队审核,审核通过后即可发布(公测期间不能发布)
- 在实际开发中,小程序的发布和上线,可能是前端程序员或者相关的负责人进行发布和上线
- 开发好项目以后,需要确认是否是由前端进行上线
4. 注册小程序开发账号的流程
需要在微信公众平台注册小程序账号
微信公众平台:微信公众号平台
微信公众号实际上分为 4 类:订阅号(就是咱们平台聊天时候说的公众号)、服务号、小程序、企业微信
-
点击注册按钮
使用浏览器打开 微信公众平台 网址,点击右上角的 “立即注册” 即可进入到小程序开发账号的注册流程
- 选择注册的帐号类型
-
填写账号信息
- 邮箱不能被个人微信绑定
- 邮箱激活
- 点击链接激活账号
- 选择主体类型
- 主体登记信息
- 注册完毕
5. 获取小程序 AppID
相当于小程序在微信中的“身份证”,有了 AppID ,微信客户端才能确定小程序“身份”,并使用微信提供的高级接口
- 用来创建小程序项目
- 调用一些高级的接口
6. 微信开发者工具
6.1 安装微信开发者工具
-
了解微信开发者工具
微信开发者工具是官方推荐使用的小程序开发工具,它提供的主要功能如下:
- 快速创建小程序项目
- 代码的查看和编辑
- 对小程序功能进行调试
- 小程序的预览和发布
-
下载并安装微信开发者工具
- 推荐下载和安装最新的稳定版
Stable Build
的微信开发者工具 - 微信开发者工具下载地址
- 安装方式: 下一步 --> 下一步
- 推荐下载和安装最新的稳定版
6.2 扫码登录到微信开发者工具
6.3 设置外观和代理
-
为什么需要代理设置 ?
- 因为部分同学可能电脑安装了网络加速器或者翻墙工具,导致网络不稳定
- 为了防止加速器造成网络的不稳定,所以推荐代理设置为 不使用任何代理
6.4 演示新建小程序的步骤
-
点击 + 号,新建项目
-
填写项目信息
6.5 预览小程序的两种方式
-
在模拟器上查看项目效果
-
在真机上预览项目效果
6.6 开发者工具主界面的 5 个组成部分
-
主界面的 5 个组成部分,从上到下,到左到右,依次是
- 菜单栏
- 工具栏
- 模拟器
- 代码编辑区
- 调试区
7. 小程序项目的构成
7.1 小程序目录的构成
pages
用来存放所有小程序的页面utils
用来存放工具性质的模块(例如:格式化时间的自定义模块)app.js
小程序项目的入口文件 — main.jsapp.json
小程序项目的全局配置文件app.wxss
小程序项目的全局样式文件project.config.json
项目的配置文件sitemap.json
用来配置小程序及其页面是够允许被微信索引 – SEO – 搜索引擎优化
- json 文件在小程序中是配置文件
- 不能写注释
- 键和值都必须是双引号
- 不能出现多余的逗号
7.2 小程序页面的组成部分
vue 单文件组件:3 个部分:template 、script、style
小程序官方建议把所有的 小程序页面,都存放在 pages 目录中,每个页面以单独的文件夹存在
其中,每个页面 由 4 个基本文件
组成,他们分别是:
.js
文件 – 页面的脚本文件,存放页面的数据、事件处理函数、生命周期等.json
文件 – 当前页面的配置文件,配置页面的外观、表现等.wxml
文件 – 页面的模板结构文件.wxss
文件 – 当前页面的样式表文件
7.3 认识小程序中的 4 种配置文件
JSON
是一种数据格式,在实际开发中,JSON
总是以配置文件的形式出现。小程序项目也不例外,通过不同的 .json
配置文件,可以对小程序项目进行不同级别的配置。小程序项目中有 4 中 json
文件,分别是:
- 项目根目录中的
app.json
配置文件 ★★★★★ - 项目根目录中的
project.config.json
配置文件 - 项目根目录中的
sitemap.json
配置文件 - 每个页面文件夹中的
.json
配置文件 ★★★★★
7.4 app.json 文件
app.json
是当前小程序的全局配置,包括了小程序的所有页面路径
、窗口外观
、界面表现
、底部 tab
等, Demo
项目里面的 app.json
配置内容如下:
- 全局配置文件就是指配置好以后,能够影响到每一个页面
- 所有页面路径
简单了解下这 4 个配置项的作用:
pages
:用来记录当前小程序所有页面的路径window
:全局定义小程序所有页面的背景色、文件颜色等style
:全局定义小程序组件所使用的样式版本- 微信小程序是运行到微信内部的
- 样式风格和微信是一致的
- 微信主要样式风格会发生改变,小程序也会随之发生改变
- 这时候就产生了样式版本的概念
sitemapLocation
:用来指明 sitemap.json 的位置
7.5 project.config.json 文件
project.config.json
是项目配置文件,用来记录我们对小程序开发工具所做的个性化配置,例如:
setting
中保存了编译相关的配置
projectname
中保存的是项目名称
appid
中保存的是小程序的账号 ID
7.6 sitemap.json 文件
在实际开发中,这个文件,默认就可以
如果需要进行配置,需要按照运营的要求,进行文件的配置
微信现已开放小程序内搜索
,效果类似于 PC 网页的 SEO (搜索引擎优化),sitemap.json 用来配置小程序页面是否允许微信搜索
。
当开发者允许微信搜索时,微信会通过爬虫的形式,为小程序的页面内容建立索引。当用户的搜索关键字和页面的索引匹配成功的时候,小程序的页面将可能展示在搜索结果中。
注意: sitemap
的索引提示是默认开启的,如需要关闭 sitemap
的索引提示,可在小程序项目配置文件 project.config.json
的 setting
中配置字段 checkSiteMap
为 false
7.7 页面的 .json 配置文件
小程序中的每一个页面,可以使用 .json
文件来对本页面的窗口外观进行配置,页面中的配置项会覆盖 app.json
中的 window
中的配置项
7.8 新建小程序页面
- 在
pages
文件中右键新建文件夹 -- home
,在home
文件夹右键新建 home -- 输入 hoome
- 官方推荐文件夹名称和页面的名称一致,方便后期的维护
- 新建页面组件的时候,
不需要输入后缀名
- 在
app.json
-->pages
中新增页面的存放路径,小程序开发者工具即可帮我们自动创建对应的页面文件 - 对 pages 目录下页面的删除或者新增都需要在 app.json 文件的 pages 数组中进行新增或删除
7.9 设置首页的两个方式
- 调整
app.json
-->pages
数组中页面路径的前后顺序,即可修改项目的首页,小程序会把排在第一位的页面,当作项目首页进行渲染
- 在
app.json
中pages
同级,配置一个新的节点entryPagePath
节点,传入需要设置为首页的路径即可- 最终小程序项目的首页,以
entryPagePath
节点设置的为准
- 最终小程序项目的首页,以
7.10 WXML 的概念以及和 HTML 之间的区别
-
什么是
WXML
WXML
(WeiXin Markup Language
)是框架设计的一套标签语言(组件),用来构建小程序页面的结构,其作用类似于网页开发中的HTML
-
WXML
和HTML
的区别-
标签名称不同
HTML
—div、p、span、img
WXML
—view、text、image、navigator
-
属性节点不同
<a href="#">超链接</a>
<navigator url="/pages/home/home"></navigator>
-
提供了类似于 Vue 中的模板语法
- 数据绑定 – 插值表达式
- 列表渲染 – wx:for – v-for
- 条件渲染 – wx:if – v-if
-
7.11 WXSS 的概念以及和 CSS 之间的区别
-
什么是
WXSS
WXSS
(WeiXin Style Sheets
)是一套样式语言,用于描述WXML
的组件样式- 类似于网页开发中的
CSS
-
WXSS
和CSS
之间的区别-
新增了 rpx 自适应尺寸单位
CSS
中需要手动进行像素单位换算,例如rem
WXSS
在底层支持新的尺寸单位rpx
,在不同大小的屏幕上小程序会自动进行换算
-
提供了全局的样式和局部样式
- 项目根目录中的
app.wxss
会作用于所有小程序页面 - 局部页面的
.wxss
样式仅对当前页面生效
- 项目根目录中的
-
WXSS
仅支持部分CSS
选择器-
重点使用 class 选择器
-
.class 和 #id
-
element
-
并集选择器和后代选择器
-
::after 和 ::before 等伪类选择器
-
-
7.12 小程序中 JS 文件的三大分类
一个项目仅仅提供页面的展示是不够的,在小程序中,我们通过 .js 文件来处理用户的操作,例如:响应用户的点击、获取用户的位置等等
小程序中的 JS 文件分类三大类,分别是:
-
app.js
- 是
整个小程序项目的入口文件
,通过调用App() 函数
来启动整个小程序
- 是
-
页面的 .js 文件
- 是
页面的入口文件
,通过调用Page() 函数
来创建小程序页面,并运行小程序页面
- 是
-
普通的 .js 文件
- 是
普通的功能模块文件
,用来封装公共的函数或属性
供页面使用
- 是
8. 宿主环境
8.1 了解宿主环境的概念
宿主环境指的是 程序运行所必须的依赖环境
,例如:
- Android 系统和 IOS 系统是两个不同的宿主环境
- 安卓版的微信 App 是不能在 IOS 环境下运行的。所以 Android 是安卓软件的宿主环境,脱离了宿主环境的软件是没有任何意义的
8.2 小程序的宿主环境
-
小程序的宿主环境
微信是小程序的宿主环境
,如图所示:
小程序借助宿主环境提供的能力,可以完成许多普通网页无法完成的功能,例如:微信扫码、微信支付、微信登录、地理定位 等等
- 小程序宿主环境包含的内容
- 通信模型
- 运行机制
- 组件 – “标签”
- API – “方法”
8.3 小程序的通信主体
小程序中通信的主体是 渲染层
和 逻辑层
,其中:
WXML
模板和WXSS
样式工作在渲染层JS
脚本工作在逻辑层
8.4 小程序的通信模型
小程序中的通信模型分为两个部分
-
渲染层
和逻辑层
之间的通信- 由微信客户端进行转发
-
逻辑层
和第三方服务器
之间的通信- 由微信客户端进行转发
8.5 运行机制
-
小程序启动的过程
- 把小程序的代码包下载到本地
- 解析
app.json
全局配置文件 - 执行
app.js
小程序入口文件,调用 App() 创建小程序实例
- 渲染小程序首页
- 小程序启动完成
-
页面渲染的过程
- 加载解析页面的
.json
配置文件 - 加载页面的
.wxml
模板和.wxss
样式 - 执行页面的
.js
文件,调用 Page() 创建页面实例
- 页面渲染完成
- 加载解析页面的
9. 小程序中的组件
9.1 了解常用的视图容器组件
-
小程序中的组件也是由宿主环境提供的,开发者可以基于组件快速搭建出漂亮的页面结构,官方把小程序的组件分为了 9 大类,分别是:
① 视图容器 ② 基础内容 ③ 表单组件 ④ 导航组件 ⑤ 媒体组件 ⑥ map 地图组件 ⑦ canvas 画布组件 ⑧ 开发能力 ⑨ 无障碍访问
-
常用的视图容器类组件
-
view
组件- 普通视图区域
- 类似于 HTML 中的 div ,是一个块级元素
- 常用来实现页面的布局效果
-
scroll-view
组件- 可滚动的视图区域
- 常用来实现滚动列表效果
-
swiper
和swiper-item
组件- 轮播图容器组件和轮播图 item 组件
-
9.2 view 组件的基本使用
view 类似于 div ,一般主要用来布局
实现如图的 Flex 横向布局效果:
<view class="container">
<view>A</view>
<view>B</view>
<view>C</view>
</view>
.container {
display: flex;
justify-content: space-around;
}
.container view{
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
}
.container view:nth-child(1) {
background-color: lightgreen;
}
.container view:nth-child(2) {
background-color: lightskyblue;
}
.container view:nth-child(3) {
background-color: lightcoral;
}
9.3 scroll-view 组件的基本使用
<!-- scroll-x 属性:允许横向滚动 -->
<!-- scroll-y 属性:允许纵向滚动 -->
<!-- 注意:使用竖向滚动时,必须给 scroll-view 一个固定的高度 -->
<scroll-view class="container" scroll-y>
<view>A</view>
<view>B</view>
<view>C</view>
</scroll-view>
.container {
width: 100px;
height: 120px;
}
.container view{
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
}
.container view:nth-child(1) {
background-color: lightgreen;
}
.container view:nth-child(2) {
background-color: lightskyblue;
}
.container view:nth-child(3) {
background-color: lightcoral;
}
9.4 swiper 和 swiper-item 的基本使用
<!-- 轮播图区域 -->
<!-- indicator-dots 属性:显示面板指示点 -->
<swiper indicator-dots class="swiper-container">
<!-- 第一项 -->
<swiper-item>
<view class="item">A</view>
</swiper-item>
<!-- 第二项 -->
<swiper-item>
<view class="item">B</view>
</swiper-item>
<!-- 第三项 -->
<swiper-item>
<view class="item">C</view>
</swiper-item>
</swiper>
.swiper-container {
/* 轮播图容器的高度 */
height: 150px;
}
.item{
height: 100%;
line-height: 150px;
text-align: center;
}
swiper-item:nth-child(1) .item{
background-color: lightgreen;
}
swiper-item:nth-child(2) .item{
background-color: lightskyblue;
}
swiper-item:nth-child(3) .item{
background-color: lightcoral;
}
9.5 swiper 组件的常用属性
属性 | 类型 | 默认值 | 说明 |
---|---|---|---|
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 | 是否采用衔接滑动 |
9.6 text 和 rich-text 组件
-
常用的基础内容组件
-
text
组件- 文本组件
- 类似于
HTML
中的span
标签,是一个行内元素
-
rich-text
组件 (v-html)- 富文本组件
- 支持把
HTML
字符串渲染为WXML
结构 - 富文本编辑器,生成 HTML字符串然后保存到数据中,如果 HTML 字符串需要渲染到小程序中
- 小程序不支持 HTML,就使用 rich-text 将 HTML 字符串进行解析和渲染
-
-
text
组件的基本使用- 通过
text
组件的selectable
属性,实现长按选中文本内容的效果
<!-- 常用的基础内容组件 text 和 rich-text 的用法 --> <view> 手机号支持长按选中效果 <text selectable>18222222222</text> </view>
- 通过
-
rich-text
组件的基本使用- 通过
rich-text
组件的nodes
属性节点,把 HTML 字符串渲染为对应的 UI 结构
<!-- 应用场景 --> <rich-text nodes="<h4 style='color: red'>rich-text组件</h4>"></rich-text>
- 通过
9.7 button 按钮组件
-
常用的其他组件
-
button
- 按钮组件
- 功能比
HTML
中的button
按钮丰富 - 通过
open-type
属性可以调用微信提供的各种功能(客服、转发、获取用户授权、获取用户信息等)
-
-
button
按钮的基本使用属性名 类型 默认值 说明 size String default 按钮的大小 type String default 按钮的样式类型 plain Boolean false 按钮是否镂空,背景色透明 disabled Boolean false 是否禁用 loading Boolean false 名称是否带 loading t图标
<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>
9.8 image 图片组件
-
image 组件的基本使用
src
– 支持本地和网络上的图片mode
– 指定图片的裁剪、缩放的模式
<!-- 1. 空图片 --> <image></image> <!-- 2. 使用 src 指向图片路径 --> <image src="/images/ha.jpg"></image>
image { border: 1px solid red; }
-
image
组件的mode
属性image
组件的mode
属性用来指定图片的裁剪和缩放模式。常用的mode
属性值如下:mode 值 说明 scaleToFill 默认值,缩放模式,不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素 aspectFit 缩放模式,保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。 aspectFill 缩放模式,保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。 widthFix 缩放模式,宽度不变,高度自动变化,保持原图宽高比不变,这里的宽度是指 image 宽度,不在是默认值 heightFix 缩放模式,高度不变,宽度自动变化,保持原图宽高比不变,这里的高度是指 image 高度,不在是默认值
9.9 小程序 API 的 3 大分类
小程序中的 API 是宿主环境提供的,通过这些丰富的微信原生 API,可以方便的调起微信提供的能力,如获取用户信息,本地存储,支付功能等。小程序官方把 API 分为如下 3 大类:
-
事件监听
API
- 特点:以
on
开头的API
用来监听某个事件是否触发 - 举例:wx.onWindowResize(function callback)
- 特点:以
-
同步
API
- 特点1:以
Sync
结尾的API
都是同步API
- 特点2:同步
API
的执行结果,可以通过函数返回值直接获取,如果执行出错会抛出异常 - 举 例:wx.setStorageSync(‘key’, value) 向本地存储中写入内容
- 特点1:以
-
异步
API
-
特点:类似于 jQuery 中的 $.ajax(options) 函数,需要通过 success、fail、complete 接收调用结果
-
举例:wx.request() 发起网络数据请求,通过 success 回调函数接收数据
-
小程序中,大多数的
API
都是异步API
-
10. 协同工作(成员管理)
10.1 了解权限管理需求、组织结构、开发流程
-
了解权限管理需求
- 在中大型的公司中,人员的分工非常仔细:同一个小程序项目,一般会有不同的岗位、不同角色的员工同时参与设计与开发
- 此时出于管理需要,我们迫切需要对不同的岗位、不同的角色的员工的权限进行边界的划分,使他们能够高效的进行协同开发
-
了解项目成员的组织结构
-
小程序的开发流程
10.2 了解小程序成员管理的两个方面
小程序成员管理体现在 管理员
对小程序 项目成员
及 体验成员
的管理:
-
项目成员
- 表示参与小程序开发、运营的成员
- 可登陆小程序管理后台(微信公众平台)
- 管理员可以添加、删除项目成员,并设置项目成员的角色
-
体验成员
- 表示参与小程序内测体验的成员
- 可使用体验版小程序,但不属于项目成员
- 管理员及项目成员均可添加、删除体验成员
10.3 开发者的权限说明
-
不同项目成员对应的权限
- 项目成员分为三个角色: 运营成员、开发人员、数据分析者
-
开发者的权限说明
- 开发者权限:可使用小程序开发者工具及对小程序的功能进行代码管理
- 体验者权限:可使用体验版小程序
- 登录权限:可登录小程序的后台管理,无需要管理员确认
- 开发设置:设置小程序服务器域名、消息推送及扫描普通链接二维码打开小程序
- 腾讯云管理:云开发相关设置
10.4 了解如何添加项目成员和体验成员
11. 小程序的发布
11.1 了解小程序的版本阶段
-
软件开发过程中,根据时间节点的不同,会产出不同的软件版本
- 开发版本:开发者编写代码的同时,对项目代码进行自测
- 体验版本:直到程序达到一个稳定可靠,可体验的状态时,开发者把体验版本给到产品经理和测试人员进行体验测试
- 正式版本:最后修复完程序的 bug 后,发布正式版供外部用户使用
-
小程序的版本
审核是微信官方进行审核,审核周期一般是 3 ~ 7 天
11.2 了解小程序发布上线的主要步骤
-
小程序发布上线 的整体步骤
一个小程序的发布上线,一般要经过
上传代码
-->提交审核
-->发布
这三个步骤 -
上传代码
- 点击开发者工具顶部工具栏中的“上传”按钮
- 填写版本号以及项目备注
-
在后台查看上传之后的版本
登录小程序管理后台 --> 管理 --> 版本管理 --> 开发版本,即可查看刚才提交上传的版本
-
提交审核
-
为什么需要提交审核
- 为了保证小程序的质量,以及符合相关的规范,小程序的发布是需要经过腾讯官方审核的
-
提交审核的方式
- 在开发版本的列表中,点击
提交审核
按钮之后,按照页面提示填写相关的信息,就能把小程序提交到腾讯官方进行审核
- 在开发版本的列表中,点击
-
-
发布
审核通过之后,管理员的微信中会收到小程序通过审核的通知,此时在审核版本的列表中,点击
发布
按钮之后,即可把审核通过
的版本发布为线上版本
,供所有小程序用户访问和使用
11.3 基于小程序码进行推广
-
相对于普通二维码来说,小程序码的优势如下:
- 在样式上更具有辨识度和视觉冲击力
- 能够更加清晰的树立小程序的品牌形象
- 可以帮助开发者、商家更好的推广小程序
-
获取小程序码的 5 个步骤:
登录小程序管理后台
-->设置
-->基本设置
-->基本信息
-->小程序码及线下物料下载
11.4 查看小程序的运营数据
-
在
小程序后台
查看- 登录小程序管理后台
- 点击侧边栏的 “统计”
- 点击相应的 tab 可以看到相关的数据
-
使用
小程序数据助手
查看- 打开微信
- 搜索 “小程序数据助手”
- 查看已发布的小程序相关的数据
如有不足,请多指教,
未完待续,持续更新!
大家一起进步!
转载:https://blog.csdn.net/qq_40440961/article/details/115788306