写点什么

【函数计算实践】nodejs 初探示例——本地 mac 环境

发布于: 2021 年 02 月 17 日
【函数计算实践】nodejs初探示例——本地mac环境

系列文章:

【函数计算实践】一个应用案例

前言

前面提到过阿里云上的函数计算应用。支持的语言包括 nodejs、python、java 等等。但 java 打包相对比较麻烦而且体积较大,所以更倾向于推荐 nodejs 来编写执行函数。所以,下面介绍一些基础功能的实现,这也是在上述案例中所使用到的。

一 背景

nodejs 的下载和安装由于不是本文重点,故不再赘述,网络正常的情况下,基本都可以顺利安装。有问题可在评论区留言,一起探讨解决方案。

直接从官网:https://nodejs.org/en/download/ 下载 mac 64 位版本,对应的是 node-v14.15.3.pkg 版本安装包。

安装后开始执行第一个示例,项目需求将需要的几个功能:1、图片内容获取,2、内容转 base64、计算 md5

二 依赖包

2.1 request

设计为进行 http 调用的最简单方法。它支持 HTTPS,默认情况下遵循重定向。

2.2 crypto

提供通用的加密和哈希算法。用纯 JavaScript 代码实现这些功能不是不可能,但速度会非常慢。Nodejs 用 C/C++实现这些算法后,通过 cypto 这个模块暴露为 JavaScript 接口,这样用起来方便,运行速度也快。

三 示例

注:文本保存为 cal_img_similar.js,在命令行执行 node cal_img_similar.js 即可。

3.1 字符串转 Base64 示例代码

var crypto = require('crypto');
var buffer = Buffer.from('this is an image demo');var base64Str = buffer.toString('base64');console.log(base64Str);
var buffer = Buffer.from('dGhpcyBpcyBhbiBpbWFnZSBkZW1v', 'base64')var initStr = buffer.toString();console.log(initStr);
复制代码


注意:在有些文章,搜到的是使用 new Buffer(ss);语句来创建 Buffer,但现在执行会导致报错:

(node:15386) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.

(Use `node --trace-deprecation ...` to show where the warning was created)

即 Buffer()方法,已经被废弃。所以我们使用 Buffer.from(ss)进行转换。

3.2 字符串计算 md5

var crypto = require('crypto');
var content = '123456';var result = crypto.createHash('md5').update(content).digest("hex")console.log("md5 result:"+result); //e10adc3949ba59abbe56e057f20f883e
复制代码


3.3 获取图片内容

var request = require('request');
var inputImgUrl = "https://avatar.csdn.net/1/A/1/3_zzwwjjdj1.jpg";request(inputImgUrl, function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body); }});
复制代码


输出内容如下: 


可见,直接输出字符(流)会是乱码,所以通常我们会进行 base64 或 计算 md5 转换。处理如下:

var request = require('request');var crypto = require('crypto');
var inputImgUrl = "https://avatar.csdn.net/1/A/1/3_zzwwjjdj1.jpg";request(inputImgUrl, function (error, response, body) { if (!error && response.statusCode == 200) { //计算md5 var result = crypto.createHash('md5').update(body).digest("hex"); console.log(result);
// var buffer = Buffer.from(body); // var base64Str = buffer.toString('base64'); // console.log(base64Str); }});
复制代码


发布于: 2021 年 02 月 17 日阅读数: 14
用户头像

磨炼中成长,痛苦中前行 2017.10.22 加入

微信公众号【程序员架构进阶】。多年项目实践,架构设计经验。曲折中向前,分享经验和教训

评论

发布
暂无评论
【函数计算实践】nodejs初探示例——本地mac环境