500-pagelet 中文文档教程
500 Pagelet
此 Pagelet 负责显示服务器错误。 经过 BigPipe 默认提供 500 个 Pagelet。 但是,如果你 需要自定义 500 可以扩展此 Pagelet。 例如改变 默认视图。
Installation
500 Pagelet 通过节点包管理器 (npm) 分发。
npm install --save 500-pagelet
Support
卡着了? 或者不能围绕一个概念或只是想要一些反馈, 我们在 Freenode 上有一个专用的 IRC 频道:
- IRC Server:
irc.freenode.net
- IRC Room:
#bigpipe
仍然卡住了? 创建一个问题。 你的每一个问题都是我们的一个错误 文档,应该更正。 所以,请不要犹豫,创建 问题,其中很多。
Example
在此示例中,500 Pagelet 扩展了自定义视图。 BigPipe 会自动发现这个扩展版本 如果它与其他 pagelet 一起提供给 BigPipe。 请注意,环境变量可以被否决以管理 显示的数据。
'use strict';
//
// Extend the 500 Pagelet with a custom view.
//
var Fivehundred = require('500-pagelet').extend({
view: '/path/to/my/custom-view.html', // your custom layout
env: 'development' // defaults to process.env.NODE_ENV
});
//
// Initialise BigPipe server.
//
var pipe = require('bigpipe').createServer(2000, {
pagelets: [ Fivehundred, ... ]
});
API
以下方法在 500 Pagelet 实例上可用。 大多数是 仅在内部使用。 很少有理由调用这些方法。
new Fivehundred()
public,返回 Pagelet。
500 构造函数期望提供几个选项,这些 包括:req
、res
和pipe
。 最后一个选项是参考 到BigPipe实例,主要是保证相同的Temper 实例被重新使用。 所有代码示例都假定您的文件设置为:
'use strict';
var Fivehundred = require('500-pagelet');
, fivehundred = new Fivehundred({ options }, new Error('failure'));
Bootstrap.get()
private,返回 Pagelet。
从提供的错误中提取数据以呈现模板。 如果环境是 production Error.stack
将不会 提供给模板。
fivehundred.get(function render(error, data) {
// provide data to pagelet.render
});
Debugging
该库使用 Pagelet 中的 diagnostics
模块。 要显示 500 Pagelet 特定的调试消息,请提供 在运行程序或
DEBUG=pagelet:500 node ...
Testing
测试之前会自动在 Travis CI 上运行以确保一切正常 按预期运行。 对于本地开发,我们会自动安装一个 pre-commit 钩子,在您每次提交更改时运行 npm test
命令。 这确保我们不会将任何损坏的代码推送到该项目中。
要在本地运行测试,请确保安装了开发依赖项。
npm test
npm run coverage
License
500-pagelet 在麻省理工学院下发布。
500 Pagelet
This Pagelet is responsible for displaying server errors. By default the 500 Pagelet is provided with BigPipe. However, if you need a custom 500 you can extend this Pagelet. For example to change the default view.
Installation
The 500 Pagelet is distributed through the node package manager (npm).
npm install --save 500-pagelet
Support
Got stuck? Or can't wrap your head around a concept or just want some feedback, we got a dedicated IRC channel for that on Freenode:
- IRC Server:
irc.freenode.net
- IRC Room:
#bigpipe
Still stuck? Create an issue. Every question you have is a bug in our documentation and that should be corrected. So please, don't hesitate to create issues, many of them.
Example
In this example the 500 Pagelet is extended with a custom view. BigPipe will automatically discover this extended version if it is provided to BigPipe alongside the other pagelets. Note that the enviroment variable can be overruled to manage the data that is displayed.
'use strict';
//
// Extend the 500 Pagelet with a custom view.
//
var Fivehundred = require('500-pagelet').extend({
view: '/path/to/my/custom-view.html', // your custom layout
env: 'development' // defaults to process.env.NODE_ENV
});
//
// Initialise BigPipe server.
//
var pipe = require('bigpipe').createServer(2000, {
pagelets: [ Fivehundred, ... ]
});
API
The following methods are available on the 500 Pagelet instance. Most are only used internally. There is rarely a reason to call these methods.
new Fivehundred()
public, returns Pagelet.
The 500 constructor expects several options to be provided, these include: req
, res
and pipe
. The last option is a reference to the BigPipe instance, mainly to ensure the same Temper instance is re-used. All code examples assume your file is setup as:
'use strict';
var Fivehundred = require('500-pagelet');
, fivehundred = new Fivehundred({ options }, new Error('failure'));
Bootstrap.get()
private, returns Pagelet.
Extracts the data from the provided Error to render the template. If the environment is production the Error.stack
will not be provided to the template.
fivehundred.get(function render(error, data) {
// provide data to pagelet.render
});
Debugging
The library makes use the diagnostics
module from Pagelet. To display the 500 Pagelet specific debug messages, supply the following before running the program or
DEBUG=pagelet:500 node ...
Testing
Tests are automatically run on Travis CI to ensure that everything is functioning as intended. For local development we automatically install a pre-commit hook that runs the npm test
command every time you commit changes. This ensures that we don't push any broken code in to this project.
To run tests locally, make sure the development dependencies are installed.
npm test
npm run coverage
License
500-pagelet is released under MIT.