完美使用mpvue搭建小程序框架

mpvue

美團(tuán)開(kāi)源了mpvue這個(gè)項(xiàng)目,使得我們又多了一種用來(lái)開(kāi)發(fā)小程序的框架選項(xiàng)州泊。由于mpvue框架是完全基于Vue框架的(重寫(xiě)了其runtimecompiler),因此在用法上面是高度和Vue一致的(某些功能由于受限于小程序環(huán)境本身的原因而不能使用)漂洋,這給使用過(guò)Vue開(kāi)發(fā)Web應(yīng)用的前端開(kāi)發(fā)者提供了極低的切換門(mén)檻來(lái)開(kāi)發(fā)小程序遥皂。

mpvue

Vue.js 小程序版, fork 自 vuejs/vue@2.4.1,保留了 vue runtime 能力刽漂,添加了小程序平臺(tái)的支持演训。

mpvue 是一個(gè)使用 Vue.js 開(kāi)發(fā)小程序的前端框架,目前支持 微信小程序贝咙、百度智能小程序样悟,頭條小程序支付寶小程序。 框架基于 Vue.js颈畸,修改了的運(yùn)行時(shí)框架 runtime 和代碼編譯器 compiler 實(shí)現(xiàn),使其可運(yùn)行在小程序環(huán)境中没讲,從而為小程序開(kāi)發(fā)引入了 Vue.js 開(kāi)發(fā)體驗(yàn)眯娱。

名稱(chēng)由來(lái)

  • mp:mini program 的縮寫(xiě)
  • mpvue:Vue.js in mini program

主要特性

使用 mpvue 開(kāi)發(fā)小程序,你將在小程序技術(shù)體系的基礎(chǔ)上獲取到這樣一些能力:

  • 徹底的組件化開(kāi)發(fā)能力:提高代碼復(fù)用性
  • 完整的 Vue.js 開(kāi)發(fā)體驗(yàn)
  • 方便的 Vuex 數(shù)據(jù)管理方案:方便構(gòu)建復(fù)雜應(yīng)用
  • 快捷的 webpack 構(gòu)建機(jī)制:自定義構(gòu)建策略爬凑、開(kāi)發(fā)階段 hotReload
  • 支持使用 npm 外部依賴(lài)
  • 使用 Vue.js 命令行工具 vue-cli 快速初始化項(xiàng)目
  • H5 代碼轉(zhuǎn)換編譯成小程序目標(biāo)代碼的能力

其它特性正在等著你去探索徙缴。

配套設(shè)施

mpvue 作為小程序版本的 Vue.js,在框架 SDK 之外嘁信,完整的技術(shù)體系還包括如下設(shè)施于样。

通過(guò)官網(wǎng)提供的五分鐘快速上手教程,可以發(fā)現(xiàn)它的開(kāi)發(fā)過(guò)程和Vue保持高度一致潘靖,連使用的命令行工具也還是原先開(kāi)發(fā)Web應(yīng)用時(shí)所用的vue-cli

搭建步驟

一穿剖、開(kāi)發(fā)環(huán)境Node.js

現(xiàn)代前端開(kāi)發(fā)框架和環(huán)境都是需要 Node.js 的,如果沒(méi)有的話卦溢,請(qǐng)先下載 nodejs 并安裝糊余。
安裝完成后,打開(kāi)你的命令行輸入如下命令单寂,驗(yàn)證安裝是否成功:

node --version
v8.1.2
npm --version
5.0.3

然后贬芥,我們需要執(zhí)行以下命令,將npm的下載源切換到國(guó)內(nèi)淘寶的鏡像宣决,以提高下載時(shí)的速度和成功率:

npm set registry https://registry.npm.taobao.org/

但是我電腦上用的不是npm蘸劈,而是yarn,因?yàn)?code>yarn相比npm使用更方便尊沸,快速威沫,安裝yarn可以參考
Npm vs Yarn 之備忘詳單贤惯,
yarn官方文檔
JavaScript 包管理工具 yarn 的使用
安裝完成后,打開(kāi)你的命令行輸入如下命令壹甥,驗(yàn)證安裝是否成功:

yarn --version
1.3.2
二救巷、開(kāi)發(fā)環(huán)境vue-cli
npm install vue-cli -g

提示許可被拒絕, 想起來(lái)了昨天啟動(dòng)時(shí)的權(quán)限問(wèn)題句柠, 試探性在命令前面加上了sudo浦译, 結(jié)果可行:

sudo cnpm install --global vue-cli

安裝成功, 查詢下版本:

vue -V
2.9.2
三、開(kāi)始創(chuàng)建項(xiàng)目
vue init mpvue/mpvue-quickstart mpvueTest
終端圖片

現(xiàn)在mpvue的模板代碼已經(jīng)生成溯职,現(xiàn)在還不能運(yùn)行精盅,需要
cd到項(xiàng)目目錄下
執(zhí)行

yarn

進(jìn)行安裝第三方庫(kù)谜酒,安裝完成之后叹俏,執(zhí)行

yarn dev

這樣就可以運(yùn)行起來(lái)了

四、搭建小程序的開(kāi)發(fā)環(huán)境

小程序自己有一個(gè)專(zhuān)門(mén)的微信開(kāi)發(fā)者工具僻族,最新版本下載地址粘驰。
這一步比較簡(jiǎn)單,按照提示一步步安裝好就行述么,然后用微信掃描二維碼登陸蝌数。 至此小程序的開(kāi)發(fā)環(huán)境差不多完成。

微信開(kāi)發(fā)者工具導(dǎo)入項(xiàng)目

打開(kāi)之后度秘,就會(huì)看到我們新建的小程序頁(yè)面


小程序頁(yè)面

至此我們這個(gè)基本mpvue小程序框架已經(jīng)搭建完成

但是這個(gè)只是最基本的框架顶伞,對(duì)于我們正在做項(xiàng)目還是不夠的,需要在進(jìn)行完善

五剑梳、加入常用第三方庫(kù)

需要引入一些項(xiàng)目需要的基本第三方庫(kù)唆貌,下面是我們項(xiàng)目目前用到的庫(kù),打開(kāi)項(xiàng)目的package.json垢乙,加入一下內(nèi)容锨咙,

  "dependencies": {
    "mpvue": "^2.0.0",
    "vuex": "^3.0.1",
    "weapp-qrcode": "^0.9.0",
    "flyio": "^0.5.9",
    "install": "^0.12.2",
    "mp-weui": "^1.0.3",
    "mpvue-zanui": "^1.0.2",
    "common-mpvue": "^0.4.6",
    "mpvue-config-loader": "^0.1.3"
  },

cd到項(xiàng)目目錄下,執(zhí)行一下命令

yarn

這些第三方庫(kù)下載到我們的項(xiàng)目中追逮,然后打開(kāi)項(xiàng)目的main.js引入一些第三方蓖租。

import Vue from 'vue'
import App from './App'
import store from '@/store';
import WeUI from 'mp-weui/packages';

Vue.use(WeUI);
Vue.config.productionTip = false
App.mpType = 'app'

const app = new Vue({
    store,
    ...App
});
app.$mount();
提醒tips1:

還有一個(gè)我搭建時(shí)候需要的坑,就是新版本的mpvue羊壹,不能在main.js里面配置小程序的config蓖宦,我們之前的項(xiàng)目都是在main.js里面進(jìn)行配置,但是我昨天進(jìn)行配置油猫,發(fā)現(xiàn)不可以配置了稠茂,在網(wǎng)上尋找答案,最終發(fā)現(xiàn)不支持了在main.js里面配置,在項(xiàng)目的main.json里面進(jìn)行配置

提醒tips2:

還有就是之前項(xiàng)目的每個(gè)頁(yè)面的配置也是在頁(yè)面的main.js里面進(jìn)行配置睬关,現(xiàn)在這個(gè)也不支持了诱担,需要在頁(yè)面下面的main.json里面進(jìn)行配置,如下所示

{
    "navigationBarTitleText": "頁(yè)面標(biāo)題",
    "enablePullDownRefresh": true
}
六电爹、加入常用方法

在項(xiàng)目utils目錄下的index.js加入一些常用的方法

// /**
//  * 獲取storage
//  */
export function getCache(key) {
  var value = wx.getStorageSync(key)
  if (value) {
    return value
  }
  return ""
}

// /**
//  * 刪除storage
//  */
export function removeCache(key) {
  wx.removeStorage(key);
}

/**
 * 存儲(chǔ)storage
 */
export function setCache(key, value) {
  try {
    wx.setStorageSync(key, value)
  } catch (e) { }
}

/**
  獲取url參數(shù)
 */
export function getUrlParam(path) {
  var result = {},
    param = /([^?=&]+)=([^&]+)/gi,
    match;
  while ((match = param.exec(path)) != null) {
    result[match[1]] = match[2];
  }
  return result;
}

/**
  數(shù)組是否包含某個(gè)字符串
 */
export const carrContainStr = (a, obj) => {
  for (var i = 0; i < a.length; i++) {
    if (a[i] == obj) {
      return i;
    }
  }
  return -1;
}


/**
   克隆
 */
export const clone = (obj) => {
  // Handle the 3 simple types, and null or undefined
  if (null == obj || "object" != typeof obj) return obj;

  // Handle Date
  if (obj instanceof Date) {
    var copy = new Date();
    copy.setTime(obj.getTime());
    return copy;
  }

  // Handle Array
  if (obj instanceof Array) {
    var copy = [];
    for (var i = 0, len = obj.length; i < len; ++i) {
      copy[i] = clone(obj[i]);
    }
    return copy;
  }

  // Handle Object
  if (obj instanceof Object) {
    var copy = {};
    for (var attr in obj) {
      if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);
    }
    return copy;
  }

  throw new Error("Unable to copy obj! Its type isn't supported.");
}


/**
   判斷機(jī)型
 */
export const isiOS = () => {
  var u = navigator.userAgent;
  var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android終端
  var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios終端
  if (isiOS) {
    return true
  }
  return false;
}
七蔫仙、vuex

這塊我就不細(xì)說(shuō)了,大家可以參考下面的進(jìn)行在項(xiàng)目里進(jìn)行配置
vuex官網(wǎng)
VueJS中學(xué)習(xí)使用Vuex詳解
vuex的簡(jiǎn)單介紹
我對(duì)vuex的理解(二) 之 mapGetters取值和mapMutations的傳參

八丐箩、分裝網(wǎng)絡(luò)請(qǐng)求

可以看一下我的下一篇文檔小程序中使用flyio封裝網(wǎng)絡(luò)請(qǐng)求

至此特別感謝一斤代碼-------->一斤代碼的簡(jiǎn)書(shū)摇邦,他寫(xiě)了很多mpvue小程序的文檔,從搭建到使用屎勘,寫(xiě)的很詳細(xì)施籍,大家可以去學(xué)習(xí)觀摩一下??。

參考:
mpvue官網(wǎng)
一斤代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末概漱,一起剝皮案震驚了整個(gè)濱河市丑慎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓤摧,老刑警劉巖竿裂,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異照弥,居然都是意外死亡腻异,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)产喉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)捂掰,“玉大人敢会,你說(shuō)我怎么就攤上這事曾沈。” “怎么了鸥昏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵塞俱,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我吏垮,道長(zhǎng)障涯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任膳汪,我火速辦了婚禮唯蝶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘遗嗽。我一直安慰自己粘我,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著征字,像睡著了一般都弹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上匙姜,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天畅厢,我揣著相機(jī)與錄音,去河邊找鬼氮昧。 笑死框杜,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的郭计。 我是一名探鬼主播霸琴,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼昭伸!你這毒婦竟也來(lái)了梧乘?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤庐杨,失蹤者是張志新(化名)和其女友劉穎选调,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體灵份,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仁堪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了填渠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弦聂。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖氛什,靈堂內(nèi)的尸體忽然破棺而出莺葫,到底是詐尸還是另有隱情,我是刑警寧澤枪眉,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布捺檬,位于F島的核電站,受9級(jí)特大地震影響贸铜,放射性物質(zhì)發(fā)生泄漏堡纬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一蒿秦、第九天 我趴在偏房一處隱蔽的房頂上張望烤镐。 院中可真熱鬧,春花似錦棍鳖、人聲如沸炮叶。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)悴灵。三九已至扛芽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間积瞒,已是汗流浹背川尖。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留茫孔,地道東北人叮喳。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像缰贝,于是被迫代替她去往敵國(guó)和親馍悟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容