新聞中心
云函數(shù)經(jīng)常需要處理一些非?;A事情,比如時間、數(shù)組、數(shù)字、對象、字符串、IP等,自己造輪子的成本很高,這時候我們可以到前面提到的awesome nodejs的Github里去找一些別人已經(jīng)寫好的開源模塊,我們直接下載引入即可,下面就列舉一些比較好用的工具并會結合云函數(shù)給出一些詳細的案例。

創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目成都網(wǎng)站建設、網(wǎng)站設計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元源城做網(wǎng)站,已為上家服務,為源城各地企業(yè)和個人服務,聯(lián)系電話:18982081108
一、moment時間處理和Timezone世界時間
1、云函數(shù)時間處理
開發(fā)小程序時經(jīng)常需要格式化時間、處理相對時間、日歷時間以及時間的多語言問題,這個時候就可以使用比較流行的momentjs了,可以參考moment中文文檔
使用開發(fā)者工具新建一個云函數(shù),比如moment,然后在package.json增加moment最新版latest的依賴:
"dependencies": {
"wx-server-sdk": "latest",
"moment": "latest"
}
在index.js里的代碼修改為如下,我們將moment區(qū)域設置為中國,將時間格式化為 十二月 23日 2019, 4:13:29 下午的樣式以及相對當前時間多少分鐘前:
const cloud = require('wx-server-sdk')
const moment = require("moment");
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
})
exports.main = async (event, context) => {
moment.locale('zh-cn');
time1 = moment().format('MMMM Do YYYY, h:mm:ss a');
time2 = moment().startOf('hour').fromNow();
return { time1,time2}
}
值得注意的是,云函數(shù)中的時區(qū)為 UTC+0,不是 UTC+8,格式化得到的時間和在國內(nèi)的時間是有8個小時的時間差的,如果在云函數(shù)端將時間格式轉換為字符串需要給小時數(shù)+8(這個處理需要注意一些細節(jié),不會處理的建議修改時區(qū)),也可以修改時區(qū)。
2、函數(shù)處理時區(qū)的兩個方法
云函數(shù)修改時區(qū)我們可以使用timezone依賴(和moment是同一個開源作者),timezone技術文檔
在package.json增加moment-timezone最新版latest的依賴,然后修改上面相應的代碼即可,
"dependencies": {
"wx-server-sdk": "latest",
"moment-timezone": "latest"
}
然后使用在云函數(shù)里使用如下代碼,即可完成時區(qū)的轉換。
const moment = require('moment-timezone');
time1 = moment().tz('Asia/Shanghai').format('MMMM Do YYYY, h:mm:ss a');
云函數(shù)的時區(qū)除了可以使用moment來處理外,還可以通過配置云函數(shù)的環(huán)境變量的方法(在云開發(fā)控制臺),添加一個字段 TZ,值為Asia/Shanghai來指定時區(qū)即可。
二、獲取公網(wǎng)IP
有時我們希望能夠獲取到服務器的公網(wǎng)IP,比如用于IP地址的白名單,或者想根據(jù)IP查詢到服務器所在的地址,ipify就是一個免費好用的依賴,通過它我們也可以獲取到云函數(shù)所在服務器的公網(wǎng)IP,ipify Github地址。
使用開發(fā)者工具新建一個getip的云函數(shù),然后輸入以下代碼,并在package.json的”dependencies”里增加最新版的ipify依賴:
"dependencies": {
"wx-server-sdk": "latest",
"ipify": "latest"
}
在index.js里的代碼修改為如下,調(diào)用ipify返回ipv4的服務器地址:
const cloud = require('wx-server-sdk')
const ipify = require('ipify');
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
})
exports.main = async (event, context) => {
return await ipify({ useIPv6: false })
}
然后右鍵getip云函數(shù)根目錄,選擇在終端中打開,輸入npm install安裝依賴,之后上傳并部署所有文件。我們可以在小程序端調(diào)用這個云函數(shù),就可以得到云函數(shù)服務器的公網(wǎng)IP,這個IP是隨機而有限的幾個,反復調(diào)用getip,就能夠窮舉所有云函數(shù)所在服務器的ip了??赡苣銜谑褂迷坪瘮?shù)連接數(shù)據(jù)庫或者用云函數(shù)來建微信公眾號的后臺時需要用到IP白名單,我們可以把這些ip都添加到白名單里面,這樣云函數(shù)就可以做很多事情啦。
三、加解密Crypto
crypto模塊是nodejs的核心模塊之一,它提供了安全相關的功能,包含對 OpenSSL 的哈希、HMAC、加密、解密、簽名、以及驗證功能的一整套封裝。由于crypto模塊是內(nèi)置模塊,我們引入它是無需下載,就可以直接引入。
使用開發(fā)者工具新建一個云函數(shù),比如crypto,在index.js里輸入以下代碼,我們來了解一下crypto支持哪些加密算法,并以MD5加密為例:
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
})
const crypto = require('crypto');
exports.main = async (event, context) => {
const hashes = crypto.getHashes();
//獲取crypto支持的加密算法種類列表
//md5 加密 CloudBase2020 返回十六進制
var md5 = crypto.createHash('md5');
var message = 'CloudBase2020';
var digest = md5.update(message, 'utf8').digest('hex');
return {
"crypto支持的加密算法種類":hashes,
"md5加密返回的十六進制":digest
};
}
將云函數(shù)部署之后調(diào)用從返回的結果我們可以了解到,云函數(shù)crypto模塊支持46種加密算法。
四、Lodash實用工具庫
Lodash是一個一致性、模塊化、高性能的 JavaScript 實用工具庫,通過降低 array、number、objects、string 等數(shù)據(jù)類型的使用難度從而讓 JavaScript 變得更簡單。Lodash 的模塊化方法非常適用于:遍歷 array、object 和 string;對值進行操作和檢測;創(chuàng)建符合功能的函數(shù)。
技術文檔: Lodash官方文檔、Lodash中文文檔
使用開發(fā)者工具新建一個云函數(shù),比如lodash,然后在package.json 增加 lodash最新版latest的依賴:
"dependencies": {
"lodash": "latest"
}
在index.js里的代碼修改為如下,這里使用到了lodash的chunk方法來分割數(shù)組:
const cloud = require('wx-server-sdk')
var _ = require('lodash');
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
})
exports.main = async (event, context) => {
//將數(shù)組拆分為長度為2的數(shù)組
const arr= _.chunk(['a', 'b', 'c', 'd'], 2);
return arr;
}
右鍵lodash云函數(shù)目錄,選擇“在終端中打開”,npm install 安裝模塊之后右鍵部署并上傳所有文件。我們就可以通過多種方式來調(diào)用它(前面已詳細介紹)即可獲得結果。Lodash作為工具,非常好用且實用,它的源碼也非常值得學習,更多相關內(nèi)容則需要大家去Github和官方技術文檔里深入了解。
在awesome Nodejs頁面我們了解到還有Ramba、immutable、Mout等類似工具庫,這些都非常推薦。借助于Github的awesome清單,我們就能一手掌握最酷炫好用的開源項目,避免了自己去收集收藏。
本文題目:創(chuàng)新互聯(lián)小程序云教程:云開發(fā)云函數(shù)實用工具庫
網(wǎng)站鏈接:http://www.dlmjj.cn/article/djehhcj.html


咨詢
建站咨詢
