Express学习之开始入门<2>
2015-09-29 21:53
363 查看
四.基本的路由(routing)教程
这篇教程是对Express路由的基本介绍,路由适用于决定Express应用该如何对客户端发来的对特定网址 [endpoint(表示API的具体网址):指的是一个URL(或者路径)和一个特定的HTTP请求方法] 的请求进行回复。
每个路由可以有一个或者多个处理器函数,当请求的URL搭配这些路由的时候,这个/些函数就会被执行。
路由以下面的格式进行定义:
如果想获取更多关于路由的详情,请咨询路由指南
五.Express中的静态文件
在Express内建的中间件
把将要作为静态资源的目录名称传递给中间件
现在你可以加载
寻找文件是相对于静态资源目录的,因此,静态资源目录的名字不是URL的一部分。
如果你想要多个目录作为静态资源的目录,你可以多次调用中间件
静态文件将会以使用中间件
如果你想为静态文件创建一个虚拟的路径前缀的话,你可以为静态资源目录声明一个顶层路径名称。
现在,你可以以从路径前缀 “/static”中加载
但是你提供给中间件
六.常问的问题(FAQ)
1.如何构建应用的框架呢?
这个问题没有绝对的答案,取决于你所创建应用和团队的规模。为了尽可能地灵活,Express对应用框架并没有做出假设。
路由和应用的其他特定逻辑可能放在你希望的大量文件中,以你偏好的目录结构。看以下的例子寻找灵感。
Route listings
Route map
MVC style controllers
当然,Express也有第三方扩展,简化了一些模式:
Resourceful routing
2.如何定义模型?
Express没有数据库的概念,这个就留给了Node.js的第三模块,第三方模块会允许你与任何一种数据库进行交互。
看一下基于Express的框架 LoopBack,该模块关注模型数据。
3.如何验证用户?
这是另一个Express没有设计的领域,你可以使用任何你想要使用的验证方案,对于一个简单的”用户/密码”解决方案,请看 这个例子
4.Express支持哪种模版?
Express支持任何遵守签名规则
5.如何处理404s?
在Express中,404s并不是错误引起的。因此,处理错误的中间件并不会捕获404s。这是因为404只是额外工作的缺失;换句话说,Express执行了所有的中间件和路由,发现没有一个相应,你所要做的就在在最底部添加一个中间件来处理404:
6.如何设置一个错误处理器
以其它中间件的格式,你定义一个中间件,不过你定义的这个中间件是四个参数,而其它中间件是三个参数。使用函数签名
更多的信息,请看 Error handling
7.该如何渲染HTML?
不要这样做!没必要使用
这篇教程是对Express路由的基本介绍,路由适用于决定Express应用该如何对客户端发来的对特定网址 [endpoint(表示API的具体网址):指的是一个URL(或者路径)和一个特定的HTTP请求方法] 的请求进行回复。
每个路由可以有一个或者多个处理器函数,当请求的URL搭配这些路由的时候,这个/些函数就会被执行。
路由以下面的格式进行定义:
app.METHOD(PATH, HANDLER),来解释下这几个名词的意思:
app:是Express应用的实例
METHOD:指的是HTTP请求的方法(包括
GET、
POST等)
PATH:是服务器上的一个路径
HANDLER:这是一个函数,当客户端请求的URL搭配路由的时候,就会执行这个函数。
// 在主页上回复"Hello World!" app.get('/', function (req, res) { res.send('Hello World!'); }); // 在主页上接受post请求 app.post('/', function (req, res) { res.send('Got a POST request'); }); // 在"/user"路径上接受put请求 app.put('/user', function (req, res) { res.send('Got a PUT request at /user'); }); // 在"/user"接受delete请求 app.delete('/user', function (req, res) { res.send('Got a DELETE request at /user'); });
如果想获取更多关于路由的详情,请咨询路由指南
五.Express中的静态文件
在Express内建的中间件
express.static的帮助下,我们就能很好地管理
iamges、
JavaScript、
CSS和其他的静态文件。
把将要作为静态资源的目录名称传递给中间件
express.static来直接管理文件。如果你把
iamges、
JavaScript、
CSS这些文件放在
public目录下,你可以这样做:
app.use(express.static('public'));
现在你可以加载
public目录下的文件:
http://localhost:3000/images/kitten.jpg http://localhost:3000/css/style.css http://localhost:3000/js/app.js http://localhost:3000/images/bg.png http://localhost:3000/hello.html
寻找文件是相对于静态资源目录的,因此,静态资源目录的名字不是URL的一部分。
如果你想要多个目录作为静态资源的目录,你可以多次调用中间件
express.static。
app.use(express.static('public')); app.use(express.static('files'));
静态文件将会以使用中间件
express.static设置静态资源目录的顺序被搜索。
如果你想为静态文件创建一个虚拟的路径前缀的话,你可以为静态资源目录声明一个顶层路径名称。
app.use('/static', express.static('public'));
现在,你可以以从路径前缀 “/static”中加载
public目录下的静态文件了。
http://localhost:3000/static/images/kitten.jpg http://localhost:3000/static/css/style.css http://localhost:3000/static/js/app.js http://localhost:3000/static/images/bg.png http://localhost:3000/static/hello.html
但是你提供给中间件
express.static的路径是相对于你开启node进程所在的目录,如果你在另一个目录中运行Express应用的话,使用资源目录的绝对路径是安全的。
app.use('/static', express.static(__dirname + '/public'));
六.常问的问题(FAQ)
1.如何构建应用的框架呢?
这个问题没有绝对的答案,取决于你所创建应用和团队的规模。为了尽可能地灵活,Express对应用框架并没有做出假设。
路由和应用的其他特定逻辑可能放在你希望的大量文件中,以你偏好的目录结构。看以下的例子寻找灵感。
Route listings
Route map
MVC style controllers
当然,Express也有第三方扩展,简化了一些模式:
Resourceful routing
2.如何定义模型?
Express没有数据库的概念,这个就留给了Node.js的第三模块,第三方模块会允许你与任何一种数据库进行交互。
看一下基于Express的框架 LoopBack,该模块关注模型数据。
3.如何验证用户?
这是另一个Express没有设计的领域,你可以使用任何你想要使用的验证方案,对于一个简单的”用户/密码”解决方案,请看 这个例子
4.Express支持哪种模版?
Express支持任何遵守签名规则
(path, locals, callback)(函数签名)的模版引擎。为了规范化模版引擎的接口和缓存,请看consolidate.js寻求支持。未列出的模版引擎可能也支持Express签名。
5.如何处理404s?
在Express中,404s并不是错误引起的。因此,处理错误的中间件并不会捕获404s。这是因为404只是额外工作的缺失;换句话说,Express执行了所有的中间件和路由,发现没有一个相应,你所要做的就在在最底部添加一个中间件来处理404:
app.use(function(req, res, next) { res.status(404).send('Sorry cant find that!'); });
6.如何设置一个错误处理器
以其它中间件的格式,你定义一个中间件,不过你定义的这个中间件是四个参数,而其它中间件是三个参数。使用函数签名
(err, req, res, next)来定义:
app.use(function(err, req, res, next) { console.error(err.stack); res.status(500).send('Something broke!'); });
更多的信息,请看 Error handling
7.该如何渲染HTML?
不要这样做!没必要使用
res.render()来渲染HTML。如果你有具体的文件,请使用
res.sendFile()。如果你要使用目录中的许多资源文件,使用
express.static()中间件。
相关文章推荐
- 在事务中执行sql语句
- 在事务中执行sql语句
- Init
- 个人总结·2015年研究生数学建模竞赛D题
- c++策略模式strategy
- PB中的Describe,Evaluatate,LookUpDisplay小结
- 测试基础知识点2
- Search a 2D Matrix II -- leetcode
- ftp命令详解
- sqLite的打开、关闭、增删查改
- 【bzoj1260】 [CQOI2007]涂色paint
- 斐波那契数列之堆栈法与递归法的耗时比较
- 惠普实训第一阶段总结
- Linux经常使用的命令-权利管理命令-权利管理命令chmod
- 彻底销毁你的Linux服务器
- 看《淘宝技术这十年》有感
- 长按、捏合、旋转手势的组合应用及ios8新特性
- 49 Group Anagrams
- 测试基础知识点1
- 四则运算