node.js初学

本文最后更新于:4 个月前

1.node.js简介

node.js基于chrom8,相当于一个运行js代码的虚拟平台,使得js不在依存html,可以构建服务器。

2.node.js搭建服务器

1
2
3
4
5
6
7
var http=require("http");
var server=http.creatServer(function(req,res){
res.setHeader("Content-Type","text/html;charset=UTF8");
res.end("first http server end");
})
//监听3000端口
server.listen(3000)

此时可以浏览器访问http://127.0.0.1:3000/

3.fs模块的简单使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var http=require("http");
var fs=require("fs");
var server=http.createServer(function(req,res){
res.setHeader("Content-Type","text/html;charset=UTF8");
fs.readFile("./Hello.html",function (err,data){
res.write(data);
res.end("first http server end");
})

})
//监听3000端口
server.listen(3000)

// 终端打印如下信息
console.log('Server running at http://127.0.0.1:3000/');

4.路由的简单设计

req.url可以得到形如/user/zhang/update的路由
通过字符串的match方法来匹配正则表达式从而获得各信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var http=require("http");
var fs=require("fs");
var server=http.createServer(function(req,res){
res.setHeader("Content-Type","text/html;charset=UTF8");

var url=req.url;
var arr=url.match(/\/user\/(.+)\/(.+)$/);
if (!arr){
res.end("no pages!");
}else {
var $1=arr[1];
var $2=arr[2];
res.write("<h2>"+$1+"</h2>");
res.write("<h2>"+$2+"</h2>");
res.end();
}
})
//监听3000端口
server.listen(3000)

Content-Type:

res.setHeader("Content-Type","text/html;charset=UTF8");
  • text/html:html格式
  • text/plain:纯文本格式
  • text/xml:xml格式
  • image/gif:gif图片格式
  • image/jpg:jpg图片格式
  • image/png:png图片格式

5.模块

当一个js文件可以独立完成一个功能时,这个文件就是一个模块;
当多个文件共同完成一个功能时,这些文件就是一个模块
模块module

HTML的多文件引用

多个js文件公用一个html宿主时,变量都在同一个作用域,因为变量是window的对象

node.js的多文件引用

  • require()在引用文件的同时也在执行该文件
  • node.js文件中的变量作用域天生隔离,因为没有window对象
  • 各node.js文件间需要自动暴露

exports命令

1
2
var num=100;
export.num=num;

另外一个js文件再使用require引入该文件就可以使用num变量了

exports的命名空间

每次require返回的是被引用文件中exports所暴露的属性或方法组装成的对象

module.exports

当一个js文件只想暴露一个属性时,一般是暴露构造函数
其他的属性或方法赋值给构造函数的属性
可以通过new People.People()可以new对象

文件夹的使用

require的参数没有.js后缀时就默认在引用一个文件夹
require的参数是一个文件夹时,会把文件夹的每一个文件封装到一个对象里返回,
var result=require(“./result”);
result.file1.area

node_modules文件夹

如果文件夹内部存放了node_modules文件夹,require的参数就不需要./开头了,只要require的参数不是./起头就是引入node_modules文件夹内部的文件

6.npm的基本使用

npm的身份证和依赖

  • 依赖就是node_modules里的模块,身份证是packge.json,里面会有一些包名、关键字等信息,使用npm init可以初始化然后设置身份证
  • 在有了身份证后,再添加依赖时要有–save选项,如npm install –save nzh 这样做是为了便于包的传播安装,别人拿到package.json后就可以直接npm install来安装所有package.json中的依赖。