小程序


参看官方文档地址: https://developers.weixin.qq.com/miniprogram/dev/framework/structure.html

目录结构:

  1. .json 后缀的 JSON 配置文件 配置页面路由,全局样式等
  2. .wxml 后缀的 WXML 模板文件
  3. .wxss 后缀的 WXSS 样式文件
  4. .js 后缀的 JS 脚本逻辑文件

APP.json里:

  • app.js (相当于全局的状态管理,相当于vuex redux)

pages里哪个在上面就是首页 放路径

window是窗口:可以设置全局配置,在指定页面配置会替换全局的配置,可以给他加个navigationBarbackgroundcolor:导航栏背景颜色,16进制颜色,

navigationBartitletext:导航栏标题

enablepulldown refresh true是下拉刷新

tabbar 底部跳转栏

list{放pagepath 放导航按钮最少两个,最多五个],放iconpath或者选中的地址

用bindtap 帮个点击事件后面写触发函数,在js里page里写函数方法,小程序用this。setdata改数据,有点像react的setstate,传参用data-xx=“xxx”,浏览器事件对象里e里有个target里面有数据,可以打印一下e看一下 ,分为冒泡和非冒泡,

JSON 配置文件

插件(必须真机测试):

  • 获取用户信息,包括 openid 和昵称等
  • 支付
  • 获取收货地址

分包
优点:优化小程序首次下载时间,便于多人开发

WXSS文件(可以理解成延用了Vue的语法)

微信小程序用的布局都是flex布局,用rpx 750rpx直接撑满

  • 标签是 :view, button, text、image 等等,等同于 dev button span img,顶头标签是page标签

  • 新增单位:rpx

  • 数据绑定:

<view>{{ message }}</view>
Page({
	data: {
			message: 'Hello MINA!'
			}
})
  • 列表渲染
<!--wxml--><view wx:for="{{array}}">{{item}}</view> 
标签里直接写个wx:for{{info} 默认是index,对象数组都能循环
  • JS逻辑交互,事件绑定事件绑定用bindtap就是冒泡事件,catchtap是捕获从上往下(阻止冒泡)
<button bindtap="clickMe">点击我</button>
  • 改变data值用setData
Page({
	clickMe() {
	this.setData({msg: 'Hello World'})
	}
})

路由

navigateTo, redirectTo 只能打开非 tabBar 页面。
switchTab 只能打开 tabBar 页面。
reLaunch 可以打开任意页面。
页面底部的 tabBar 由页面决定,即只要是定义为 tabBar 的页面,底部都有 tabBar。
调用页面路由带的参数可以在目标页面的onLoad中获取。

如何上线?

1.在开发者工具中点击上传;

2.在 微信公众平台 官网中的 管理 – 版本管理 – 开发版本 中查找;

3.在管理的成员管理中添加成员 ,方可访问体验版本

4.微信开发小程序的版本管理实现多人开发(使用的是git)

数据请求:

注意:首先要配置网络,可查看API文档

每个微信小程序需要事先设置一个通讯域名,小程序只可以跟指定的域名与进行网络通信。包括普通 HTTPS 请求(wx.request)、上传文件(wx.uploadFile)、下载文件(wx.downloadFile) 和 WebSocket 通信(wx.connectSocket),此域名在开发设置中设置(就是登陆微信公众平台的首页中)

域名只支持https协议

小程序要使用预处理语言less或sass必须使用gulp

一、.安装gulp

注意:安装的gulp版本是旧版本,不是最新版本,npm 默认是下载最新版本的;

两个都装:

    1. 全局的gulp; npm install -g gulp@3.9.1 相当于壳子
    1. 局部的gulp; npm install --save-dev gulp@3.9.1 相当于核心

二、安装所需依赖:

        依赖:                                     作用:

​        使用less :less 和 gulp-less            将less转成css

​        使用sass :node-sass 和 gulp-sass       将sass转成css 

​        压缩css的依赖:gulp-clean-css           压缩css       

​        将css转成wxss : gulp-rename            css转wxss

三、创建核心文件:gulpfile.js

const gulp = require("gulp") ;

const less = require("gulp-less") ;

const cleanCss = require("gulp-clean-css");

const rename = require("gulp-rename") ;



// 获取任务,起名为less

gulp.task("less" , () => {// 找到所有的less文件

​    gulp.src("./**/*.less")// 通过管道思想:上一级的输出作为下一级的输入.pipe(less()) //将less转成css.pipe(cleanCss()) //压缩css.pipe(rename((path) => { //将css重命名为wxss// console.log(path)

​        path.extname = ".wxss";})).pipe(gulp.dest("./")) //输出到目录

})



// watch是gulp自带的依赖

gulp.task("watch" , () => {// 监听哪个文件变动后执行less方法

​    gulp.watch("./pages/**/*.less" , ["less"])

​    gulp.watch("./components/**/*.less" , ["less"])

})

开启首页的下拉刷新功能

pages/home/home.json { “usingComponents”: { “prolist”: “/components/prolist/prolist” }, “enablePullDownRefresh”: true, “backgroundColor”: “#efefef”, “backgroundTextStyle”: “dark” }

  • 返回顶部:在首页中设置一个固定定位的按钮,然后绑定点击事件,绑定事件使用 bindtap,然后调用小程序提供的api即可返回

编程式导航渲染
使用小程序提供的api实现编程式路由的跳转
wx.switchTab(Object object)

  • 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面

wx.reLaunch(Object object)

  • 关闭所有页面,打开到应用内的某个页面

wx.redirectTo(Object object)

  • 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面

wx.navigateTo(Object object)

  • 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层

wx.navigateBack(Object object)

  • 关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层

微信授权登录

通过wx.login接口获取code,将code传到后端接收后端传回来的openID ,查询一下自己的数据库里有没有 openid ,有的话就直接返回自己的uid ,没有的话相当于注册,创建一条信息并且和openID做关联

我们可以在网络请求里get里面,then()回调函数里将用户的userinfo保存到本地,然后登录的时候看一下本地储存有没有userinfo,有值就为真,说明是登录过,没有就false

img

微信登陆之后,可以获得wx的id,不使用wx的id 我们用自己的id和wx的id进行绑定

找到微信小程序api接口里面有个wx.login可以获取用户的openid和秘钥session——key ,在前台调用后端接口发起网络请求,后端告诉我我是否登陆成功,每个用户都是有用户id 、wxid,可以用微信用户的id

登录的话可以做微信登录,账号密码登录

  • 微信登录后判断当前用户有没有绑定用户名和密码,如果有,可以用微信登录,可用户名密码登录,没有就提示用户绑定用户名和密码。

绑定手机号,点击绑定手机号跳到手机号页面通过wx .redirect to跳转

img

然后再绑定页面布局好写个input,绑定好事件, 点击绑定实现绑定,在page写事件获取input里面的值,通过this.data事件名 点击提交绑定传给后端数据库,通过后端给的接口配置发起网络请求get请求,绑定成功在调回我的页面

img

img

img

img

微信小程序生命周期

  • onLoad() 页面加载时触发,只会调用一次,可获取当前页面路径中的参数。

  • onShow() 小程序启动,页面显示/切入前台时触发,一般用来发送数据请求;

  • onReady() 页面初次渲染完成时触发, 只会调用一次,代表页面已可和视图层进行交互。

  • onHide() 小程序从前台进入后台时触发,页面隐藏,如底部 tab 切换到其他页面或小程序切入后台等。

  • onUnload() 页面卸载时触发,如redirectTo或navigateBack到其他页面时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值