Nodejs第二次教程Npm使用介绍

举报
tea_year 发表于 2022/03/21 09:13:19 2022/03/21
【摘要】 Npm是随同node一起安装的包的管理工具,能够解决代码部署上的很多问题常见使用场景:1、 允许用户从npm服务器下载并安装别人编写的命令行程序到本地使用2、 允许用户从npm服务器下载别人编写好的包到本地使用3、 允许自己编写的命令行程序或包上传到npm服务器供别人使用由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入 "npm -v" 来测试是否成功安...


Npm是随同node一起安装的包的管理工具,能够解决代码部署上的很多问题

常见使用场景:

1、 允许用户从npm服务器下载并安装别人编写的命令行程序到本地使用

2、 允许用户从npm服务器下载别人编写好的包到本地使用

3、 允许自己编写的命令行程序或包上传到npm服务器供别人使用

由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入 "npm -v" 来测试是否成功安装。

如果你安装的是旧版本的 npm,可以很容易得通过 npm 命令来升级,命令如下:

$ sudo npm install npm -g

/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js

npm@2.14.2 /usr/local/lib/node_modules/npm

如果是 Window 系统使用以下命令即可:

npm install npm -g

使用淘宝镜像的命令:

npm install -g cnpm --registry=https://registry.npm.taobao.org

使用npm命令安装模块

Npm安装node模块语法:npm install <Module Name>

以下实例,我们使用 npm 命令安装常用的 Node.js web框架模块 express:

npm install express

安装好之后,express 包就放在了工程目录下的 node_modules 目录中,因此在代码中只需要通过 require('express') 的方式就好,无需指定第三方包路径。

var express = require('express');

全局安装与本地安装

npm 的包安装分为本地安装(local)、全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已,比如

npm install express     # 本地安装

npm install express -g     # 全局安装


如果出现以下错误:

npm err! Error: connect ECONNREFUSED 127.0.0.1:8087

解决办法为:

npm config set proxy null

本地安装

1. 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。

2. 可以通过 require() 来引入本地安装的包。

全局安装

1. 将安装包放在 /usr/local 下或者你 node 的安装目录。

2. 可以直接在命令行里使用。

如果你希望具备两者功能,则需要在两个地方安装它或使用 npm link

接下来我们使用全局方式安装 express

$ npm install express -g

安装过程输出如下内容,第一行输出了模块的版本号及安装位置。

express@4.13.3 node_modules/express

├── escape-html@1.0.2

├── range-parser@1.0.2

├── merge-descriptors@1.0.0

├── array-flatten@1.1.1

├── cookie@0.1.3

├── utils-merge@1.0.0

├── parseurl@1.3.0

├── cookie-signature@1.0.6

├── methods@1.1.1

├── fresh@0.3.0

├── vary@1.0.1

├── path-to-regexp@0.1.7

├── content-type@1.0.1

├── etag@1.7.0

├── serve-static@1.10.0

├── content-disposition@0.5.0

├── depd@1.0.1

├── qs@4.0.0

├── finalhandler@0.4.0 (unpipe@1.0.0)

├── on-finished@2.3.0 (ee-first@1.1.1)

├── proxy-addr@1.0.8 (forwarded@0.1.0, ipaddr.js@1.0.1)

├── debug@2.2.0 (ms@0.7.1)

├── type-is@1.6.8 (media-typer@0.3.0, mime-types@2.1.6)

├── accepts@1.2.12 (negotiator@0.5.3, mime-types@2.1.6)

└── send@0.13.0 (destroy@1.0.3, statuses@1.2.1, ms@0.7.1, mime@1.3.4, http-errors@1.3.1)

查看安装信息

你可以使用以下命令来查看所有全局安装的模块:

$ npm list -g


├─┬ cnpm@4.3.2

├── auto-correct@1.0.0

├── bagpipe@0.3.5

├── colors@1.1.2

├─┬ commander@2.9.0

└── graceful-readlink@1.0.1

├─┬ cross-spawn@0.2.9

└── lru-cache@2.7.3

……

如果要查看某个模块的版本号,可以使用命令如下:

$ npm list grunt


projectName@projectVersion /path/to/project/folder

└── grunt@0.4.1


Node.js REPL(交互式解析器)

Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应。

Node 自带了交互式解释器,可以执行以下任务:

读取 - 读取用户输入,解析输入了Javascript 数据结构并存储在内存中。

执行 - 执行输入的数据结构

打印 - 输出结果

循环 - 循环操作以上步骤直到用户两次按下 ctrl-c 按钮退出。

Node 的交互式解释器可以很好的调试 Javascript 代码。

开始学习 REPL

我们可以输入以下命令来启动 Node 的终端:

$ node

>

这时我们就可以在 > 后输入简单的表达式,并按下回车键来计算结果。

简单的表达式运算

接下来让我们在 Node.js REPL 的命令行窗口中执行简单的数学运算:

$ node

> 1 +4

5

> 5 / 2

2.5

> 3 * 6

18

> 4 - 1

3

> 1 + ( 2 * 3 ) - 4

3

>

使用变量

你可以将数据存储在变量中,并在你需要的时候使用它。

变量声明需要使用 var 关键字,如果没有使用 var 关键字变量会直接打印出来。

使用 var 关键字的变量可以使用 console.log() 来输出变量。

$ node

> x = 10

10

> var y = 10

undefined

> x + y

20

> console.log("Hello World")

Hello World

undefined

> console.log("www.runoob.com")

www.runoob.com

undefined

多行表达式

Node REPL 支持输入多行表达式,这就有点类似 JavaScript。接下来让我们来执行一个 do-while 循环:

$ node

> var x = 0

undefined

> do {

... x++;

... console.log("x: " + x);

... } while ( x < 5 );

x: 1

x: 2

x: 3

x: 4

x: 5

undefined

>

... 三个点的符号是系统自动生成的,你回车换行后即可。Node 会自动检测是否为连续的表达式。

下划线(_)变量

你可以使用下划线(_)获取上一个表达式的运算结果:

$ node

> var x = 10

undefined

> var y = 20

undefined

> x + y

30

> var sum = _

undefined

> console.log(sum)

30

undefined

>

REPL 命令

ctrl + c - 退出当前终端。

ctrl + c 按下两次 - 退出 Node REPL

ctrl + d - 退出 Node REPL.

向上/向下 - 查看输入的历史命令

tab - 列出当前命令

.help - 列出使用命令

.break - 退出多行表达式

.clear - 退出多行表达式

.save filename - 保存当前的 Node REPL 会话到指定文件

.load filename - 载入当前 Node REPL 会话的文件内容。

node的文件读取:

首先创建一个TXT文件,然后我们去创建一个js文件

//浏览器中javascript是没有文件操作的能力的
//但是nodeJavaScript是有文件操作的能力的

/*
* fs file-system 的简写,就是文件系统的意思
* node中如果想要进行文件操作,必须引入fs这个核心模块
* fs这个核心模块中,提供了文件操作相关的API
* 如:fs.readFile 就是用来读取文件的
* */
// 首先使用require方法加载fs核心模块

var fs = require("fs");
//读取文件
/*
* 第一个参数就是要读取的文件路径
* 第二个参数是一个回调函数
* 成功
* data 是成功接收的数据
* error null
* 失败
* data null
* error 是错误对象
* */
fs.readFile("hello.txt",function (error,data) {
//其实我们知道文件中储存的是二进制也就是01
//但是我们发现打印出来的不是0.1,那是因为二进制转换成16进制了
//但是不论是二进制还是十六进制,我们都不认识
console.log(data);
//我们通过toString方法转换一下
console.log(data.toString());
});



这样我们运行一下,就把文件读取出来了

node写文件:

首先我们创建一个新的js文件

let fs = require("fs");
/*
* 写文件:
* 第一个参数:-文件路径
* 第二个参数:-文件内容
* */
fs.writeFile("./nihao.txt","大家好!这是我写入的第一个node文件",function (error) {
if(!error){
console.log("文件写入成功!");
}
});


这时候,我们运行一下,就写入一个文件了

http:

/*
* 我们可以使用node非常轻松的构建一个web服务
* node中提供了一个核心模块:http
* http这个模块的职责就是帮你创建编写服务器的
* */
//1.加载http核心模块
let http = require("http");
/*
* 使用 http.createServer()可以创建一个web服务器
* 返回一个server实例
* */
let server = http.createServer();
/*
* 这时候我们就已经有了一个服务器了,那么,服务器能干嘛?
* 1.提供服务:对数据库服务
* 2.发请求
* 3.接受请求
* 4.处理请求
* 5.给个反馈(发送响应)
* 我们使用request这个参数注册request请求事件,
* 当客户端请求发送过来,就会自动触发服务器的请求事件,然后执行第二个参数:回调处理函数
* request请求的回调函数的参数
* request:可以获取客户端的一些请求信息,例如请求路径
* response:响应对象可以用来给客户端发送一些响应消息
* response对象有一个方法:write,可以用来给客户端发送响应数据
* write可以使用多次,但是最后一次,一定要使用end来结束响应,否则客户端会一直等待
* */
server.on("request",function (request,response) {
console.log("收到客户端的请求了,请求路径是"+request.url);

response.write("<h1>aaa</h1>");
response.write("<p>hello node</p>")
//使用end方法告诉客户端,终止响应
response.end();
})
//绑定端口号,启动服务器
server.listen(8888,function () {
console.log("服务器启动成功,我们可以通过http://127.0.0.1/8888来进行访问");
})



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。