在上篇文章做了一个很简单的server
他会显示出 Hello World
var express = require('express'); //call express来用var app = express();app.get('/', function (req, res) { res.send('Hello World');});var server = app.listen(8081, function () { var host = server.address().address; var port = server.address().port; console.log("Example app listening at http://%s:%s", host, port);});
那接下来就要开始设定路由(Route)了
路由就像是地址一样,你进到了帝宝之后想要找3F305号房的林先生,
地址就会是 帝宝/3F/305/林先生 这样,
这只是粗浅的概念,所以我们现在要来设定路由的规定,
不同的网址会呈现不同的画面
第二个应用:简单的路由规则
var express = require('express'); var app = express(); app.get('/', function(req, res) { res.send('Hello World'); }); app.get('/me', function(req, res) { res.send('我是pyk'); }); //:<variable name>? 可以放入变数 app.get('/who/:name?', function(req, res) { var name = req.params.name; res.send('名字: ' + name); }); app.get('/who/:name?/:age?', function(req, res) { var name = req.params.name; var age = req.params.age; res.send('名字: ' + name + ' ' + age + '岁'); }); //*代表出现错误(上面没有的规则) app.get('*', function(req, res) { res.send('还没有设定哦'); }); var server = app.listen(8082, function() { console.log('Listening on port 8082'); });
: 和 :? 的差别在于多了 "?" 代表可以选填(可以不要有这个参数)
基于资安考量,现实不太适合使用这样的方法。
app.all
代表所有的HTTP请求(request)都要经过它,之后再用next给下个中间件(middleware)处理。
app.get
则是指有GET的HTTP请求才会经过,因为没有next(),只要执行完就不会在调用下个中间件了。
除了get方法以外,Express还提供post、put、delete方法,即HTTP动词都是Express的方法。
如果出现 throw er Unhandled error event 多半是那个port有应用程式正在使用
可以换一个port号码试试
尝试看看你刚刚输入的规则
如果输入没有写到的规则就会进入 app.get('*', ...
以上都只是简单的response给HTML,下一步要做的是根据网址转到不同的页面
首先先建立 index.html 和 about.html,内容是什么都可以
index.html
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>index</title></head><body><h1>This is 'index' page</h1></body></html>
about.html
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>about</title></head><body><h1>This is 'about' page</h1></body></html>
修改原本的server.js档案
var express = require('express'); var app = express(); app.get('/', function(req, res) { res.sendfile('./views/index.html'); }); app.get('/about', function(req, res) { res.sendfile('./views/about.html'); }); app.get('*', function(req, res) { res.send('404 not found'); }); var server = app.listen(8082, function() { console.log('Listening on port 8082'); });
把原本的send() 改成sendfile() 加上HTML档所在的位置
执行画面如下
这样就完成了一个简易的路由了