在Node.js中组织各种请求
Organizing various requests in Node.js
我是Node.js(和Express)的新手,我正在努力理解这一点。假设我有一个有3个页面的网站(可以是GET或POST):/
、/page1
、/page2
。我应该怎么做才能让每个页面都由一个单独的JS文件处理?
app.all('/', function(request, response)
{
// Get home.js to handle this request and response
});
app.all('/page1', function(request, response)
{
// Get page1.js to handle this request and response
});
app.all('/page2', function(request, response)
{
// Get page2.js to handle this request and response
});
更好的是,有没有一种方法可以定义通配符,这样就不会有太多重复?类似这样的东西:
app.all('*', function(request, response)
{
// Get *.js to handle this request and response. * is whatever the URI string is
});
这里的诀窍是app
是创建它的文件的本地对象。因此,您必须将该对象放到其他文件的作用域中。
每个其他文件都应该导出一个函数,您可以将应用程序实例传递给该函数,以便它可以注册新路由。这样的方法应该有效。
// home.js
exports.register = function(app) {
app.all('/', function(request, response) { ... });
};
// page1.js
exports.register = function(app) {
app.all('/page1', function(request, response) { ... });
};
// page2.js
exports.register = function(app) {
app.all('/page2', function(request, response) { ... });
};
//server.js - setup the app
app = express.createServer();
require('./home').register(app);
require('./page1').register(app);
require('./page2').register(app);
对于问题的第二部分,你想分享一些设置方法吗?
app.all('*', function(req, res, next) {
res.header 'x-snazzy-header', 'Im so snazzy'
next()
});
app.all('/page/:id', function(req, res) {
res.send('content for page #'+ req.params('id'));
});
首先,您可以使用*
或像/users/:id
这样的命名参数来匹配一系列路由。如果你想做一些常见的设置,你实际上可以执行两个路由。路由处理程序采用可选的第三个参数next
。调用时,它将尝试查找下一个匹配的路由。因此,您可以使用它为一组路由设置公共头之类的东西。
继续与@Alex讨论。我就是这么做的,明白了吗?
// app.js
var EXPRESS = require('express');
var URL = require('url');
var PATH = require('path');
var app = EXPRESS.createServer();
app.all(/^'/([a-zA-Z0-9-]+)$/, function(request, response, next)
{
var page = request.params[0];
if (PATH.existsSync(__dirname + '/' + page + '.js'))
{
require('./' + page).handleRequest(request, response, next);
}
else
{
next();
}
});
app.all('*', function(request, response)
{
response.send('Catch all');
});
// --- truncated for brievity
// page1.js
exports.handleRequest = function(request, response, next)
{
response.send('Howdy!');
};
相关文章:
- 在openshift node js应用程序中获取请求
- node.js请求数据事件未在CORS ajax调用中触发
- 关于在node.js中请求
- 在node-js路由中发出http请求
- Node.js https获取请求ECONNRESET
- Node JS-构造OAuth2请求
- 使用application/x-www-form-urlencoded使用node.js在post请求中发送数组
- Node.js HTTP/NET——连接和请求之间的区别
- 在node.js中从设备向服务器发送一个多部分请求
- 如何在node+express中重新运行请求处理程序
- 如何制作'http请求'在Node js中同步
- 使用node.js的HTTPS请求
- Node.js如何用一个线程处理同时请求
- 使用node.js发送并发ajax请求的限制是什么
- Node.js cors请求-异步示例不起作用
- 使用node.js和express来处理POST请求
- 防止 favicon.ico 发出第二个请求 - Node.js
- 检查在特定时间内是否没有请求Node.js
- 如何提取体请求node.js
- 修改请求.Node.Js / Express应用中的body和res.参数