如果你能帮我解决这个问题,那就太好了!我正在使用node.js和heroku来节省一个应用程序,我正在修改我的web.js文件--我添加了一个新的帖子。之前的情况很好,但有了更多的页面,它开始失控了。我想知道我能不能自动完成这个任务?这就是我的web.js文件现在的样子:
var express = require('express');
var fs = require('fs');
var htmlfile = "index.html";
var app = express(express.logger());
//day 7 and so on.. till day 15.
var day6 = "./100/day6/day6.html";
app.get('/day6', function(request, response) {
var html = fs.readFileSync(day6).toString();
response.send(html);
});
var day5 = "./100/day5/day5.html";
app.get('/day5', function(request, response) {
var html = fs.readFileSync(day5).toString();
response.send(html);
});
var day4 = "./100/day4/day4.html";
app.get('/day4', function(request, response) {
var html = fs.readFileSync(day4).toString();
response.send(html);
});
var day3 = "./100/day3/day3.html";
app.get('/day3', function(request, response) {
var html = fs.readFileSync(day3).toString();
response.send(html);
});
var day2 = "./100/day2/day2.html";
app.get('/day2', function(request, response) {
var html = fs.readFileSync(day2).toString();
response.send(html);
});
var challengehtmlfile = "100.html";
app.get('/100-day-challenge', function(request, response) {
var html = fs.readFileSync(challengehtmlfile).toString();
response.send(html);
});
var bloghtmlfile = "blog.html";
app.get('/blog', function(request, response) {
var html = fs.readFileSync(bloghtmlfile).toString();
response.send(html);
});
app.get('/', function(request, response) {
var html = fs.readFileSync(htmlfile).toString();
response.send(html);
});
var port = process.env.PORT || 8080;
app.listen(port, function() {
console.log("Listening on " + port);
});发布于 2014-01-28 04:02:31
如果您计划添加更多的页面,那么每页添加一条路径并不是一个好主意。更好的方法是在路由中使用模式匹配。例如,
app.get('/day/:num', function(request, response) {
var day = "./100/day" + request.params.num + "/day" + request.params.num + ".html";
var html = fs.readFileSync(day).toString();
response.send(html);
});现在这条路线可以匹配任何天数。唯一需要更改的就是URL。您应该访问'/day/3‘,而不是'/day3’。在/day/:num中,:num只是url中的一个变量名。您可以通过request.params.num访问该变量。然后使用该信息构造文件名。希望这能清理你的剧本。)有关更多信息,请查看这里的速递api (http://expressjs.com/api.html#req.params)。
发布于 2014-01-26 05:57:11
复制此代码并将其保存为"insert.sh“。
#!/bin/bash
count=$1
day=day$1
sed -i "/express(express.logger());/avar ${day} = \"./100/${day}/${day}.html\";\napp.get('/${day}', function(request, response) {\nvar html = fs.readFileSync(${day}).toString();\nresponse.send(html);\n});\n" $2 这个脚本包含两个参数:日期的#和文件名。例如,
bash insert.sh 3 yournode.js此命令将在day3文件中插入必要的node.js代码。我以为您希望在express.logger()行之后添加这些行。如果您想将代码放在另一行之后,只需将脚本中的express(express.logger());替换为您想要的任何内容。请让我知道。
https://stackoverflow.com/questions/21211177
复制相似问题