node之express

作者 新城 日期 2017-09-13
node之express

1.安装
创建一个目录,然后进入此目录并将其作为当前工作目录。

1
2
mkdir myapp
cd myapp

通过 npm init 命令为你的应用创建一个 package.json 文件。

1
npm init

此命令将要求你输入几个参数,例如此应用的名称和版本。你可以直接按“回车”键接受默认设置即可,下面这个除外:

1
entry point: (index.js)

通过npm 安装

1
npm install express --save

2.hello world
进入myapp目录
新建index.js

1
2
3
4
5
6
7
8
9
var express = require('express');
var app = express();

app.get('/', function (req, res) {
res.send('Hello world!');
});

console.log('Server is run')
app.listen(3000);

命令行运行

1
2
3
4
node index.js

快速生成express骨架
//npm install express-generator -g

打开 http://localhost:3000/

3.路由

index.js 引入express http 设置路由
app.ues实现中间件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var express = require("express");
var http = require("http");

var app = express();

app.use("/home", function(request, response, next) {
response.writeHead(200, { "Content-Type": "text/plain" });
response.end("Welcome to the homepage!\n");
});

app.use("/about", function(request, response, next) {
response.writeHead(200, { "Content-Type": "text/plain" });
response.end("Welcome to the about page!\n");
});

app.use(function(request, response) {
response.writeHead(404, { "Content-Type": "text/plain" });
response.end("404 error!\n");
});

http.createServer(app).listen(1337);

all方法

all方法就是将每个路由相同的操作提取出来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var express = require("express");
var http = require("http");
var app = express();

app.all("*", function(request, response, next) {
response.writeHead(200, { "Content-Type": "text/plain" });
next();
});

app.get("/", function(request, response) {
response.end("Welcome to the homepage!");
});

app.get("/about", function(request, response) {
response.end("Welcome to the about page!");
});

app.get("*", function(request, response) {
response.end("404!");
});

http.createServer(app).listen(1337);
set方法

set方法是指定变量的值
__dirname 指全局变量 当前文件运行的目录结构在哪里

1
2
app.set("views", __dirname + "/views");
app.set("view engine", "jade");

response对象

response.redirect方法
response.redirect方法允许网址重定向

1
2
3
response.redirect("/hello/anime");
response.redirect("http://www.example.com");
response.redirect(301, "http://www.example.com");

response.senfFile方法
response.sedFile方法用于发送文件

1
response.sendFile("/path/to/anime.mp4");

response.render方法
response.render方法用于渲染模板

1
2
3
app.get("/", function(request, response) {
response.render("index", { message: "Hello World" });
});

request对象

request.ip
获取用户IP

requset.file
用于获取用户上传文件

4.搭建https服务器

未参与实践

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var fs = require('fs');
var options = {
key: fs.readFileSync('E:/ssl/myserver.key'),
cert: fs.readFileSync('E:/ssl/myserver.crt'),
passphrase: '1234'
};

var https = require('https');
var express = require('express');
var app = express();

app.get('/', function(req, res){
res.send('Hello World Expressjs');
});

var server = https.createServer(options, app);
server.listen(8084);
console.log('Server is running on port 8084');