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

小程序模板網

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

發布時間:2018-04-25 09:01 所屬欄目:小程序開發教程

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

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

簡介

wafer

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

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

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

wafer2

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

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

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

我們可以直接在小程序開發工具里編寫后臺代碼,并上傳代碼,后臺是區分開發環境和生產環境的。

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

搭建

開發環境

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

生產環境

官方文檔說的都是開發環境,要是你想部署到生產環境,有些配置需要改一下。

域名

開發環境的域名是騰訊云分配的 xxx.qcloud.la,而生產環境需要使用自己在騰訊云里的域名。

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

綁定域名后,可以在開發工具「詳情」-「騰訊云狀態」確認生產環境域名:

切換到生產環境后,別忘了把客戶端的接口域名也改一下。

數據庫

在騰訊云管理中心里,修改生產環境 MySql 的登錄密碼。然后登錄 phpMyAdmin,在首頁可以看到 MySql 的服務器 ip 地址,記下來。

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


  mysql: {
    host: '修改為生產環境 ip',
    port: 3306,
    user: 'root',
    db: 'cAuth',
    pass: '修改為生產環境密碼',
    char: 'utf8mb4'
  },

在開發工具上傳正式代碼,再到管理中心的生產環境,點擊「代碼部署」。這樣就完成生產環境的配置及部署了。

比外需要注意,開發環境的 MySql 是 5.7 的,而生產環境是 5.6 的。注意不要在開發的時候使用 JSON 等 MySql 5.7 才有的功能。

登錄

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

使用

wafer2 的客戶端及服務端 sdk,已經集成了登錄邏輯,在客戶端引用 sdk 后,只要調用它的 login 方法就可以實現登錄了:


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

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

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

問題

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

這是個很低級的錯誤,問題已經給官方反饋了。截止到寫這篇文章,取數據的地方改了,但存的地方還沒改......

所以現在要正常使用,需要到 wafer2-client-sdk/lib/login.js,找到保存用戶數據的地方:


Session.set(res.skey);

修改為:


Session.set(res);

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

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

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

第一個接口

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

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

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


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

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

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

添加一句代碼:


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

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

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


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

恭喜!你自己開發的第一個接口已經調通了!

數據庫操作

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

我們可以在 phpMyAdmin 里,在 cAppinfo 這個數據庫里創建需要的表。

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


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"
}

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

更高級的 sql 用法,可以查看knex.js 官網。

總結

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

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

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

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



易優小程序(企業版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.xiuhaier.com/wxmini/doc/course/23953.html 復制鏈接 如需定制請聯系易優客服咨詢:800182392 點擊咨詢
QQ在線咨詢
AI智能客服 ×