我们先来了解一下node.js
Node.js是一项服务器技术。我们都知道客户端提出服务请求,而服务器端负责处理请求并提供服务。而对于互联网来说,在Node.js之前JavaScript是一项完全的客户端技术,被用于浏览器中实现各种动画,对DOM的操作等等。而后端,即服务端则是由PHP、Python、Ruby、Java等等语言来实现。Node.js的出现,使得前后端使用同一种语言,统一模型的梦想得以实现。
初始化模块
npm init -y
常用的内置模块有
1、path模块 :用于处理文件路径。
path.normalize(路径解析,得到规范路径);
path.join(路径合并);
path.resolve(获取绝对路径);
path.relative(获取相对路径)。
2、until模块 :弥补js功能不足,新增API。
util.format(格式化输出字符串);
util.isArray(检查是否为数组);
util.RegExp(是不是正则);
util.isDate(是不是日期型);
util.inherits(child,parent)实现继承;
3.fs模块:文件操作系统的API
fs.readFile(filename,[options],callback); 读取文件。
fs.writeFile(filename,data,[options],callback);写文件。
fs.appendFile(filename,data,[options],callback);以追加的方式写文件。
fs.open(filename,flags,[mode],callback); 打开文件。
filename:文件名,必须。
data:写入的数据或者buffer流。
flags:操作标识,打开方式,r w。
[options]:指定权限,读、写、执行。是否可续写。
callback:读取文件后的回调函数。function(err,data);
4、http模块
http.createServer(function(){});创建服务器。
http.get('路径',callback);发送get请求。
http.request(options,callback);发送请求。
options:options是一个类似关联数组的对象,表示请求的参数,callback作为回调函数,需要传递一个参数。
options常用的参数有host、port(默认为80)、method(默认为GET)、path(请求的相对于根的路径,默认是“/”。
常用的第三方模块
1.mysql模块
npm install mysql
var http = require("http");
var app = http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.end("你好啊朋友");
});
app.listen(3000, "localhost");
上面代码的关键是http模块的createServer方法,表示生成一个HTTP服务器实例。该方法接受一个回调函数,该回调函数的参数,分别为代表HTTP请求和HTTP回应的request对象和response对象。
2.express模块
npm install express(安装指令)
var express = require('express');
var exp = express();
exp.get('/', function (req, res) {
res.send('Hello world!');
});
exp.listen(3000);
express 与 http 的关系
其实 express是对http的封装,express 会在后台调用http模块。
express的特点
中间件(middleware)
简单说,中间件就是处理HTTP请求的函数。它最大的特点就是,一个中间件处理完,再传递给下一个中间件。App实例在运行过程中,会调用一系列的中间件。
每个中间件可以从App实例,接收三个参数,依次为request对象(代表HTTP请求)、response对象(代表HTTP回应),next回调函数(代表下一个中间件)。每个中间件都可以对HTTP请求(request对象)进行加工,并且决定是否调用next方法,将request对象再传给下一个中间件。
function zjj(request, response, next) {
next();
}
use方法
use是express注册中间件的方法,它返回一个函数。
exp.use(function(request, response, next) {
console.log(123);
next();
});
exp.use(function(request, response) {
response.writeHead(200, { "Content-Type": "text/plain" });
response.end("你好呀朋友");
});
收到HTTP请求后,先调用第一个中间件,在控制台输出一行信息,然后通过next方法,传给第二个中间件,输出HTTP回应。由于第二个中间件没有调用next方法,所以request对象就不再向后传递。
托管静态文件
exp.use(express.static('public'))
exp.use(express.static('files'))
关于express更多的特性就需要大家自己去查找了,今天就讲到这里