Node.js入门

1.简介

Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境,基于Google的V8引擎。
如果我们使用 PHP 来编写后端的代码时,需要 Apache 或者 Nginx 的 HTTP 服务器,并配上 mod_php5 模块和 php-cgi。不过对 Node.js 来说,概念完全不一样了。使用 Node.js 时,我们不仅仅 在实现一个应用,同时还实现了整个 HTTP 服务器。事实上,我们的 Web 应用以及对应的 Web 服务器基本上是一样的。

Node.js安装地址及方法:
地址:https://nodejs.org/en/download/
方法:https://www.runoob.com/nodejs/nodejs-install-setup.html

2.npm

2.1 nmp使用

npm(全称 Node Package Manager,即“node包管理器”)是一个免费的模块分享社区,是Node.js默认的、用JavaScript编写的软件包管理系统,会随着Node.js一起安装,能解决NodeJS代码部署上的很多问题。
官网:https://www.npmjs.com/
npm有windows系统的全局变量,在命令行输入npm -v可以查看到当前安装的npm版本。
可以用npm来引入第三方的模块,我在这里以命令行颜色输出的模块colors为例,这个模块可以使命令行里面的字的样式变成别的颜色,地址为https://www.npmjs.com/package/colors ,里面有使用方法

  • 在命令行中进入到要安装模块的目录,输入命令npm install colors
    安装完成后会出现node_modules文件夹和package-lock.json两个东西
    node1.png

node_modules里面有封装好了的模块文件。

  • 在这个目录下新建一个app.js文件
    img.png
  • 在里面输入
    1
    2
    3
    4
    5
    6
    7
    8
    var colors = require('colors');

    console.log('hello'.green); // outputs green text
    console.log('i like cake and pies'.underline.red) // outputs red underlined text
    console.log('inverse the color'.inverse); // inverses the color
    console.log('OMG Rainbows!'.rainbow); // rainbow
    console.log('Run the trap'.trap); // Drops the bass

  • 保存之后在原来的命令行中输入node app.js
    可以看到效果:
    img_1.png

2.2 npm身份证

我们从npm中下载的modules文件夹被称为‘依赖’,我们可以使用package.json去管理这些的‘依赖’。需要创建一个身份证,通常创建项目第一件事就是新建身份证。

  • 新建一个项目文件夹
  • 在命令行进入到响应的文件夹,输入命令npm init
  • 接着输入表单信息,包括包名,描述,版本号,作者等信息,可以按需回答,也可以回车跳过
    img_2.png
  • 填好后原来的文件夹之中会出现一个package.json文件,里面包含了身份证的信息
  • 再次以模块colors为例,在命令行输入命令npm install --save colors,package.json文件中就会出现模块的依赖项
    img_3.png

这样做的原因:node_modules中的模块之间都是相互影响的,如果引入的模块特别多,进行文件传输时,可能会造成非常的大的影响。而只传身份证,
在下一次安装模块使用时,只要在项目文件夹下输入命令npm install,npm就会检索存放在package.json里面的信息,安装所有依赖。

3.内置Node.js模块使用

为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。

模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。
除了可以使用npm来使用第三方模块之外,Node.js还提供了许多内置模块,见https://nodejs.org/docs/latest-v15.x/api/
已文件系统模块fs为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//引入http模块
var http= require("http");
//引入fs模块
var fs =require("fs");
//用node.js创建服务器
var server=http.createServer(function(req,res){
console.log(req.url);
//更改http报文的头部,设置编码为utf8
res.setHeader("Content-Type","text/html;charset=UTF8")
//自定义路由
if(req.url==="/xiao")
{
//用fs来读取模块
fs.readFile("./public/wen.txt",function(err,data){
res.end(data)
})
}
else{
res.end("页面不存在")
}
})
//监听端口
server.listen(6531)

通过这种方式,可以建立一个服务器,设计路由,从而方便网页的访问