网友真实露脸自拍10p,成人国产精品秘?久久久按摩,国产精品久久久久久无码不卡,成人免费区一区二区三区

小程序模板網(wǎng)

騰訊云 wafer2 上手,輕松部署小程序后端!

發(fā)布時(shí)間:2018-04-25 09:01 所屬欄目:小程序開發(fā)教程

前端程序員開發(fā)一個(gè)自己的小程序,比起學(xué)習(xí)小程序開發(fā),更大的難點(diǎn)在于搭建小程序的后臺(tái)。

本文從一個(gè)初學(xué)者的角度,簡(jiǎn)單介紹一下騰訊云推出的小程序解決方案 wafer2,讓沒有后臺(tái)開發(fā)經(jīng)驗(yàn)的程序員,也能搭建起自己的小程序后臺(tái)。

簡(jiǎn)介

wafer

后臺(tái)的搭建涉及到購(gòu)買服務(wù)器、購(gòu)買數(shù)據(jù)庫(kù),然后要在服務(wù)器上安裝運(yùn)行環(huán)境等。說實(shí)話,我連要在服務(wù)器上裝什么都不知道。所以希望能有一個(gè)東西,幫我把這些都做好,要是再提供一些登錄之類的常用接口就更好了。這就是 wafer 所做的。

其實(shí)在小程序后臺(tái)配置域名的地方,就有跳轉(zhuǎn)到騰訊云的鏈接:

進(jìn)入后按照指引購(gòu)買,就可以擁有一個(gè)配置好的后臺(tái)。

wafer2

wafer 相對(duì)于自己搭建后臺(tái)已經(jīng)方便很多了,但我用起來還是感覺有難度。我不熟悉 Linux,也搞不懂如何測(cè)試代碼。直到發(fā)現(xiàn)騰訊云又推出了 wafer2。

如果你用上了新版小程序開發(fā)工具,會(huì)在工具的右上角發(fā)現(xiàn)一個(gè)「騰訊云」的按鈕:

這個(gè)按鈕就是用來連接 wafer2 的。

我們可以直接在小程序開發(fā)工具里編寫后臺(tái)代碼,并上傳代碼,后臺(tái)是區(qū)分開發(fā)環(huán)境和生產(chǎn)環(huán)境的。

下面我們看看怎么使用 wafer2。

搭建

開發(fā)環(huán)境

搭建 wafer2 很簡(jiǎn)單,大家按照 官方文檔 來,應(yīng)該沒什么問題的,這里就不贅述了。

生產(chǎn)環(huán)境

官方文檔說的都是開發(fā)環(huán)境,要是你想部署到生產(chǎn)環(huán)境,有些配置需要改一下。

域名

開發(fā)環(huán)境的域名是騰訊云分配的 xxx.qcloud.la,而生產(chǎn)環(huán)境需要使用自己在騰訊云里的域名。

通過騰訊云管理中心注冊(cè)的域名,會(huì)自動(dòng)部署 HTTPS 證書。但是要備案的話,需要登記服務(wù)器 ip,而 wafer2 的服務(wù)器 ip 是沒有提供給我們的。目前備案只能再買一個(gè)服務(wù)器......

綁定域名后,可以在開發(fā)工具「詳情」-「騰訊云狀態(tài)」確認(rèn)生產(chǎn)環(huán)境域名:

切換到生產(chǎn)環(huán)境后,別忘了把客戶端的接口域名也改一下。

數(shù)據(jù)庫(kù)

在騰訊云管理中心里,修改生產(chǎn)環(huán)境 MySql 的登錄密碼。然后登錄 phpMyAdmin,在首頁(yè)可以看到 MySql 的服務(wù)器 ip 地址,記下來。

回到開發(fā)工具,找到 server/config.js,修改里面 MySql 配置的 ip 地址及登錄密碼:


  mysql: {
    host: '修改為生產(chǎn)環(huán)境 ip',
    port: 3306,
    user: 'root',
    db: 'cAuth',
    pass: '修改為生產(chǎn)環(huán)境密碼',
    char: 'utf8mb4'
  },

在開發(fā)工具上傳正式代碼,再到管理中心的生產(chǎn)環(huán)境,點(diǎn)擊「代碼部署」。這樣就完成生產(chǎn)環(huán)境的配置及部署了。

比外需要注意,開發(fā)環(huán)境的 MySql 是 5.7 的,而生產(chǎn)環(huán)境是 5.6 的。注意不要在開發(fā)的時(shí)候使用 JSON 等 MySql 5.7 才有的功能。

登錄

先說一下小程序基本都會(huì)用到的登錄。

使用

wafer2 的客戶端及服務(wù)端 sdk,已經(jīng)集成了登錄邏輯,在客戶端引用 sdk 后,只要調(diào)用它的 login 方法就可以實(shí)現(xiàn)登錄了:


qcloud.login({
  success: res => {
    console.log('登錄成功', res)
  },
  fail: err => {
    console.log('登錄失敗', err)
  }
})

登錄成功會(huì)將用戶數(shù)據(jù)保存在數(shù)據(jù)庫(kù) cAuth 的 cSessionInfo 表里,并將用戶數(shù)據(jù)返回。

看起來很美好,但是這里面是存在一些問題的。

問題

用戶登錄過之后會(huì)將用戶信息緩存在本地,當(dāng)有緩存的時(shí)候會(huì)將用戶信息直接返回。但是 sdk 中,緩存的存取都是有問題的,有緩存的情況下,會(huì)返回 undifined。

這是個(gè)很低級(jí)的錯(cuò)誤,問題已經(jīng)給官方反饋了。截止到寫這篇文章,取數(shù)據(jù)的地方改了,但存的地方還沒改......

所以現(xiàn)在要正常使用,需要到 wafer2-client-sdk/lib/login.js,找到保存用戶數(shù)據(jù)的地方:


Session.set(res.skey);

修改為:


Session.set(res);

另外,還想吐槽一下,sdk 里 wx.login 和 wx.getUserInfo 是搭配使用的。

也就是說,必須要獲取到用戶信息,才能實(shí)現(xiàn)登錄。而我們知道,小程序在獲取用戶信息時(shí)會(huì)彈窗,并且用戶是可以拒絕的。拒絕后一段時(shí)間內(nèi),調(diào)用 wx.getUserInfo 都不會(huì)再?gòu)棿啊?梢哉f wafer2 沒有考慮用戶拒絕授權(quán)的情況。而這恰好是微信不提倡的做法,甚至可能導(dǎo)致無法通過審核。

這個(gè)問題我也向官方反饋了。

第一個(gè)接口

學(xué)習(xí)要有目的性才能保持興趣,配置完了我們來寫一個(gè)自己的接口。

wafer2 基于 Node.js 平臺(tái),使用了 Koa2 框架。

在 server/controllers 下新建文件 hello.js,輸入如下代碼:


module.exports = async ctx => {
  ctx.state.data = "Hello World !"
}

代碼很簡(jiǎn)單,就是暴露一個(gè)返回結(jié)果是「Hello World !」的方法,「Hello World !」會(huì)被放在請(qǐng)求結(jié)果的 data 里。

然后我們打開 server/routes/index.js

添加一句代碼:


// 測(cè)試接口
router.get('/hello', controllers.hello)

代碼就只有這么多。保存之后點(diǎn)擊「騰訊云」-「上傳測(cè)試代碼」,如果是第一次上傳要勾上「部署后自動(dòng)安裝依賴」。等待上傳成功,就可以測(cè)試我們的接口了。

調(diào)用 xxx.qcloud.la/weapp/hello,看是否返回以下結(jié)果:


{
  code: 0,
  data: "Hello World !"
}

恭喜!你自己開發(fā)的第一個(gè)接口已經(jīng)調(diào)通了!

數(shù)據(jù)庫(kù)操作

wafer2 使用了 knex 作為數(shù)據(jù)庫(kù)的查詢構(gòu)造器,并且已經(jīng)配置好了。對(duì)于有 sql 經(jīng)驗(yàn)的程序員,可以很快的上手。

我們可以在 phpMyAdmin 里,在 cAppinfo 這個(gè)數(shù)據(jù)庫(kù)里創(chuàng)建需要的表。

假如已經(jīng)有一個(gè)「Book」的表,下面代碼,簡(jiǎn)單展示了在 wafer2 里,如何對(duì)數(shù)據(jù)庫(kù)進(jìn)行增查改刪:


const { mysql } = require('../qcloud')
const uuid = require('node-uuid')

module.exports = async ctx => {
  var id = uuid.v1()
  // 增
  var book = {
    id: id,
    name: "冰與火之歌",
    price: 88
  }
  await mysql("Book").insert(book)
  // 查
  var res = await mysql("Book").where({ id }).first()
  // 改
  await mysql("Book").update({ price: 66 }).where({ id })
  // 刪
  await mysql("Book").del().where({ id })

  ctx.state.data = "OK"
}

數(shù)據(jù)庫(kù)操作默認(rèn)都是異步執(zhí)行的,如果要等待操作完成,需要在操作語句前加上 await。

更高級(jí)的 sql 用法,可以查看knex.js 官網(wǎng)。

總結(jié)

我已經(jīng)將自己的小程序「碰詞er」后臺(tái)遷移到 wafer2 了。開發(fā)的時(shí)候各種坑,給騰訊云提了一些很明顯的 bug。說不定「碰詞er」是第一個(gè)使用 wafer2 的小程序。

wafer2 用起來方便。我們不用懂太多后臺(tái)配置的東西,前后端代碼都在小程序開發(fā)工具編寫,直接在開發(fā)工具上傳后端代碼,區(qū)分了開發(fā)、生產(chǎn)環(huán)境,而且目前還是免費(fèi)的,雖說不知道會(huì)不會(huì)一直有免費(fèi)版。

但目前缺點(diǎn)同樣明顯,比如備案不方便,登錄接口不合理,sdk 有 bug 等。我還碰到服務(wù)器宕機(jī),需要重啟的情況。希望騰訊云接下來能解決這些問題。

總的來說,wafer2 使用門檻低,但現(xiàn)在還不夠穩(wěn)定。個(gè)人項(xiàng)目玩玩還是可以的,商業(yè)項(xiàng)目要用的話,建議再觀察一段時(shí)間吧。



易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉(cāng)庫(kù):starfork
本文地址:http://www.xiuhaier.com/wxmini/doc/course/23953.html 復(fù)制鏈接 如需定制請(qǐng)聯(lián)系易優(yōu)客服咨詢:800182392 點(diǎn)擊咨詢
QQ在線咨詢
AI智能客服 ×