当前位置: 首页 > news >正文

用mpvue开发微信小程序

一、搭建项目

官网教程:http://mpvue.com/mpvue/#_2
用vue-cli构建项目后,在微信开发者工具中项目目录选择构建的dist目录,不是src目录

二、新建页面

每一个页面都是新建文件夹,然后包含由下面三个文件
srcpagesindexindex.vue
srcpagesindexmain.js
srcpagesindexmain.json(非必须)
推荐将每个文件夹中的index.vue文件名改为模块文件名例如login.vue,在main.js中修改引入文件名即可。
文件创建好以后要到srcapp.json中进行注册。

三、mpvue引入sass

安装sass-loader:npm i sass-loader node-sass --save-dev即可
在style标签加上scss标签即可 <style scoped lang=scss>

那么如何在mpvue中引入全局sass样式

在src/main.js中
import './assets/css/global.scss';

四、表单控件

h5的select、checkbox、radio都要用微信原生组件来代替(官方文档也有写:http://mpvue.com/mpvue/#_14)
需要注意的是:一些组件不支持v-model绑定,如checkbox-group,可以通过绑定change事件来更新数据

五、组件通讯

1、子组件向父组件传递数据
子组件在方法中触发:

<button @onclik="subClick">
subClick () {
    this.$emit('postResult', {result: value});
}

父组件监听事件:

<subComponent @postResult="父组件处理方法"></subComponent>

2、父组件调用子组件的方法
父组件向子组件传递参数: mpvue使用的是vue的父子组件通讯,通过输入参数props即可。
父组件调用子组件方法:
在child标签加入ref属性<child ref="child"></child>,
父组件通过this.$refs.child.childMethod()来调用子组件方法。
需要注意的是,只有在子组件渲染完以后才能调用
3、通过vuex来通讯
新建store.js,然后分别在父子组件中import

4、设置全局参数
如果我要在所有页面共享数据呢
srcmain.js中

import store from './utils/store';
Vue.prototype.$store = store;

然后在各个页面中直接this.$store.data即可
5、兄弟组件之间,通过event bus传参
新建messenger.js,然后分别在两个组件中import

发送事件组件:

messenger.$emit('msg', params);

接收事件组件:

create(){
    messenger.$on('msg', params => {});
}



五、http请求

mpvue的请求要使用微信小程序的原生请求,content-type 会被默认为 application/json,在使用post请求的时候,如果后端需要的是form-data格式,需要修改content-type为application/x-www-form-urlencoded。

对于初次开发的朋友,第一次发请求会报一个错误
http://xxxx.xxxx.xxx不在以下 request 合法域名列表中,请参考文档:不在以下 request 合法域名列表中
clipboard.png
解决方法:
微信小程序左上角菜单栏-设置
clipboard.png

微信小程序request官方文档:https://developers.weixin.qq....

六、引入ui框架

mpvue开发微信小程序引入ui框架,微信有原生的WeUI:https://weui.io/很简洁,满足更多需求还是选择第三方的ui框架。
现在github start比较多的是iview的和zanui的微信ui组件,iview有2000+的start,zanui有6000+的start,用下来比较确实是iview好用一些。
https://github.com/TalkingDat...
https://github.com/youzan/zan...(好用的是这个)
引入的时候注意,将代码一定粘贴到根目录下的static目录,不然会报错。

同时第三方组件有使用es6,需要在项目设置上

clipboard.png

七、其它坑

1、微信开发者工具,win10点击不到input,获取不到焦点。点击错位,才能获取焦点。

问题原因:因为高分屏,win10的ui做了缩放,默认150%

解决办法:将桌面缩放改成100%就行了。

本文章会持续跟新,发现问题请多多指正

相关文章:

  • hadoop副本放置策略
  • 【逆序对】N*M Puzzle / Simple Puzzle
  • JavaCV cvEstimateRigidTransform函数使用心得
  • 10.17_T1 平津战役
  • EOS开发完全解析(二):用cleos命令行创建、导入、解锁钱包
  • 返回一个二维整数数组中最大子数组的和
  • 1、jeecg 笔记开篇
  • 论文笔记:Visual Semantic Navigation Using Scene Priors
  • InlineHookPsTerminateProcess(0环)
  • 人工智能会改变世界?那这项技能你必须要掌握了。
  • 如何洞悉城市人群移动规律?DataV海量轨迹可视化实践解析
  • webpack4 正确的配置方式
  • 5s管理推进的三个阶段及三大实施原则
  • 小程序生命周期流程
  • 前端缓存-IndexedDB
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • 5、React组件事件详解
  • Android优雅地处理按钮重复点击
  • EOS是什么
  • ES2017异步函数现已正式可用
  • JavaScript设计模式之工厂模式
  • JavaScript异步流程控制的前世今生
  • JS专题之继承
  • MySQL的数据类型
  • nodejs:开发并发布一个nodejs包
  • Python打包系统简单入门
  • React的组件模式
  • vue自定义指令实现v-tap插件
  • 大主子表关联的性能优化方法
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 解析带emoji和链接的聊天系统消息
  • 深入 Nginx 之配置篇
  • 算法-插入排序
  • 终端用户监控:真实用户监控还是模拟监控?
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #mysql 8.0 踩坑日记
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • $(function(){})与(function($){....})(jQuery)的区别
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (C++17) std算法之执行策略 execution
  • (python)数据结构---字典
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .NET Micro Framework初体验(二)
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET程序员迈向卓越的必由之路
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .NET实现之(自动更新)
  • .NET学习教程二——.net基础定义+VS常用设置