Mpvue開發(fā)小程序開發(fā)環(huán)境搭建過程

實(shí)驗(yàn)項目叫做神記事,英文名speed-note。就是一個記事本小程序。

安裝

npm install --global vue-cli@2.9
vue init mpvue/mpvue-quickstart speed-note

其中wxmp appid來自于后臺 - 開發(fā)設(shè)置 - AppID(小程序ID)。

其他設(shè)置全部保持默認(rèn)即可。

cd my-project
npm install
npm run dev

執(zhí)行之后,使用微信開發(fā)者工具選擇D:/speed-note/,即可預(yù)覽項目。

騰訊云

這時候微信開發(fā)者工具的右上角是沒有“騰訊云”按鈕的,需要去后臺開通。

  1. 打開:后臺 - 開發(fā) - 開發(fā)者工具 - TGit權(quán)限管理,會提示你沒有開通騰訊云。那么咱們就去開通。
  2. 接著會看到公眾平臺帳號授權(quán),掃碼授權(quán)。
  3. 接著會問你,要么開通獨(dú)立的騰訊云賬號,要么關(guān)聯(lián)已有騰訊云賬號。我選擇開通獨(dú)立賬號。

之后進(jìn)入騰訊云管理界面。

下載服務(wù)器端測試代碼

在騰訊云管理界面,你會發(fā)現(xiàn)第三步是下載測試代碼,可選擇的有Nodejs版本和PHP版本,由于Nodejs版本更簡單,所以我先下載了Nodejs版本。

你會發(fā)現(xiàn)文件名是wafer2-quickstart-nodejs...這樣的,那么這個wafer2是什么?

wafer2官方網(wǎng)站:https://github.com/tencentyun/wafer2-quickstart

簡單說,wafer2就是一套工具包,用戶只需要開通,即可使用開發(fā)者工具上傳、部署、調(diào)試小程序后端代碼,無需了解服務(wù)器運(yùn)維、數(shù)據(jù)庫部署搭建即可使用。當(dāng)然,如果你的小程序是純前端程序,不需要后端交互,那么這個工具包可以不必安裝。

這個包里面包含當(dāng)前最流行的koa2框架,也就是類似于PHP語言的Laravel、ThinkPHP...等框架。顯然,你也需要koa2的相關(guān)知識。

我個人對小程序是充滿敬畏的,我不認(rèn)為一個前端程序員需要把后端的工作全包了,如果一個前端程序員能包攬后端,達(dá)到所謂“全?!保荒苷f明這個小程序一定不會是大型的、重要的項目。所以,當(dāng)你在學(xué)習(xí)小程序開發(fā)階段,只要對koa2有基本掌握即可,能做到數(shù)據(jù)庫增刪改查就差不多了,等你真正以開發(fā)小程序?yàn)槁殬I(yè)的時候,后端程序員用什么語言就是他的事情,你只需要讓他po給你接口即可。如果你真的打算全棧,而且更熟悉PHP語言,也無妨,以后再改。甚至說,如果你后端對Java最熟,那也可以,不過就只能脫離騰訊云了,需要用自己的服務(wù)器,因?yàn)轵v訊云不提供Java環(huán)境。

wafer2部署教程:https://github.com/tencentyun/wafer2-quickstart-nodejs/blob/master/README.md

網(wǎng)上的相關(guān)文檔很多,比如 騰訊云 wafer2 上手,輕松部署小程序后端!

將server文件夾放到項目根目錄

wafer2-quickstart-nodejs-master.zip這個文件我們只需要其中的server文件夾,因?yàn)閏lient文件夾就是小程序前端,是我們要用mpvue去生成的,所以不用它的代碼。

修改project.config.json,加入server文件夾路徑

該文件在項目根目錄,它第10行是"miniprogramRoot": "dist/wx/",,在下方追加1行代碼,也就是指定server文件夾的路徑:

"qcloudRoot": "./server/",

其實(shí)有一個細(xì)節(jié),在設(shè)置這一步之前,你的開發(fā)者工具右上角始終是沒有“騰訊云”按鈕的,即使你去工具 - 工具欄管理 - 自定義工具管理去找,依然是找不到“騰訊云”按鈕,因?yàn)槟銢]有設(shè)置server目錄,開發(fā)者工具認(rèn)為你的小程序不需要后端。直到設(shè)置了server路徑,才會出現(xiàn)“騰訊云”按鈕?,F(xiàn)在勾上它。(如果還沒有,重啟工具就應(yīng)該能找到。)

image.png

選擇線上開發(fā)環(huán)境

點(diǎn)擊工具右上角的“騰訊云”按鈕,會讓你選擇Nodejs環(huán)境或是PHP環(huán)境,我們選Nodejs環(huán)境。

重新點(diǎn)擊騰訊云按鈕,可以看到下拉菜單,我們目前用不到這些功能,因?yàn)橄乱徊轿覀兇罱ū镜氐拈_發(fā)環(huán)境。

繼續(xù)部署本地Node.js Demo

先細(xì)讀官方說明微信小程序開發(fā)者工具 自行部署 Node.js Demo,查看《上傳 Demo 和啟動》一節(jié)的內(nèi)容。

具體說,將

    // 其他配置 ...
    serverHost: 'localhost',
    tunnelServerUrl: 'http://tunnel.ws.qcloud.la',
    tunnelSignatureKey: '27fb7d1c161b7ca52d73cce0f1d833f9f5b5ec89',
      // 騰訊云相關(guān)配置可以查看云 API 密鑰控制臺:https://console.cloud.tencent.com/capi
    qcloudAppId: '你的騰訊云 AppID',
    qcloudSecretId: '你的騰訊云 SecretId',
    qcloudSecretKey: '你的騰訊云 SecretKey',
    wxMessageToken: 'weixinmsgtoken',
    networkTimeout: 30000

貼到server/config.js里面。其中tunnel相關(guān)的跳過,qcloud相關(guān)的如實(shí)填寫。

qcloudAppId來自于騰訊云后臺右上角菜單的“賬號信息”。

qcloudSecretIdqcloudSecretKey來自于騰訊云后臺右上角菜單的“訪問管理”,然后點(diǎn)擊左側(cè)“API秘鑰管理”,如果沒有秘鑰,則“新建秘鑰”。然后從中復(fù)制即可,其中“qcloudSecretKey”需要先填手機(jī)驗(yàn)證碼。

然后,在server目錄執(zhí)行npm install,安裝相關(guān)依賴。

部署本地MySQL

  1. 準(zhǔn)備MySQL:這一步很簡單,相信任何程序員本機(jī)至少都有一個XAMPP之類的集成環(huán)境,直接用即可。
  2. 配置server/config.js:接著,我們修改server/config.js內(nèi)容,設(shè)置相關(guān)參數(shù)。注意,要在數(shù)據(jù)庫中創(chuàng)建一個cAuth庫,編碼為utf8mb4,通常用phpmyadmin創(chuàng)建即可。這個數(shù)據(jù)庫用于存放登錄認(rèn)證相關(guān)的數(shù)據(jù)。可以改名。
  3. 在server目錄執(zhí)行命令行node tools/initdb.js,為了給cAuth庫創(chuàng)建一個叫csessioninfo的表。

這里注意,如果你在第3步遇到關(guān)于CURRENT_TIMESTAMP的報錯,這個問題跟MySQL版本過低有關(guān),解決辦法:要么升級你的集成環(huán)境,要么另裝一個集成開發(fā)環(huán)境。

我個人選擇另裝一個環(huán)境,比如XAMPP的便攜版(https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/7.1.25/),然后修改端口:

  1. httpd.conf幾處端口改成800
  2. my.ini幾處端口改為33060
  3. phpmyadmin的config.inc.php增加一行$cfg['Servers'][$i]['port'] = '33060';,這樣phpmyadmin就可以正常用了,訪問http://localhost:800/phpmyadmin/即可
  4. 當(dāng)然,server/config.js里面的MySQL端口也改成33060

此時重新操作第2、3步,即可成功導(dǎo)入sql文件。

測試本地Nodejs服務(wù)器環(huán)境

構(gòu)建demo API

構(gòu)建過程很簡單,兩步:

一、新建一個koa2控制器,叫demo

server/controllers目錄新建一個demo.js:

async function get (ctx, next) {
  ctx.state.data = {
    msg: 'Hello 小程序!'
  }
}

module.exports = {
  get
}

二、新建一個路由,也叫demo

server/routes目錄的index.js中,在router.post('/message', controllers.message.post)下方追加:

// demo
router.get('/demo', controllers.demo.get)

到此,demo API構(gòu)建完畢。

訪問demo接口

在server目錄敲入node app,啟動http服務(wù)。

瀏覽器訪問http://localhost:5757/weapp/demo,頁面顯示:

{"code":0,"data":{"msg":"Hello 小程序!"}}

測試成功。

安裝nodemon來監(jiān)控文件修改,隨時自動重啟http服務(wù)

nodemon在nodejs界如雷貫耳,它的作用是監(jiān)控文件修改,隨時幫你重啟你的服務(wù)。

npm install -g nodemon

這樣就裝好了,不用做任何配置。

今后啟動服務(wù)就不再是node app,而是nodemon app

這之后,你每天需要開2個命令行窗口,一個用于執(zhí)行npm run dev,負(fù)責(zé)前端開發(fā),另一個去server目錄用于執(zhí)行nodemon app,負(fù)責(zé)啟動http服務(wù)。

不校驗(yàn)合法域名

我們本地環(huán)境的域名是http://localhost:5757,這顯然不是騰訊眼中的合法域名,所以,需要到開發(fā)者工具右上角的“詳情”中勾上“不校檢合法域名...”。

安裝wafer2-client-sdk

官網(wǎng):https://github.com/tencentyun/wafer2-client-sdk

這又是什么東西呢,它中文名叫“微信小程序客戶端騰訊云增強(qiáng) SDK”,說白了就是增強(qiáng)會話能力的一個工具包。在項目根目錄安裝它:

npm install wafer2-client-sdk --save

使用方法:

在項目根目錄的App.vue中加入:

import qcloud from 'wafer2-client-sdk'

然后看一下官方文檔。文檔說,從2018年上半年開始,微信登錄授權(quán)必須手動觸發(fā),并且給了范例代碼。所以我們代碼大致是:

<button open-type="getUserInfo" lang="zh_CN" @getuserinfo="doLogin">獲取用戶信息</button>

這里注意,官方文檔是bindgetuserinfo="doLogin",我們在mpvue當(dāng)然要改成@getuserinfo="doLogin"。

然后添加一個方法:

  methods: {
    doLogin: function () {
      qcloud.setLoginUrl(config.loginUrl)

      const session = qcloud.Session.get()

      if (session) {
        // 第二次登錄
        // 或者本地已經(jīng)有登錄態(tài)
        // 可使用本函數(shù)更新登錄態(tài)
        qcloud.loginWithCode({
          success: res => {
            console.log('二次登陸', res)
            // this.setData({ userInfo: res, logged: true })
            // util.showSuccess('登錄成功')
          },
          fail: err => {
            console.error(err)
            // util.showModel('登錄錯誤', err.message)
          }
        })
      } else {
        // 首次登錄
        qcloud.login({
          success: res => {
            console.log('首次登陸', res)
            // this.setData({ userInfo: res, logged: true })
            // util.showSuccess('登錄成功')
          },
          fail: err => {
            console.error(err)
            // util.showModel('登錄錯誤', err.message)
          }
        })
      }
    }
  }

上方代碼也是修改自官網(wǎng)提供的范例,注意兩點(diǎn):

  1. config.loginUrl需要先定義一個配置項,其實(shí)它就是http://localhost:5757/weapp/login
  2. 我注釋掉了一部分,因?yàn)樾枰葘懸恍┕ぞ哳?,而我們現(xiàn)在并沒有寫。

測試過程:從開發(fā)者工具中點(diǎn)擊button,然后觀察控制臺,等幾秒就會打印出自己的用戶信息。

安裝scss支持

默認(rèn)情況下,mpvue沒有安裝scss相關(guān)依賴,所以我們手動安裝一下:

npm install node-sass sass-loader --save-dev
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容