学习笔记 | 什么是Node.js

2021-12-14 12:51:01 浏览数 (1)

开始去了解node.js

Node.js简介

Node.js是运行在服务端的JavaScript,是一个事件驱动I/O服务端Javascript环境。

查看版本:

node版本管理工具nvm

Node.js应用

  • Node.js应用的构成:
    • 引入required模块
    • 创建服务器
    • 接收请求与响应请求

创建Node.js应用

  • 步骤一:引入required模块
    • 使用require指令来载入http模块,并将实例化的HTTP复制给变量http,实例如下:
代码语言:javascript复制
var http = require("http");
  • 步骤二:创建服务器
  1. 创建一个server.js的文件:
代码语言:javascript复制
var http = require("http");

http.createServer(function(request,response){
    //发送http头部
    //HTTP状态值:200 :OK
    //内容类型:text/plain
    response.writeHead(200,{'Content-Type':'text/plain'});
    //发送响应数据 “Hello World”
    response.end('Hello Worldn');
}).listen(8888);

//终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');
  1. 使用node命令执行以上代码
代码语言:javascript复制
node server.js
  1. 访问http://127.0.0.1:8888/

npm使用介绍

  • 查看npm版本
代码语言:javascript复制
npm -v
  • 升级版本
代码语言:javascript复制
npm install npm -g
  • 安装包
代码语言:javascript复制
npm install <Module Name>          # 本地安装
npm install <Module Name> -g       # 全局安装
  • 查看安装信息
代码语言:javascript复制
npm list -g                        # 查看全局安装的模块
npm list <Module Name>             # 查看某个模块的版本号
npm ls                             # 查看当前目录下的包信息
  • 卸载模块
代码语言:javascript复制
npm uninstall <Module Name>
  • 更新模块
代码语言:javascript复制
npm update <Module Name>
  • 搜索模块
代码语言:javascript复制
npm search <Module Name>
  • 创建模块
代码语言:javascript复制
$npm init                            # 会自动生成package.json

$npm adduser                         # 在npm资源库中注册用户
Username:XXXX
Password:XXXXXXX
Email: XXXXXXXXX@XXX.XXX

$npm publish                         # 发布模块

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

  • REPL(Read Eval Print Loop:交互式解释器),Node自带交互式解释器,可以执行读取,执行,打印,循环等任务
  • 在Node的REPL中可以执行:
  1. 简单的表达式运算
代码语言:javascript复制
$ node
> 1 4
5
> 5/2
2.5
>  
  1. 使用变量
代码语言:javascript复制
$ node
> 1 4
5
> 5/2
2.5
> x=10
10
> var y=10
undefined
> x y
20
> console.log("Hello World!")
Hello World!
undefined
>  
  1. 多行表达式
代码语言:javascript复制
$ node
> do {
... x  ;
... console.log("x:" x);
... }while(x<5);
x:1
x:2
x:3
x:4
x:5
undefined
>       
  1. 下划线变量[使用下划线(_)获取上一个表达式的运算结果]
代码语言:javascript复制
$ node
> var x=10;
undefined
> y=10;
10
> x y
20
> var sum=_
undefined
> console.log(sum)
20
undefined
>
  1. 两次ctrl c停止REPL

Node.js的回调函数

  • Node.js异步编程的直接体现就是回调
  • 阻塞代码实例
  • 创建一个文件 input.txt ,内容如下:
代码语言:javascript复制
Hello world!
  • 创建 main.js 文件, 代码如下:
代码语言:javascript复制
var fs = require("fs");

var data = fs.readFileSync('input.txt');

console.log(data.toString());
console.log("程序执行结束!");
  • 以上代码执行结果如下:
代码语言:javascript复制
$ node main.js
Hello World!

程序执行结束!
  • 非阻塞代码实例
  • 创建一个文件 input.txt ,内容如下:
代码语言:javascript复制
Hello World!
  • 创建 main.js 文件, 代码如下:
代码语言:javascript复制
var fs = require("fs");

fs.readFile('input.txt', function (err, data) {
    if (err) return console.error(err);
    console.log(data.toString());
});

console.log("程序执行结束!");
  • 以上代码执行结果如下:
代码语言:javascript复制
$ node main.js
程序执行结束!
Hello World!
  • 第一个实例在文件读取完后才执行完程序。 第二个实例我们不需要等待文件读取完,这样就可以在读取文件时同时执行接下来的代码,大大提高了程序的性能。
  • 因此,阻塞是按顺序执行的,而非阻塞是不需要按顺序的,所以如果需要处理回调函数的参数,我们就需要写在回调函数内。

0 人点赞