在heroku上使用node.js自动添加页面?

如果你能帮助我,这将是美好的! 我使用node.js和heroku deply一个应用程序,我改变我的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); }); 

如果您打算添加更多的页面,那么每页添加一条路由并不是一个好主意。 更好的方法是在路由中使用模式匹配。 例如,

 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。 而不是“/ day3”,你应该访问“/ day / 3”。 In /day/:num:num只是url中的一个variables名。 你通过request.params.num来访问这个variables。 然后你用这个信息构造文件名。 希望这会清理你的脚本。 :)有关更多信息,请在此处查看express express( http://expressjs.com/api.html#req.params )。

复制此代码并将其保存为“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 

这个命令将在day.js文件中插入day3的必要代码。 我假设你想在express.logger()行后添加这些行。 如果你想把代码放在不同的行后,只需要replaceexpress(express.logger()); 在脚本中任何你想要的。 请告诉我。