国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

小程序的初次遇見(jiàn),使用mpvue搭建模板

MangoGoing / 459人閱讀

摘要:最后寫(xiě)一個(gè)公用的樣式就可以使用了?,F(xiàn)在我們可以愉快的使用其開(kāi)發(fā)了,如果對(duì)開(kāi)發(fā)比較熟悉的話(huà),完全遷移過(guò)來(lái)是沒(méi)有問(wèn)題的。

由于公司業(yè)務(wù)需求的需要,在這一周需要開(kāi)發(fā)小程序,加急看了下小程序的文檔,發(fā)現(xiàn)用其原生來(lái)編寫(xiě)程序不是很順手,公司前端用的技術(shù)棧是vue, 詢(xún)問(wèn)了谷哥和度娘發(fā)現(xiàn)大部分推薦了 wepympvue,對(duì)比了兩個(gè)框架,還是選用了 mpvue, 因?yàn)?mpvue 繼承自 vue.js,其技術(shù)規(guī)范和語(yǔ)法特點(diǎn)與 Vue.js 保持一致。

快速搭建 mpvue 目錄
// 全局安裝 vue-cli
$ npm install --global vue-cli
// 創(chuàng)建一個(gè)基于 mpvue-quickstart 模板的新項(xiàng)目
$ vue init mpvue/mpvue-quickstart wx-mpvue-demo
// 安裝依賴(lài)
$ cd wx-mpvue-demo
$ npm install
// 啟動(dòng)構(gòu)建
$ npm run dev

一個(gè)簡(jiǎn)單的工程目錄就搭建完成了。

封裝自己的公用模塊
1.封裝Totast

由于小程序原生的消息提示實(shí)在是讓人崩潰,所以我們先自己來(lái)封裝下 totast, 在 util目錄新建 totast.js

class toast {
  static msg (title, {icon = 1}) {
    wx.showToast({
      title,
      icon: ["success", "none"][icon]
    })
  }
  static confirm ({title = "提示", content, callback}) {
    wx.showModal({
      title,
      content,
      success: function (res) {
        if (res.confirm) {
          callback(res.confirm)
        } else if (res.cancel) {
          console.log("用戶(hù)點(diǎn)擊取消")
        }
      }
    })
  }
}

export default toast

我們掛載到main.js中, 在組件里可以方便調(diào)用

import toast from "./utils/toast"
Vue.prototype.$totast = toast
2.封裝 publicRequest

小程序的網(wǎng)路請(qǐng)求不是很方便,我們也對(duì)其封裝一下。

import totast from "./toast"

const Authorization = "Bearer xxx"
class publicRequest {
  static get ({url, data = {}, isJson = false, hasToken = true, header}) {
    let hasNetWork = checkNetWork()

    if (!hasNetWork) {
      totast.msg("網(wǎng)路異常", {})
      return false
    }

    let contentType = isJson ? "application/json" : "application/x-www-form-urlencoded"
    let _authorization = hasToken ? {"Authorization": Authorization} : {}
    let _header = Object.assign({"content-type": contentType}, _authorization, header)
    wx.showLoading({title: "加載中..."})
    return new Promise((resolve, reject) => {
      wx.request({
        url,
        header: _header,
        dataType: "json",
        method: "GET",
        data,
        success: (res) => {
          if (res.statusCode === 200) {
            resolve(res.data)
          }
        },
        fail: (error) => {
          totast.msg(error.errMsg, {})
          reject(error)
        },
        complete: res => {
          if (res.statusCode !== 200) {
            totastMessage({
              statusCode: res.statusCode,
              message: res.data.msg
            })
          }
          wx.hideLoading()
        }
      })
    })
  }
  static post ({url, data = {}, isJson = false, hasToken = true, header}) {
    let hasNetWork = checkNetWork()

    if (!hasNetWork) {
      totast.msg("網(wǎng)路異常", {})
      return false
    }
    let contentType = isJson ? "application/json" : "application/x-www-form-urlencoded"
    let _authorization = hasToken ? {"Authorization": Authorization} : {}
    let _header = Object.assign({"content-type": contentType}, _authorization, header)
    wx.showLoading({title: "加載中..."})
    return new Promise((resolve, reject) => {
      wx.request({
        url,
        header: _header,
        method: "POST",
        data,
        dataType: "json",
        success: (res) => {
          resolve(res.data)
        },
        fail: (error) => {
          totast.msg(error.errMsg, {})
          reject(error)
        },
        complete: res => {
          if (res.statusCode !== 200) {
            totastMessage({
              statusCode: res.statusCode,
              message: res.data.msg
            })
          }
          wx.hideLoading()
        }
      })
    })
  }
}
const checkNetWork = function () {
  return new Promise(resolve => {
    wx.getNetworkType({
      success: res => {
        let networkType = res.networkType;
        if (networkType === "none" || networkType === "unknown") {
          resolve(false)
        } else {
          resolve(true)
        }
      },
      fail: () => {
        resolve(false)
      }
    })
  })
}
const totastMessage = function ({statusCode, message}) {
  switch (statusCode) {
    case 502:
      totast.msg("服務(wù)器異常", {})
      break
    default:
      totast.msg(message, {})
      break
  }
}
export default publicRequest

我們呢也對(duì)其掛載到 vue 上去。

import publicRequest from "./utils/publicRequest"
Vue.prototype.$http = publicRequest
3.掃一掃的調(diào)用

我們先公用出掃一掃

const handleScan = function () {
  return new Promise((resolve, reject) => {
    wx.scanCode({
      success: (res) => {
        console.log(res)
        resolve(res)
      },
      fail: error => {
        reject(error)
      }
    })
  })
}
export default handleScan

公用出來(lái)后掛載到我們的 vue 上后可以在組件里直接調(diào)用 this.$handleScan,如

methods: {
  async scanCodeInfo () {
    let goods = await this.$handleScan()
    console.log(goods)
    this.codeInfo = goods.result
  }
}
4.如何引入iconfont圖標(biāo)

因?yàn)樾〕绦虻膚xss文件的font-face的url不接受http地址作為參數(shù),但可以接受base64,因此需將字體文件下載后,轉(zhuǎn)換為base64,然后引用。
所以我們可以在阿里巴巴圖標(biāo)庫(kù)下載下來(lái),將iconfont.ttf轉(zhuǎn)換。轉(zhuǎn)換地址:https://transfonter.org/

下載文件后解壓得到stylesheet.css文件,將此文件引入到項(xiàng)目。最后寫(xiě)一個(gè)公用的樣式:

.icon:after{
  font-family: "iconfont";
  font-weight: lighter;
  font-style: normal;
}

.icon-saoyisao:after { content: "e7c7"; }

.icon-hebingxingzhuang:after { content: "e61a"; }

就可以使用了。

現(xiàn)在我們可以愉快的使用其開(kāi)發(fā)了,如果對(duì) vue開(kāi)發(fā)比較熟悉的話(huà),完全遷移過(guò)來(lái)是沒(méi)有問(wèn)題的。最后附上項(xiàng)目demo和原文地址
每個(gè)人都有第一次,哈哈~這就是我的第一次寫(xiě)文章,不到之處,望指正。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/94759.html

相關(guān)文章

  • 美團(tuán)程序框架mpvue蹲坑指南

    摘要:這個(gè)是我們約定的額外的配置這個(gè)字段下的數(shù)據(jù)會(huì)被填充到頂部欄的統(tǒng)一配置美團(tuán)汽車(chē)票同時(shí),這個(gè)時(shí)候,我們會(huì)根據(jù)的頁(yè)面數(shù)據(jù),自動(dòng)填充到中的字段。 美團(tuán)小程序框架mpvue(花名:沒(méi)朋友)蹲坑指南 第一次接觸小程序大概是17年初,當(dāng)時(shí)小程序剛剛內(nèi)側(cè),當(dāng)時(shí)就被各種限制折騰的死去活來(lái)的,單向綁定,沒(méi)有promise,請(qǐng)求數(shù)限制,包大小限制,各種反人類(lèi),...反正我是感受到了滿(mǎn)滿(mǎn)的惡意.最近接到一個(gè)工...

    AprilJ 評(píng)論0 收藏0
  • mpvue+vant app搭建微信程序

    摘要:開(kāi)發(fā)微信小程序使用全局安裝創(chuàng)建一個(gè)基于模板的新項(xiàng)目安裝依賴(lài)啟動(dòng)構(gòu)建使用將下的下的目錄復(fù)制到下的目錄即可調(diào)用調(diào)用中調(diào)用中使用請(qǐng)輸入搜索關(guān)鍵詞搜索關(guān)注我的微信公眾賬號(hào)分享更多 mpvue+vant 開(kāi)發(fā)微信小程序 mpvue使用 # 全局安裝 vue-cli $ npm install --global vue-cli # 創(chuàng)建一個(gè)基于 mpvue-quickstart 模板的新項(xiàng)目 $...

    int64 評(píng)論0 收藏0
  • 程序項(xiàng)目入坑實(shí)踐

    摘要:公司由于小程序原開(kāi)發(fā)需求變動(dòng),產(chǎn)品決定重新開(kāi)始設(shè)計(jì)新的小程序,人員緊張,導(dǎo)致我接了這個(gè)坑。輸入數(shù)字一般項(xiàng)目可能都會(huì)碰到金額的輸入限制,這里小程序組件,可利用,來(lái)控制輸入只能是數(shù)值和小數(shù)點(diǎn)。 公司由于小程序原開(kāi)發(fā)需求變動(dòng),產(chǎn)品決定重新開(kāi)始設(shè)計(jì)新的小程序,人員緊張,導(dǎo)致我接了這個(gè)坑~。原開(kāi)發(fā)時(shí)準(zhǔn)備使用 mpvue 來(lái)開(kāi)發(fā),前篇文章介紹了一些關(guān)于mpvue的寫(xiě)法,后來(lái)在我將簡(jiǎn)易框架搭建后,發(fā)...

    zhjx922 評(píng)論0 收藏0
  • mpvue程序開(kāi)發(fā)從零構(gòu)建

    摘要:根據(jù)官方文檔,用搭建腳手架。全局安裝創(chuàng)建一個(gè)基于模板的新項(xiàng)目安裝依賴(lài)啟動(dòng)構(gòu)建生成的目錄結(jié)構(gòu)如圖。示例圖小知識(shí)點(diǎn),標(biāo)簽?zāi)0寮瓤梢杂美镆部梢杂眯〕绦蚶锏?,比如等,在輪播圖中運(yùn)用方便高效。 1、根據(jù)官方文檔,用mpvue搭建腳手架。 # 全局安裝 vue-cli $ npm install --global vue-cli # 創(chuàng)建一個(gè)基于 mpvue-quickstart 模板的新項(xiàng)目 $...

    zhiwei 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<