![](/img/trans.png)
[英]Pass Node.js Express variable to my static javascript files
[英]Pass string variable parameter node.js not express
我想知道您将如何使用node.js从类似请求的URL中解析一个字符串参数来表达。 我知道这可以通过express实现,但是我想知道如何在没有express的情况下使用node.js完成。
快递示例:
var app = require('express')();
app.get('sample/request/url/:id', function(req, res) {
var parameter = req.params.id;
});
您可以从req
获取url
属性,并根据需要进行解析:
var server = require('http').createServer(function (req, res) {
console.log(req.url);
// would log "/sample/request/url/123"
});
解析部分可以使用RegEx完成。
如果您使用的是connect
(或仅使用http
模块),则可以使用RegExp
:
使用http
:
var http = require('http'); http.createServer(function (req, res) { // Note there's no next here var match = req.url.match(/^sample\\/request\\/url\\/(.+)$/); var id = match ? match[1] : null; }).listen(3000); ...
与connect
:
var connect = require('connect'); connect.createServer(funcion(req, res, next) { var match = req.url.match(/^sample\\/request\\/url\\/(.+)$/); var id = match ? match[1] : null; }).listen(3000); ...
这是简单的情况。 如果要拥有自己的路由中间件,则应以RegExps
数组(可以从添加的String
动态生成)开始,并循环遍历,直到找到匹配项。
每个路由元素都应具有其RegExp
及其参数,以便一旦找到匹配项,便可以使用您选择的适当名称提取并将参数附加到req
对象。
编辑:
正如robertklep在评论中指出的那样,您可以检查paramify
。 它的代码非常清晰,并且完成了我在答案最后一部分中所说的某些事情。 例如,您可以看到它具有regify
函数来构造RegExps
函数,以及一个循环来提取匹配项的参数:
var params = []
for (var i = 1; i < matches.length; i++) {
var key = reg.keys[i - 1]
if (key) {
params[key.name] = matches[i]
} else {
params.push(matches[i])
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.