起手一个mpvue项目准备
1,环境配置(http://mpvue.com/mpvue/quickstart.html)
//全局安装vue-cli3脚手架
npm install -g @vue/cli @vue/cli-init //创建一个基于 mpvue-quickstart 模板的control-task项目
vue init mpvue/mpvue-quickstart control-task //定义项目名、APPID、项目描述、是否使用vuex、esLint等 //安装依赖
cd my-project
$ npm install
$ npm run dev
2,这样执行npm run dev就能跑起来,打开微信开发者工具将项目导入。在src下修改vue文件就能动态实时打包到dist(转换后的标准小程序结构目录)目录下
3,如果想引入sass写css,和之前vue一样下载loader就行
npm install node-sass sass-loader --save-dev
4,使用iconfont(如果无效记得npn run dev重新构建下)
a,首先将选择需要用的图片通过购物车加入项目,然后下载
b,然后在static下新建iconfont文件夹,将下载文件解压进来
c,然后在App.vue 组件css下引入iconfont.css,也可在其他全局css中引入@import '../static/iconfont/iconfont.css';
d,页面直接使用<a class="iconfont" href="#"></a>
5,如果使用类似微信风格的UI 可以下载weui.css放到static下,在入口src/main.js下引入mport '../static/weui/weui.css'即可使用
6,引入flyio请求数据 https://github.com/wendux/fly
//1, npm install flyio --save
//2, 在入口文件main.js用引入fly
import Fly from 'flyio/dist/npm/wx'
let fly = new Fly()
Vue.prototype.$fly = fly
//使用
this.$fly.get(url).then((res => {
console.log(resp)
})
7,mork生成随机数据 (参考 http://mockjs.com/examples.html)
npm install mockjs
//在入口文件调用
const Mock = require('mockjs')
let data = Mock.mock({
'list|10': [{'id|+1': 1}]
})
说明规则: 'list|10': [{'id|+1': 1}]
// 属性名 name (id)
// 生成规则 rule (++i)
// 属性值 value (1)
'name|rule': value()
8,使用vuex管理数据
//1, npm install vuex -g
//2,在入口文件main.js中引入
import store from '@/store/store.js'
//将store对象放置在Vue的原型上, 为的是每个实例都可以使用
Vue.prototype.$store = store
//3,在组件中触发存数据
this.$store.dispatch('setData', res.data.subjects)
//4, 在action中发起消息
import {
DATASFUN
} from './mutation-type' export default {
setData ( { commit }, data ) {
console.log( "actions" )
//触发对应的mutation
commit( DATASFUN , data )
}
}
//5,在mutation中修改数据
import {
DATASFUN
} from './mutation-type' export default {
[ DATASFUN ] ( state , data ) {
state.datas = data
}
}
//6,在组件中使用store的数据
<div>{{datas[0].original_title}}</div>
computed : {
datas: function() { //通过方法访问
return this.$store.getters.datas;
}
},
(如果没有存getter里,拿数据要this.$store.state.datas,为避免计算属性中状态声明太多造成重复和冗余我们可以使用mapState简化
computed: {
...mapState({
datas: state => state.datas
})
},)
//7,在state中初始化位置
export default {
datas : []
}
//8,在getter中动态计算更新数据
export default {
datas: function(state){
return state.datas
}
}
//9,在stroe中管理数据
import Vue from 'vue'
import Vuex from 'vuex'
import store from './store'
import state from './state'
import actions from './actions'
import mutations from './mutations'
import getters from './getters' // 声明使用vuex
Vue.use( Vuex ) export default new Vuex.Store( {
state,
actions,
getters,
mutations
} )
9,如果不使用store,也可以配置全局变量
// 1, 在入口文件main.js 将globalData捆绑到Vue原型
//放在Vue实例之后const app = new Vue(App) Vue.prototype.globalData = getApp().globalData 2,设置全局变量URL
this.globalData.url = '127.0.0.1:8080'
3,获取URL
console.log(this.globalData.url)
10,开发小贴士
10-1, @touchstart.stop="click($event,index)" 使用$event可以获取点击DOM的 e 和自定义参数;
10-2,if (ev.target === ev.currentTarget) {}防止取到冒泡值
最新文章
- Web API - Video File Streaming
- 入门级的PHP验证码
- 05.Hibernate多对多关联
- C#查找子串在原串中出现次数
- 〔写在OS边上〕定性note
- Linux 二进制包安装MySQL的一些问题
- ACM第三题 完美立方
- iOS下JS与OC互相调用(五)--UIWebView + WebViewJavascriptBridge
- Linux系统(虚拟机)安装禅道
- Python中用random产生随机数的用法
- 数字(Number)类型(一)
- 环信easeui集成:坑总结2018
- linux:awk修改输出分隔符
- 最长公共前缀的golang实现
- Selenium的自我总结2_元素基本操作
- python单例模式的实现
- HTML5 缓存
- 动态代理 JDK动态代理 CGLIB代理
- oracle 11g SQL语句补充学习
- BST(二叉排序树)的插入与删除
热门文章
- 论文学习——《Learning to Compose with Professional Photographs on the Web》 (ACM MM 2017)
- vue 重定向
- Selenium_随记要点
- 【原理】RabbitMQ概要图
- ItunesConnect:苹果内购项目元数据缺失
- JVM典型配置和调优举例
- xml配置离线约束的目的和ecplipse离线约束配置
- noip提高组 2010 关押罪犯 (洛谷1525)
- 牛客Another Distinct Values
- robotframework+selenium2library之上传本地文件