这篇主要讲讲小程序文件运行顺序,也就是说从入口文件到调用各类交互是怎么实现的。

入口文件解读

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(二)相关推荐

  1. 使用Vue开发微信小程序:mpvue框架

    [原文地址]mpvue入门系列教程: 如何在mpvue中正确的引用小程序的原生自定义组件 使用mpvue开发小程序教程(六) 使用mpvue开发小程序教程(五) 使用mpvue开发小程序教程(四) 使 ...

  2. 华为云物联网平台微信小程序开发教程2.0【完整详细教程】

    一.简介   在之前曾发布过一篇文章"华为云物联网平台的微信小程序开发",在最近接到部分用户私信在使用开发过程中出现的问题,例如API访问的"401"现象等问题 ...

  3. 微信小程序多维数组筛选(以二维数组为例)

    微信小程序多维数组筛选(以二维数组为例) 我们在遇到微信小程序进行筛选的时候,一般会使用到filter函数来进行筛选,但是有时候遇到多维数组怎么办呢? //例如这是我们的数组 arr: [{id: 1 ...

  4. 微信小程序 之 mpvue

    目录 一.mpvue ( Vue in Mini Program ) 二.初始化项目 1. 检查node和npm版本 2. 安装vue-cli脚手架 3. 创建mpvue项目 4. 进入改项目目录中, ...

  5. 使用mpvue开发微信小程序——原生微信小程序、mpvue、wepy对比

    mpvue是什么?为什么使用它? 目前小程序开发主要有三种形式:原生.wepy.mpvue,其中wepy是腾讯的开源项目:mpvue是美团开源的一个开发小程序的框架,全称mini program vu ...

  6. 微信小程序开发手记1.0

    腾讯小程序还是很屌的,最近一波小游戏把小程序推到了风口,我司也抓住机会想来试一试水.于是我开发了一个红包小程序,从学习架构语法接口到最后完成第一版,用时一个月.遇到了无数的坎坷,无数摇头叹气想骂人.所 ...

  7. 微信小程序云开发 · 从0搭建商业级校园跑腿平台(已开源)

    微信小程序云开发  ·  从零搭建商业级校园跑腿平台 小秃僧 新生代农民工,一枚准毕业的大四学生,热爱前端开发,做个有态度.有思想.有价值的公众号. 好久不更新了,再更新已是打工人! 我将分享用云开发 ...

  8. 微信小程序 #项目笔记# | 从0到1实现外卖点餐系统小程序

    目录 开发前准备 项目展示 项目分析 项目初始化 封装网络请求 任务1 商家首页 任务分析 焦点图切换 中间区域单击跳转到菜单列表 底部商品展示 任务2 菜单列表 任务分析 折扣信息区 设计菜单列表布 ...

  9. 使用python实现微信小程序自动签到2.0

    微信小程序自动签到 功能描述 目标 输出 包管理 程序的结构设计 步骤1 步骤2 步骤3 步骤4 代码实现 使用findler抓包工具查看请求类型 再次使用findler抓包,查看请求内容 使用多线程 ...

最新文章

  1. cf792b循环链表
  2. 小记mysql备份同库中一张表的历史记录
  3. 二、Java面向对象(7)_封装思想——this关键字
  4. 团队软件开发第一次冲刺(四)
  5. 物理设计-数据类型的选择
  6. 程序=数据结构+算法
  7. python批量打印机excel,python自动化办公系列03_单个以及批量处理excel文件
  8. linux c 文件映射,linuxc-共享内存
  9. 使用shell脚本 控制 python挂掉后自动重启
  10. kotlin 循环_Kotlin控制流–否则,用于循环,同时,范围
  11. 动态域名解析NAT版结合绿盾加密解密软件使用方法
  12. PHP生成二维码方法
  13. Google在线深度学习神器Colab--实操学习
  14. 【软件测试】一名医院的护士,带着梦追逐诗和远方,拿下测试岗14K......
  15. 由Yardi赞助的报告披露亚太房地产科技投资详情
  16. python实现离散沃尔什变换_快速沃尔什变换(示例代码)
  17. spring-boot2 + vue2+ element-ui2 + avue 通用架构 xijia-plus (兮家 plus)
  18. 微信公众平台测试号接口配置的一个坑——ngrok的
  19. 图解复盘总结和报告模板实例
  20. 云计算后起之秀用友云PK金蝶云,财务云哪家强?

热门文章

  1. 【数学】康托对于实数集大于自然数集的对角线证法
  2. ic芯片写卡软件的分类
  3. CSS .class .class与.class.class区别
  4. 经济信息管理与计算机应用学科,(经济信息管理)经济管理与计算机应用专业(专科)培养方案...
  5. 计算机录制语音所必需的硬件,录音电脑配置方面的硬件要求
  6. 十大最佳DevOps工具
  7. 小程序两行金刚区以及进度条平滑滚动的实现
  8. SpringMVC+Vue实现前后端的志愿者招募网站
  9. 【腾讯Bugly干货分享】手游热更新方案xLua开源:Unity3D下Lua编程解决方案
  10. 第 6章 图——数据结构