腾讯犀牛鸟云开发校园技术布道师养成计划第八天


云开发与Nodejs

云函数的运行环境是 Node.js,我们可以在云函数中使用Nodejs内置模块以及使用 npm 安装第三方依赖来帮助我们更快的开发。借助于一些优秀的开源项目,避免了我们重复造轮子,相比于小程序端,能够大大扩展云函数的使用

云函数与Nodejs

技术文档:Nodejs API 中文技术文档

Nodejs的内置模块

Nodejs的常用内置模块以及功能如下所示,这些模块都是可以在云函数里直接使用的:

  • fs 模块:文件目录的创建、删除、查询以及文件的读取和写入,下面的createReadStream方法类似于读取文件,
  • path 模块:提供了一些用于处理文件路径的API
  • url模块:用于处理与解析 URL
  • http模块:用于创建一个能够处理和响应 http 响应的服务
  • querystring模块:解析查询字符串
  • until模块 :提供用于解析和格式化 URL 查询字符串的实用工具;
  • net模块:用于创建基于流的 TCP 或 IPC 的服务器
  • crypto模块:提供加密功能,包括对 OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证功能的一整套封装

在云函数中使用HTTP请求访问第三方服务可以不受域名限制,即不需要像小程序端一样,要将域名添加到request合法域名里;也不受http和https的限制,没有域名只有IP都是可以的,所以云函数可以应用的场景非常多,即能方便的调用第三方服务,也能够充当一个功能复杂的完整应用的后端。不过需要注意的是,云函数是部署在云端,有些局域网等终端通信的业务只能在小程序里进行。

常用变量

module、exports、require

require用于引入模块、 JSON、或本地文件。 可以从 node_modules 引入模块,可以使用相对路径(例如 ./、)引入本地模块或 JSON 文件,路径会根据 __dirname 定义的目录名或当前工作目录进行处理。

node模块化遵循的是commonjs规范,CommonJs定义的模块分为: 模块标识(module)、模块导出(exports) 、模块引用(require)。

在node中,一个文件即一个模块,使用exports和require来进行处理。

Lodash实用工具库

Lodash是一个一致性、模块化、高性能的 JavaScript 实用工具库,通过降低 array、number、objects、string 等数据类型的使用难度从而让 JavaScript 变得更简单。Lodash 的模块化方法非常适用于:遍历 array、object 和 string;对值进行操作和检测;创建符合功能的函数。

技术文档:Lodash官方文档Lodash中文文档

moment时间处理

开发小程序时经常需要格式化时间、处理相对时间、日历时间以及时间的多语言问题,这个时候就可以使用比较流行的momentjs了。

技术文档:moment官方文档moment中文文档

获取公网IP

有时我们希望能够获取到服务器的公网IP,比如用于IP地址的白名单,或者想根据IP查询到服务器所在的地址,ipify就是一个免费好用的依赖,通过它我们也可以获取到云函数所在服务器的公网IP。

技术文档:ipify Github地址

Buffer文件流

图像处理sharp

sharp是一个高速图像处理库,可以很方便的实现图片编辑操作,如裁剪、格式转换、旋转变换、滤镜添加、图片合成(如添加水印)、图片拼接等,支持JPEG, PNG, WebP, TIFF, GIF 和 SVG格式。在云函数端使用sharp来处理图片,而云存储则可以作为服务端和小程序端来传递图片的桥梁。

技术文档:sharp官方技术文档

连接数据库MySQL

公网连接数据库MySQL

技术文档:Sequelize

私有网络连接MySQL

默认情况下,云开发的函数部署在公共网络中,只可以访问公网。如果开发者需要访问腾讯云的 Redis、TencentDB、CVM、Kafka 等资源,需要建立私有网络来确保数据安全及连接安全

连接数据库Redis

二维码qrcode

技术文档:node-qrcode Github地址

邮件处理

技术文档:Nodemailer Github地址Nodemailer官方文档

Excel文档处理

Excel是存储数据比较常见的格式,那如何让云函数拥有读写Excel文件的能力呢?我们可以在Github上搜索关键词“Node Excel”,去筛选Star比较多,条件比较契合的。

Github地址:node-xlsx

读取云存储的Excel文件

将数据库里的数据保存为CSV

技术文档:json2CSV

HTTP处理

got、superagent、request、axios、request-promise

尽管云函数的Nodejs版本比较低(目前为8.9),但绝大多数模块我们都可以使用Nodejs 12或13的环境来测试,不过有时候也要留意有些模块不支持8.9,比如got 10.0.1以上的版本。

node中,http模块也可作为客户端使用(发送请求),第三方模块request对其使用方法进行了封装,操作更方便!所以来介绍一下request模块

get请求

post请求

结合文件流

加解密Crypto

crypto模块是nodejs的核心模块之一,它提供了安全相关的功能,包含对 OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证功能的一整套封装。由于crypto模块是内置模块,我们引入它是无需下载,就可以直接引入。

发短信

“qcloudsms_js”: “^0.1.1”


文章作者: 毛雷
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 毛雷 !
评论
  目录