Express.js Settings 的秘密
来源:互联网 发布:ubuntu更换桌面环境 编辑:程序博客网 时间:2024/06/11 16:54
Express.js Settings 的秘密
Express.js 是最厉害的框架之一。2011,我使用nodejs以来,它被我绝大多数的项目所应用。它的一个主要卖点、和其他框架一个不同点就是可配置性。可是,当我在写Express.js Guide 和Pro Express.js,我发现一些关于Express.js Setting 的“秘密”从未在他的文档中提及。 documentation (Figure 1).
以下是未提及的设置:
·json spaces
·etag
让我们每一个都仔细地看下吧. 这篇文章适用于Express.js 3.x 和 4.8.1,撰写本文时是其最新版本。
json spaces
当你使用Express.js 的 response.json() 函数去给客户端返回数据时, 你将会从这个特别的参数中受益:replacer 和 spaces.。前者是记录在网站上,而后者则不是。在express引擎下, 这些参数将被传递给JSON.stringify()函数。(MDN docs). JSON.stringify()函数广泛使用于 将本地javascript对象转换成json字符串。
“spaces” 选项将JSON 的输出修改为文档的形式—“将目标字符串变成可打印的”. 例如,你可以设置spaces的值为4来控制每层的缩进。
每层四个空格:
//... Express.js app instantiation
app.set('json spaces',4);
//... Express.js app routes
在另一面, 当你使用response.json() 的默认设置时, (很可能是最小值), 它是输出是难以阅读的 (如图3所示).
etag
ETag 或者实体标记是缓存机制之一。它的工作方式类似于 给页面内容对应的URL一个唯一的ID. 换句话来说, 如果给定URL的内容没有改变, etag不变,浏览器将使用缓存。
如果有人不知道它是什么或者如何使用它,最好别管它, 这意味着Etag默认将开启. 否则, 你可以关闭它:
//... Express.js app instantiation
app.disable('etag');
//... Express.js app routes
默认情况下, Express.js 使用的是 “weak” ETag. 其他可能的值有:
true: weak ETag, e.g., app.enable('etag'); 定制一个如图4所示的etag
false: 再也没有etag (IMHO not recommended), e.g.,app.disable('etag'); 定制一个如图5所示的响应头。
weak: weak ETag, e.g., app.set('etag', 'weak');
strong: strong ETag, e.g., app.set('etag', 'strong');
strong ETag 确保响应中每个字节都是一样的, 而 weak ETag 指的是响应在语义上是一样的。
query parser
查询, 或者查询字符串,是URL问号后面的数据, e.g., http://anywherelib.com?name=value&name2=value2. Express.js 将自动解析这些查询字符在中间件中。a middleware.
query parser 的默认值是继承与qsmodule.
query parser所有可能的值如下:
false: 关闭解析true: 启用解析
simple: 使用 querystring module
extended: 使用 qs module
下面是关闭查询解析的用法示例 :
//... Express.js app instantiation
app.set('query parser', false);
//... Express.js app routes
下面是使用extended 是用法示例:
//... Express.js app instantiation
app.set('query parser', `extended`);
//... Express.js app routes
可以通过你自己的函数作为参数. 在这种情况下, 你将用自定义的函数代替解析库. 就像这个例子,
//... Express.js app instantiation
app.set('query parser',function(value, options){
//... value is a query string, process it here
});
//... Express.js app routes
尾声
跟往常一样, 请小心地使用这些未声明的特性. 同时也要注意框架的版本 (本文用的是 4.8.1).
This text is part of Azat’s upcoming book—Pro Express.js by Apress. If you liked this article, make sure to opt-in for the webapplog.com newsletter.
Express.js 是最厉害的框架之一。2011,我使用nodejs以来,它被我绝大多数的项目所应用。它的一个主要卖点、和其他框架一个不同点就是可配置性。可是,当我在写Express.js Guide 和Pro Express.js,我发现一些关于Express.js Setting 的“秘密”从未在他的文档中提及。 documentation (Figure 1).
以下是未提及的设置:
·json spaces
·etag
·query parser
让我们每一个都仔细地看下吧. 这篇文章适用于Express.js 3.x 和 4.8.1,撰写本文时是其最新版本。
json spaces
当你使用Express.js 的 response.json() 函数去给客户端返回数据时, 你将会从这个特别的参数中受益:replacer 和 spaces.。前者是记录在网站上,而后者则不是。在express引擎下, 这些参数将被传递给JSON.stringify()函数。(MDN docs). JSON.stringify()函数广泛使用于 将本地javascript对象转换成json字符串。
“spaces” 选项将JSON 的输出修改为文档的形式—“将目标字符串变成可打印的”. 例如,你可以设置spaces的值为4来控制每层的缩进。
每层四个空格:
//... Express.js app instantiation
app.set('json spaces',4);
//... Express.js app routes
上面的语句将产生缩进排版,如图2.
在另一面, 当你使用response.json() 的默认设置时, (很可能是最小值), 它是输出是难以阅读的 (如图3所示).
Figure 3: JSON output without spaces set
我的建议是,当你的应用的开发模式为 (app.get('env')=='development’)时,将空格设置为2。etag
ETag 或者实体标记是缓存机制之一。它的工作方式类似于 给页面内容对应的URL一个唯一的ID. 换句话来说, 如果给定URL的内容没有改变, etag不变,浏览器将使用缓存。
在图4中, 这个例子中你可以看到响应头中的Etag
如果有人不知道它是什么或者如何使用它,最好别管它, 这意味着Etag默认将开启. 否则, 你可以关闭它:
//... Express.js app instantiation
app.disable('etag');
//... Express.js app routes
这将会把Etag在响应头中排除。
默认情况下, Express.js 使用的是 “weak” ETag. 其他可能的值有:
true: weak ETag, e.g., app.enable('etag'); 定制一个如图4所示的etag
false: 再也没有etag (IMHO not recommended), e.g.,app.disable('etag'); 定制一个如图5所示的响应头。
weak: weak ETag, e.g., app.set('etag', 'weak');
strong: strong ETag, e.g., app.set('etag', 'strong');
strong ETag 确保响应中每个字节都是一样的, 而 weak ETag 指的是响应在语义上是一样的。
query parser
查询, 或者查询字符串,是URL问号后面的数据, e.g., http://anywherelib.com?name=value&name2=value2. Express.js 将自动解析这些查询字符在中间件中。a middleware.
query parser 的默认值是继承与qsmodule.
query parser所有可能的值如下:
false: 关闭解析true: 启用解析
simple: 使用 querystring module
extended: 使用 qs module
下面是关闭查询解析的用法示例 :
//... Express.js app instantiation
app.set('query parser', false);
//... Express.js app routes
下面是使用extended 是用法示例:
//... Express.js app instantiation
app.set('query parser', `extended`);
//... Express.js app routes
可以通过你自己的函数作为参数. 在这种情况下, 你将用自定义的函数代替解析库. 就像这个例子,
//... Express.js app instantiation
app.set('query parser',function(value, options){
//... value is a query string, process it here
});
//... Express.js app routes
尾声
跟往常一样, 请小心地使用这些未声明的特性. 同时也要注意框架的版本 (本文用的是 4.8.1).
This text is part of Azat’s upcoming book—Pro Express.js by Apress. If you liked this article, make sure to opt-in for the webapplog.com newsletter.
0 0
- Express.js Settings 的秘密
- express.js的安装小结
- Node.js的express框架
- Express.js
- Node.js的Express运行问题处理
- node.js-express框架的初步使用。
- [Node.js] express 安装的问题
- Node.js + express的安装,配置
- node.js安装express遇到的问题
- node.js中express的应用
- node.js+express验证码的实现
- node.js+express+socket的聊天室示例
- node.js 安装express 遇到的问题
- express app.js文件的简述
- node.js的express实现jsonp
- express的router.js源码分析
- node.js express工程的结构
- node.js的express框架搭建
- Cocos2d-x 3.0 开发(七)在程序中处理cocoStudio导出动画
- 21 个非常有用的 .htaccess 提示和技巧
- Cocos2d-x声音和音效
- ubuntu 12.04密码忘记解决办法
- linux系统日常管理
- Express.js Settings 的秘密
- Android电信爱游戏支付
- 第七周项目 1 电阻串联
- 质量度量指标设定分析-2
- 作业报告(1)串并联电阻
- (搜索引擎之solr) solrconfig.xml 的配置说明
- Eclipse设置软tab(用4个空格字符代替)
- parted创建GPT分区
- android实现视频播放的几种方式