前言
目标:学习微信小程序开发,整理微信小程序基础知识,以便于记忆和理解
目录
小程序ID&密钥
小程序的id和秘钥需要自己注册生成,才能使用,
步骤: 点击链接,使用微信登录,登录之后进入到小程序
页面,点击开发管理
开发设置
中注册生成
APP的生命周期
App(Object object) | 微信开放文档
知识点: 小程序中的三种生命周期,App, 组件 ,页面
-
APP的生命周期:App(Object object) | 微信开放文档
-
页面的生命周期:Page(Object object) | 微信开放文档
-
组件的生命周期:组件生命周期 | 微信开放文档
项目配置
project.config.json:项目的一个配置文件,我们主要后面要更改的部分如下
-
增强编译(为了一些es的高级语法)、使用npm、不校验合法域名...
sitemap.json:搜索引擎优化,一般由运营同学来决定
#app:
一个项目中只需要有一个即可
-
app.js:入口,写全局逻辑
-
APP的生命周期
-
在App生命周期中,onLaunch、onShow两个生命周期中,给一个参数,可以获取到场景值
-
-
app.json:页面注册、项目的tabBar、网络请求、window等等的配置...
传送门:https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html(opens new window)
注意点:
1.这里面不能有注释,写了注释会报错
2.创建新的页面直接在这里面添加,不需要在文件路径上右键新建,添加之后会自动生成该名称文件夹下的的四个文件
3.想要看到哪个页面,pages中的文件路径要放在第一个
-
app.wxss:全局样式
#page
-
xxx.js【必须】:逻辑、提供模型数据,接受事件处理
-
data与方法同级,不需要写methods
-
获取data中的变量:this.setData,这种写法才能双向数据绑定,注意需要与视图进行交互的数据才使用this.setData(),不需要交互的直接使用 this.data.属性名
-
页面结构中使用data中的数据要加双大括号,使用方法不用加,直接使用方法名
-
-
xxx.json:页面配置,只能覆盖全局配置中的window这个选项,传送门:https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/page.html(opens new window)
-
xxx.wxml【必须】:页面内容,里面写它提供的组件或是自定义组件,不要写div、span
-
block 没什么作用,只是用来包裹代码块的
-
for循环中 we:for="{{data中的变量}}" wx:key="直接写变量名,不需要写item.变量名" , wx:for-item="名称" 表示给item另起了一个名字,默认不写就是item和index
-
-
xxx.wxss:页面样式,私有
#index页面分析
-
静态页面展示
-
里面涉及到的内容(组件、插值表达式、条件渲染、...)
#页面生命周期&页面栈
页面的声明周期钩子参考
-
栈的结构:先进后出,后进先出,处在栈里面的页面都不会销毁,除非它出栈了,才会销毁。
-
小程序中页面都是由栈来维护的
-
凡是在栈里面的都活着,出栈的都挂了
-
我们看到的页面都是位于栈顶
-
每个tabBar的选项都是一个独立的页面栈
-
wx.navigateTo 这个api就是入栈
注意:
当点击跳转到另一个页面的时候,页面还在栈中存在,没有销毁,只是隐藏了,所以当重新回到这个页面时,上一个页面只会执行onShow,跳转到的页面会执行 onLoad / onShow / onReady
当点击左上角返回按钮时,页面就是销毁了,在栈中就不存在了,会执行onUnload
事件处理
传送门:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html(opens new window)
-
在小程序中,事件绑定有两种写法,一种是 bindxxx,xxx代表事件类型,,另一种是 catchxxx,xxx代表事件类型
-
两种事件绑定写法的不同 : bind事件绑定会有事件冒泡,catch事件绑定会阻止事件冒泡
-
-
传参:跟vue不一样,不能通过直接括号后面接值,在原生语法中它只能通过自定义属性传参 data-xxx="值"
wxss & css 的对比
传送门:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxss.html(opens new window)
主要两大方面不太一样:
-
样式导入
-
@import "路径"
-
-
rpx:以后去公司做项目的时候,就是拿着设计稿上的 px * 2 即可
项目创建步骤
-
在桌面下创建一个空白文件夹,命名之后,里面什么都不要
-
打开小程序开发者工具,点击左上角或+号进行创建
-
导入文件夹/修改名称/输入ID/勾选不使用云服务
4.进入项目删除不需要的文件夹
5.创建文件夹,直接在App.json中输入即可,会自动创建
6.创建tabBar,与pages同级
7.修改顶部样式
网络请求封装
对wx.request
原生api进行封装,把它封装成Promise
形式的代码
步骤
-
在项目根目录下创建一个
utils
文件夹,里面创建一个request.js
文件 -
在
request.js
中写上封装的代码
使用分包
目的
把非tabBar页面和非启动页面放在分包中,在使用到的时候去加载,这样可以减少主包的大小,同时提高小程序启动的速度
打包原则
-
声明
subpackages
后,将按subpackages
配置路径进行打包,subpackages
配置路径外的目录将被打包到 app(主包) 中 -
app(主包)也可以有自己的 pages(即最外层的 pages 字段)
-
subpackage
的根目录不能是另外一个subpackage
内的子目录 -
tabBar
页面必须在 app(主包)内
步骤
-
在项目根目录创建一个
subpkg
文件夹,里面专门用来存放分包相关的页面 -
在
subpkg
目录下,创建phone-login
文件夹
3.在app.json
中进行分包的配置
4.点击手机号登录后跳转到分包地址
自定义组件
需求:创建一个公用的搜索框
#自定义组件跟页面的区别
-
js:页面的js是
Page({})
函数,组件的js是Component({})
函数 -
json:页面的json中有
usingComponents
配置项,组件的json中除了有usingComponents
配置项,还要写上"component": true
-
生命周期:页面的生命周期 (opens new window)和组件的生命周期 (opens new window)函数不一样
创建自定义组件
1.在根目录下创建一个components文件夹
2.在components下创建组件
3.点击search-bar 右键新建component,会自动生成四个对应的文件
4.在component/search-bar/search-bar.wxml中书写结构代码 与在component/search-bar/search-bar.wxss中书写样式代码
使用自定义组件
1.在需要使用的页面的json文件中注册自定义组件
2.将注册好的组件名,在页面结构中当标签使用
自定义组件向父组件传参
1.自定义组件结构中绑定事件
2.在自定义组件的js文件中书写逻辑代码,并将方法传递给父组件
注意: 1. 在自定义组件中,事件逻辑处理代码要写在methods中
2.this.triggerEvent('方法名'),是向父组件传参,类似于vue中的this.$emit()
3.父组件接收方法
注意: 要用bind进行绑定
4.自定义组件调用父组件中的方法,实现页面跳转
1.先在分包中创建一个搜索页面,并在app.json里面添加分包
2.在点击搜索条时,跳转到搜索页面
Vant-Weapp的使用
vant-weapp
轻量、可靠的小程序 UI 组件库。传送门(opens new window)
使用步骤
-
把终端切换到小程序项目根目录,执行
npm init -y
生成package.json
文件 -
安装依赖包
npm i @vant/weapp -S --production
-
打开微信开发者工具, 先勾选 使用 npm 模块 选项,再点击 工具 -> 构建 npm,构建完成后,即可引入组件
4.构建完成之后,在项目根目录下会生成一个文件miniprogram_npm
,里面就有刚刚构建好的vant-weapp
的组件
5.在app.json
(全局注册)或是 页面的 json(局部注册)文件中,注册vant-weapp
中相关的组件
1.app.json
2.页面的注册,例如search页面注册
-
在页面或是组件的wxml中使用
vant-weapp
相关的组件即可
搜索页面
注册vant-weapp组件
-
在
search.json
中注册vant
的van-search
子组件
当标签使用,并进行搜索框的处理
1、传入默认文本
2、控制右侧取消按钮的显示与隐藏
3、当输入框聚焦时取消按钮隐藏
4、取消搜索时取消按钮隐藏
5、确定搜索时请求接口获取事件
逻辑代码处理
uniapp
#介绍
uni-app
是一个使用 Vue.js (opens new window)开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。
原理
优势
使用
Vue
语法文档全
生态丰富、有应用市场
支持多个编辑器开发(
HBuilder
、VScode
)
#其它开发小程序框架
-
wepy (opens new window):腾讯自研的小程序开发框架,采用类
Vue
的语法,暂时只支持编译成微信小程序 -
mpvue (opens new window):美团-点评团队自研的小程序开发框架,使用
Vue
开发,支持编译成各平台小程序 -
uniapp (opens new window):数字天堂自研的前端应用的框架,使用
Vue
开发,支持编译成各平台小程序 -
taro (opens new window):京东自研的前端应用的框架,使用
React
开发,支持编译成各平台小程序
注意:
-
因为
uni-ni
中使用到了scss
,所以需要安装 sass 和 sass-loader,但是sass-loader 请使用低于 @11.0.0 的版本,sass-loader@11.0.0 不支持 vue@2.6.12(opens new window) -
uni-ui
相关组件可以使用easycom (opens new window)组件模式去加载,把他们放在src/components
目录下即可
项目生成 & 运行
#参考
生成项目步骤
-
把终端切换到非中文目录下
-
在终端中执行
vue create -p dcloudio/uni-preset-vue uni-shop
指令 -
选择
默认模板
运行项目步骤
-
把终端切换到项目根目录
uni-shop
-
要转成微信小程序代码就在终端运行
npm run dev:mp-weixin
-
打开
微信开发者工具
,然后选择导入 -
导入目录选择
uni-shop/dist/dev/mp-weixin
-
到这一步就可以看到效果了
-
注意,要将自己的APPID添加上
-
项目window的配置
实现效果
参考项目实现效果中的图片
实现步骤
-
在
src/pages.json
目录下配置好项目的window(globalStyle)
-
装包问题处理方案
装包如果出问题需要重装,要删除哪些文件夹之后再重装?
绝大部分装包都删除这三个文件夹,就可以了
项目pages、tabBar的配置
#实现效果
参考项目实现效果中的图片
#实现步骤
-
在
src/pages
目录下创建好home/index.vue
、category/index.vue
、cart/index.vue
、my/index.vue
-
在
src/pages.json
目录下配置好项目的tabBar
网络请求封装
-
在
src
目录下创建一个utils
文件夹,里面创建好request.js
-
在
request.js
文件中,写上封装网络请求的代码
3.在main.js中导入并全局注册使用
总结
以上就是今天要讲的内容,本文仅仅简单介绍了微信小程序的使用,而微信小程序官方文档提供了大量能使我们快速便捷地处理数据的函数和方法,建议大家自行查阅,也欢迎大家留言评论与纠正。