Web Development with Node and Express Chapter 14 - Routing
-
构建长久信息架构(IA)的几点建议:
-
不要在
URL
中暴露技术细节:比如以.asp
结尾的 URL。 -
在 URL 中避免无意义的信息:URL 中的每个词都要深思熟虑。比如 URL 中的
home
,根目录就是主页(home page),不需要额外添加信息,比如/home/directions
和/home/contact
。 -
避免不必要的长 URL:在其他条件相同的情况下,短 URL 要优于 长 URL。但不要为了以清晰、SEO 为代价而使用短 URL。使用很常见的缩略词。
-
单词分隔符要一致:从审美学地角度来说,连字符要优于下划线。但无论使用哪种分隔符,要始终保持一致。
-
不要使用空格或者无法使用键盘打出来的字符:使用字母、数字、连字符和下划线。
-
使用小写形式的 URL:这会有争议,有些人觉得混合形式的 URL 不但可以接受,而且是更可取的。使用小写对程序自动化处理(处理 URL 时进行的字符串比较等)会有好处。
-
-
Express 的路由不区分子域名,即
app.get(/about)
会匹配http://meadowlarktravel.com/about
和http://admin.meadowlarktravel.com/about
。可以使用vhost
模块(virtual host,和 Apache 处理字域名的机制一样):
- 路由处理函数是中间件。下面是授权过滤器:
- 路由中的
path
最终会被 Express 转换成正则。在path
中可以使用正则的元字符有:+
,?
,*
,(
, 和)
(不是所有的元字符都支持,比如.
就不支持)。比如/user
和/username
使用同一个处理函数的写法:
- 路由参数使用
:
表示,它匹配除了/
之外的任何字符,匹配的结果放在req.params
对象中,key 是路径参数的名称。在创建 REST API 时经常会使用路由参数。
-
常见的路由组织方式:
-
路由处理程序使用具名函数。
-
路由不要很神秘(比如到处乱放、分散在各个地方)。
-
路由的组织要有扩展性。
-
使用自动化的基于
view
的路由处理程序,去除重复代码(比如 URL 固定的静态资源)。
-
-
路由模块化,一种方法是返回一个数组,数组的每一项是包含
method
和handler
属性的对象,如下所示:
-
按逻辑组织路由,将一些功能相关的放在一起。
-
添加
view
后不用增加路由的方法:
-
其他组织路由的方法:
-
namespaced routing
:express-namespace,适合于有大量有固定前缀的路由。 -
resourceful routing
:express-resource ,它会根据对象的方法自动添加路由,适合于面向对象的代码逻辑。
-
留下评论