你不知道的Express.js设置
发布在每天学点javascript2014年10月3日view:8577
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

你不知道的Express.js设置

Express.js是迄今为止最受欢迎的Node框架之一。自从其发布以来,受到了无数开发者的青睐。它的一个优势是可以非常轻松的进行框架配置。然而,在使用Express.js的很长一段时间中,我发现其中有一些秘密的设置选项并没有在Express.js的文档中明确提及。它们包括:

  • json spaces
  • etag
  • query parser

在接下来的文章中,我们将逐一来看看这些设置的作用究竟是什么。

json spaces

当你在使用Express.js中的response.json()方法向客户端返回JSON数据时,你可以设置其中几个参数: replacer 和spaces。前者在文档中有明确的说明,而后者却没有。在Express.js框架代码中,这些参数都被传递给了JSON.stringify()函数。JSON.stringify()函数是一个被广泛使用的函数,它主要被于将JavaScript对象转换为字符串。

spaces参数被用来修改JSON的输出,它的作用在stringify()函数的文档中有被提及 – ”它主要用于将结果字符串更加漂亮的输出”。例如,如果你将spaces设置为4,那么输出结果将会有4个空格的缩进:

// ... Express.js 应用初始化
app.set('json spaces', 4);
// ... Express.js 应用路由

上面的代码将会产生下面的结果:

另一方面,当你使用response.json()默认参数时,输出的结果可读性会比较差:

etag

ETag或者实体标签是缓存机制的一种。它运行的方式就好比为一个给定的URL赋予了一个独特的标记。换句话说,如果特定URL中的内容不发生比那话,这个etag就会保持不变,于是浏览器就会使用缓存。

如下图所示,你将看到一个ETag的响应头部信息:

如果你不知道etag是什么或者如何使用它,最好的返回发就是不要去设置Express.js中的etag选项,这意味着默认的ETag将会被开启。否则,你可以禁用它:

// ... Express.js 应用初始化
app.disable('etag'); 
// ... Express.js 应用路由

上面的代码将会在去除响应头中的ETag字段。

默认情况下,Express.js会使用”弱”ETag。其他的可选值为:

  • true: 弱ETag。例如,app.enabled(’etag’),如上图所示
  • false: 禁用ETag。例如,app。disable(’etag’)
  • weak: 弱ETag。例如,app.set(’etag’,’weak’)
  • strong: 强stag。例如,app.set(’stag’,’strong’)

一个典型的强ETag会保证响应的每个字节都相同,然而弱ETag只保证响应在语义上相同。

query parser

Query,或者query parser,是从URL中解析出数据的过程。例如,http://anywherelib.com?name=value&name2=value2中究竟包含哪些数据。Express.js自动已中间件的形式包含了解析这些查询字符串的功能。

默认的query parser是拓展了qs模块。

关于query parser的所有可能选项如下所示:

  • false: 禁止解析
  • true: 使用qs模块进行解析
  • simple: 使用核心querystring模块进行解析
  • extended: 使用qs模块

禁用query parser中间件的方法如下所示:

// ... Express.js 应用初始化
app.set('query parser', false);
// ... Express.js 应用路由

使用qs模块中间件的方法如下所示:

// ... Express.js 应用初始化
app.set('query parser', `extended`);
// ... Express.js 应用路由

当然,你也可以传递你自己的函数作为一个参数。在这里的例子中,你传递的自定义参数将被用作解析方法。例如:

// ... Express.js 应用初始化
app.set('query parser', function(value, options){
  // ... value is a query string, process it here
});
// ... Express.js 应用路由

本文参考自Secret Express.js Settings,原文地址http://webapplog.com/secret-express-js-settings/

评论
发表评论
暂无评论
WRITTEN BY
张小俊128
Intern in Baidu mobile search department。认真工作,努力钻研,期待未来更多可能。
TA的新浪微博
PUBLISHED IN
每天学点javascript

javascript进阶级教程,循序渐进掌握javascript

我的收藏