微信小程序结合mpvue从0到1(二)
这篇主要讲讲小程序文件运行顺序,也就是说从入口文件到调用各类交互是怎么实现的。
入口文件解读
1.在mapvue项目中,也就是实际编写的时候我们的项目入口自然就是main.js文件,在main.js文件里面我们会注册全局组件,引入全局使用的样式,插件等等。
import Vue from 'vue'
import App from './App'
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue(App)
app.$mount()
2.在小程序原生项目中的入口文件是app.js,该文件也是一个全局文件,可以在该文件定义全局所需要的数据对象,调用方法等,如下所示
App({onLaunch: function () {// 展示本地存储能力var logs = wx.getStorageSync('logs') || []logs.unshift(Date.now())wx.setStorageSync('logs', logs)// 登录wx.login({success: res => {// 发送 res.code 到后台换取 openId, sessionKey, unionId}})// 获取用户信息wx.getSetting({success: res => {if (res.authSetting['scope.userInfo']) {// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框wx.getUserInfo({success: res => {// 可以将 res 发送给后台解码出 unionIdthis.globalData.userInfo = res.userInfo// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回// 所以此处加入 callback 以防止这种情况if (this.userInfoReadyCallback) {this.userInfoReadyCallback(res)}}})}}})},globalData: {userInfo: null}
})
app.js里面还可以有下列方法
- onLaunch : function(){}://页面加载完成后执行
- onLoad:function(options){}:页面初始化 options 为页面跳转所传递过来的参数
- onReady:function(){}:页面渲染完成
- onShow:function(){}:页面显示
- onHide:function(){}:页面隐藏
- onUnload:function(){}:页面关闭
配置首页
1.在mpvue里面,是单页面文件,默认会渲染app.vue(main.js中挂载在vue上渲染的文件,可以自己配置,默认是app.vue)中的模板文件;在app.vue文件中可以定义全局样式,如背景颜色,字体大小等等;
下面代码块是mpvue quick模板的默认app.vue代码
<script>
export default {created () {// 调用API从本地缓存中获取数据/** 平台 api 差异的处理方式: api 方法统一挂载到 mpvue 名称空间, 平台判断通过 mpvuePlatform 特征字符串* 微信:mpvue === wx, mpvuePlatform === 'wx'* 头条:mpvue === tt, mpvuePlatform === 'tt'* 百度:mpvue === swan, mpvuePlatform === 'swan'* 支付宝(蚂蚁):mpvue === my, mpvuePlatform === 'my'*/let logsif (mpvuePlatform === 'my') {logs = mpvue.getStorageSync({key: 'logs'}).data || []logs.unshift(Date.now())mpvue.setStorageSync({key: 'logs',data: logs})} else {logs = mpvue.getStorageSync('logs') || []logs.unshift(Date.now())mpvue.setStorageSync('logs', logs)}},log () {console.log(`log at:${Date.now()}`)}
}
</script>
<style>
.container {height: 100%;display: flex;flex-direction: column;align-items: center;justify-content: space-between;padding: 200rpx 0;box-sizing: border-box;
}
/* this rule will be remove */
* {transition: width 2s;-moz-transition: width 2s;-webkit-transition: width 2s;-o-transition: width 2s;
}
</style>
2.在小程序中配置文件如下
全部配置请参考:https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html
{"pages": [//配置小程序页面路径,首页默认加载第一个路径,这里第一个是index,如果把logs放第一个首页就是logs"pages/index/index","pages/logs/logs"],"window": {"backgroundTextStyle": "light",//下拉 loading 的样式,仅支持dark/light"navigationBarBackgroundColor": "#fff",//导航栏背景颜色"navigationBarTitleText": "WeChat",//导航栏标题文字内容"navigationBarTextStyle": "black"//导航栏标题颜色,仅支持 black / white},"style": "v2","sitemapLocation": "sitemap.json"
}
index页面wxml如下,看起来跟vue的模板文件很像吧:
<!--index.wxml-->
<view class="container"><view class="userinfo"><button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button><block wx:else><image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image><text class="userinfo-nickname">{{userInfo.nickName}}</text></block></view><view class="usermotto"><text class="user-motto">{{motto}}</text></view>
</view>
小程序中每个页面文件是这样的,在json文件里写页面需要用到的数据,wxml相当于vue文件中的template模板,wxss即书写样式文件,js写交互方法;
页面跳转
1.mpvue里面有两种方式,一是跟原生小程序一样的跳转方式,下面介绍,二是和vue项目一样的路由跳转
- 路由跳转:在mpvue 中使用 vue-router兼容的路由 mpvue-router-patch,先安装mpvue-router-patch,在main.js里面配置好,使用方法和vue一样;mpvue-router-patch具体使用方法
2.小程序跳转方式
- 最常见的wx.navigateTo({}),保留当前页面,跳转到应用内的某个页面,使用 wx.navigateBack 可以返回;
wx.navigateTo({url:'../log/logs?id=1', //跳转页面的路径,相对路径,可带参数,不需要.wxml后缀, 传递的参数在接收页面onLoad()函数中得到值:option.id就可以得到了success:function(){} //成功后的回调;fail:function(){} //失败后的回调;complete:function(){} //结束后的回调(成功,失败都会执行)})onLoad: function (option) {console.log(option)//可以打印一下option看查看参数}
- wx.redirectTo()//关闭当前页面,跳转到非tabBar的某个页面
- 使用组件 示例: 点击跳转
- wx.switchTab ,跳转到tabBar的某个页面
微信小程序结合mpvue从0到1(二)相关推荐
- 使用Vue开发微信小程序:mpvue框架
[原文地址]mpvue入门系列教程: 如何在mpvue中正确的引用小程序的原生自定义组件 使用mpvue开发小程序教程(六) 使用mpvue开发小程序教程(五) 使用mpvue开发小程序教程(四) 使 ...
- 华为云物联网平台微信小程序开发教程2.0【完整详细教程】
一.简介 在之前曾发布过一篇文章"华为云物联网平台的微信小程序开发",在最近接到部分用户私信在使用开发过程中出现的问题,例如API访问的"401"现象等问题 ...
- 微信小程序多维数组筛选(以二维数组为例)
微信小程序多维数组筛选(以二维数组为例) 我们在遇到微信小程序进行筛选的时候,一般会使用到filter函数来进行筛选,但是有时候遇到多维数组怎么办呢? //例如这是我们的数组 arr: [{id: 1 ...
- 微信小程序 之 mpvue
目录 一.mpvue ( Vue in Mini Program ) 二.初始化项目 1. 检查node和npm版本 2. 安装vue-cli脚手架 3. 创建mpvue项目 4. 进入改项目目录中, ...
- 使用mpvue开发微信小程序——原生微信小程序、mpvue、wepy对比
mpvue是什么?为什么使用它? 目前小程序开发主要有三种形式:原生.wepy.mpvue,其中wepy是腾讯的开源项目:mpvue是美团开源的一个开发小程序的框架,全称mini program vu ...
- 微信小程序开发手记1.0
腾讯小程序还是很屌的,最近一波小游戏把小程序推到了风口,我司也抓住机会想来试一试水.于是我开发了一个红包小程序,从学习架构语法接口到最后完成第一版,用时一个月.遇到了无数的坎坷,无数摇头叹气想骂人.所 ...
- 微信小程序云开发 · 从0搭建商业级校园跑腿平台(已开源)
微信小程序云开发 · 从零搭建商业级校园跑腿平台 小秃僧 新生代农民工,一枚准毕业的大四学生,热爱前端开发,做个有态度.有思想.有价值的公众号. 好久不更新了,再更新已是打工人! 我将分享用云开发 ...
- 微信小程序 #项目笔记# | 从0到1实现外卖点餐系统小程序
目录 开发前准备 项目展示 项目分析 项目初始化 封装网络请求 任务1 商家首页 任务分析 焦点图切换 中间区域单击跳转到菜单列表 底部商品展示 任务2 菜单列表 任务分析 折扣信息区 设计菜单列表布 ...
- 使用python实现微信小程序自动签到2.0
微信小程序自动签到 功能描述 目标 输出 包管理 程序的结构设计 步骤1 步骤2 步骤3 步骤4 代码实现 使用findler抓包工具查看请求类型 再次使用findler抓包,查看请求内容 使用多线程 ...
最新文章
- cf792b循环链表
- 小记mysql备份同库中一张表的历史记录
- 二、Java面向对象(7)_封装思想——this关键字
- 团队软件开发第一次冲刺(四)
- 物理设计-数据类型的选择
- 程序=数据结构+算法
- python批量打印机excel,python自动化办公系列03_单个以及批量处理excel文件
- linux c 文件映射,linuxc-共享内存
- 使用shell脚本 控制 python挂掉后自动重启
- kotlin 循环_Kotlin控制流–否则,用于循环,同时,范围
- 动态域名解析NAT版结合绿盾加密解密软件使用方法
- PHP生成二维码方法
- Google在线深度学习神器Colab--实操学习
- 【软件测试】一名医院的护士,带着梦追逐诗和远方,拿下测试岗14K......
- 由Yardi赞助的报告披露亚太房地产科技投资详情
- python实现离散沃尔什变换_快速沃尔什变换(示例代码)
- spring-boot2 + vue2+ element-ui2 + avue 通用架构 xijia-plus (兮家 plus)
- 微信公众平台测试号接口配置的一个坑——ngrok的
- 图解复盘总结和报告模板实例
- 云计算后起之秀用友云PK金蝶云,财务云哪家强?
热门文章
- 【数学】康托对于实数集大于自然数集的对角线证法
- ic芯片写卡软件的分类
- CSS .class .class与.class.class区别
- 经济信息管理与计算机应用学科,(经济信息管理)经济管理与计算机应用专业(专科)培养方案...
- 计算机录制语音所必需的硬件,录音电脑配置方面的硬件要求
- 十大最佳DevOps工具
- 小程序两行金刚区以及进度条平滑滚动的实现
- SpringMVC+Vue实现前后端的志愿者招募网站
- 【腾讯Bugly干货分享】手游热更新方案xLua开源:Unity3D下Lua编程解决方案
- 第 6章 图——数据结构