开始去了解node.js
Node.js简介
Node.js是运行在服务端的JavaScript,是一个事件驱动I/O服务端Javascript环境。
查看版本:
node版本管理工具nvm
Node.js应用
- Node.js应用的构成:
- 引入required模块
- 创建服务器
- 接收请求与响应请求
创建Node.js应用
- 步骤一:引入required模块
- 使用require指令来载入http模块,并将实例化的HTTP复制给变量http,实例如下:
var http = require("http");
- 步骤二:创建服务器
- 创建一个server.js的文件:
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/');
- 使用node命令执行以上代码
node server.js
- 访问http://127.0.0.1:8888/
npm使用介绍
- 查看npm版本
npm -v
- 升级版本
npm install npm -g
- 安装包
npm install <Module Name> # 本地安装
npm install <Module Name> -g # 全局安装
- 查看安装信息
npm list -g # 查看全局安装的模块
npm list <Module Name> # 查看某个模块的版本号
npm ls # 查看当前目录下的包信息
- 卸载模块
npm uninstall <Module Name>
- 更新模块
npm update <Module Name>
- 搜索模块
npm search <Module Name>
- 创建模块
$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中可以执行:
- 简单的表达式运算
$ node
> 1 4
5
> 5/2
2.5
>
- 使用变量
$ 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
>
- 多行表达式
$ node
> do {
... x ;
... console.log("x:" x);
... }while(x<5);
x:1
x:2
x:3
x:4
x:5
undefined
>
- 下划线变量
[使用下划线(_)获取上一个表达式的运算结果]
$ node
> var x=10;
undefined
> y=10;
10
> x y
20
> var sum=_
undefined
> console.log(sum)
20
undefined
>
- 两次ctrl c停止REPL
Node.js的回调函数
- Node.js异步编程的直接体现就是回调
- 阻塞代码实例
- 创建一个文件 input.txt ,内容如下:
Hello world!
- 创建 main.js 文件, 代码如下:
var fs = require("fs");
var data = fs.readFileSync('input.txt');
console.log(data.toString());
console.log("程序执行结束!");
- 以上代码执行结果如下:
$ node main.js
Hello World!
程序执行结束!
- 非阻塞代码实例
- 创建一个文件 input.txt ,内容如下:
Hello World!
- 创建 main.js 文件, 代码如下:
var fs = require("fs");
fs.readFile('input.txt', function (err, data) {
if (err) return console.error(err);
console.log(data.toString());
});
console.log("程序执行结束!");
- 以上代码执行结果如下:
$ node main.js
程序执行结束!
Hello World!
- 第一个实例在文件读取完后才执行完程序。 第二个实例我们不需要等待文件读取完,这样就可以在读取文件时同时执行接下来的代码,大大提高了程序的性能。
- 因此,阻塞是按顺序执行的,而非阻塞是不需要按顺序的,所以如果需要处理回调函数的参数,我们就需要写在回调函数内。