Node.js进阶之外部依赖模块的使用和代码示例详解

注意:后续技术分享,第一时间更新,以及更多更及时的技术资讯和学习技术资料,将在公众号CTO Plus发布,请关注公众号:CTO Plus

 Node.js系列文章推荐阅读:

在本文中,我们将深入了解如何使用外部模块来增强我们的Node.js应用程序。我们安装了express Web框架模块、utility工具模块,以及request请求模块。其中,示例1当用户输入URL查询参数时,我们获取GET请求的参数并计算参数的MD5值返回给浏览器。示例2将使用一个名为`request`的模块来发出HTTP请求。这只是Node.js外部模块的一个入门级别的例子,但它提供了一个很好的起点,可以帮助你开始构建更复杂的应用程序。让我们开始吧!

package.json文件介绍

此处先介绍一下 package.json 这个文件的用法和作用,npm 是 Node.js 的包管理器,用于管理 Node.js 的模块和依赖项。在使用 npm 安装模块时,npm 会自动创建一个名为 "package.json" 的文件,定义了项目的各种元信息,用于描述当前项目的信息和依赖项,包括项目的名称,git repo 的地址,作者等,也便于其他开发人员和工具了解项目的信息和依赖项。如果没有 "package.json" 文件,npm 将无法正确管理模块和依赖项。有了这个文件,这个项目在部署时,我们就不必将 `node_modules` 目录也上传到服务器,服务器在拿到我们的项目时,只需要执行 `npm install`,则 npm 会自动读取 package.json 中的依赖并安装在项目的 `node_modules` 下面,然后程序就可以在服务器上跑起来了。

npm init 命令用于初始化一个新的 "package.json" 文件。当执行 npm init 命令时,npm 会提示用户输入一些项目信息,如项目名称、版本号、作者、许可证等。用户可以根据需要选择是否输入这些信息。如果用户不输入任何信息,npm 将使用默认值创建一个 "package.json" 文件。

"package.json" 文件还可以用于定义项目的脚本命令,以便于执行一些常见的任务,如启动应用程序、运行测试等。

我们新建一个pro2的目录,并在目录下执行:npm init 命令

`npm init` 这个命令的作用就是帮我们互动式地生成一份最简单的 package.json 文件,`init` 是 `initialize` 的意思,初始化。

这时会要求我们输入一些信息,根据自己情况填就可以了,也可以不填,使用默认值即可。执行完后,目录下就会有个 package.json 文件,如下所示

"package.json" 文件是一个 JSON 格式的文件,包含了项目的元数据和依赖项信息。以下是 "package.json" 文件的一些常见属性:

  1. name:项目的名称。
  2. version:项目的版本号。
  3. description:项目的描述。
  4. main:项目的入口文件。
  5. scripts:定义了一些脚本命令,如 "start"、"test" 等。
  6. dependencies:项目的依赖项。
  7. devDependencies:项目的开发依赖项。
  8. author:项目的作者信息。
  9. license:项目的许可证信息。

示例1:使用工具模块计算md5值

安装外部依赖 `express` 和 `utility` 两个模块

命令行下输入:npm install express utility --save

此处的指令没有指定 registry,没有指定的情况下,默认从 npm 官方安装。`--save`​参数,这个参数的作用,就是会在你安装依赖的同时,自动把这些依赖写入 package.json。命令执行完成之后,查看 package.json,会发现多了一个 `dependencies` 字段,如下图:

这时查看 `node_modules` 目录,会发现有两个文件夹,分别是 express 和 utility

建立一个 ` index.js ` 文件:

// 引入依赖
var express = require('express');
var utility = require('utility');

// 实例化express
var app = express();

app.get('/', (req,res)=>{
    // 从 req.query 中取出 q 参数。
    var query = req.query.q;

    // 调用 utility.md5 方法,得到 md5 之后的值
    var md5Value = utility.md5(query);

    res.send(md5Value);
});

const PORT = 3000;
app.listen(PORT, (req,res)=>{
   console.log(`Example app listening on port 3000! http://localhost:${PORT}`);
});

启动服务,访问 `http://localhost:3000/?q=steverocket`,输出查询参数的md5值

如果直接访问 `http://localhost:3000/` 会抛错

可以看到,这个错误是从 `crypto.js` 中抛出的。

这是因为,当我们不传入 `q` 参数时,`req.query.q` 取到的值是 `undefined`,`utility.md5` 直接使用了这个空值,导致下层的 `crypto` 抛错。

示例2:使用请求模块请求数据

使用外部依赖模块之前,必须使用npm进行安装,如果不使用npm进行安装直接使用的话,则会报如下异常信息

所以,我们需要安装request请求模块。可以使用npm(Node.js包管理器)来安装请求模块。打开终端并运行以下命令:

npm install request

这将安装最新版本的请求模块。

接下来,我们在上一个示例的代码基础之上,新增一个get_data的接口,将使用请求模块来发出HTTP请求。在项目的根目录中,创建一个名为`app.js`的文件,并添加以下内容:

const request = require('request');

app.get('/get_data', (req,res)=>{
    var query = req.query.q;
    request(query, (error, response, body) => {
      if(!error && response.statusCode === 200){
          console.log(body);
          res.send(body);
      }
    });
});

浏览器中输入:http://localhost:3000/get_data?q=https://jsonplaceholder.typicode.com/posts

在这个代码中,我们首先引入了请求模块,并根据用户输入的查询参数q来请求目标的网址获取数据,使用`request()`方法来发出HTTP请求。第一个参数是请求的URL。第二个参数是一个回调函数,它将在请求完成时被调用。在这个例子中,我们简单地将响应主体打印到控制台上,以及将响应的数据返回给浏览器。

Node.js专栏:https://blog.csdn.net/zhouruifu2015/category_6080879.html


更多资料 · 微信公众号搜索:CTO Plus 关注后,获取更多,我们一起学习交流。

关于公众号的描述访问如下链接


关于Articulate“做一个知识和技术的搬运工。做一个终身学习的爱好者。做一个有深度和广度的技术圈。”一直以来都想把专业领域的技https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SteveRocket

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值