欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

騰訊云 wafer2 上手,輕松部署小程序后端! - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設/小程序開發(fā)/軟件開發(fā)

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!

您當前位置>首頁 » 新聞資訊 » 小程序相關 >

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

發(fā)表時間:2021-4-12

發(fā)布人:葵宇科技

瀏覽次數(shù):102

前端程序員開發(fā)一個自己的小程序,比起學習小程序開發(fā),更大的難點在于搭建小程序的后臺。

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

簡介

wafer

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

其實在小程序后臺配置域名的地方,就有跳轉到騰訊云的鏈接:

進入后按照指引購買,就可以擁有一個配置好的后臺。

wafer2

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

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

這個按鈕就是用來連接 wafer2 的。

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

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

搭建

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

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

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

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

域名

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

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

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

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

數(shù)據(jù)庫

在騰訊云管理中心里,修改生產(chǎn)環(huán)境 MySql 的登錄密碼。然后登錄 phpMyAdmin,在首頁可以看到 MySql 的服務器 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)境,點擊「代碼部署」。這樣就完成生產(chǎn)環(huán)境的配置及部署了。

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

登錄

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

使用

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

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

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

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

問題

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

這是個很低級的錯誤,問題已經(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 是搭配使用的。

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

這個問題我也向官方反饋了。

第一個接口

學習要有目的性才能保持興趣,配置完了我們來寫一個自己的接口。

wafer2 基于 Node.js 平臺,使用了 Koa2 框架。

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

module.exports = async ctx => {
  ctx.state.data = https://www.wxapp-union.com/"Hello World !"
}

代碼很簡單,就是暴露一個返回結果是「Hello World !」的方法,「Hello World !」會被放在請求結果的 data 里。

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

添加一句代碼:

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

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

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

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

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

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

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

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

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

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 = https://www.wxapp-union.com/"OK"
}

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

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

總結

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

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

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

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

相關案例查看更多