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

时间:2014-01-18 23:23:00

标签: javascript node.js heroku

如果你可以帮助我,那将是美妙的! 我正在使用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);
});

2 个答案:

答案 0 :(得分:1)

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

此命令将在node.js文件中插入day3所需的代码。我假设你想在express.logger()行之后添加这些行。如果您想将代码放在不同的行之后,只需将脚本中的express(express.logger());替换为您想要的任何内容即可。请告诉我。

答案 1 :(得分:1)

如果您计划添加更多页面,则每页添加一个路径不是一个好主意。更好的方法是在路由中使用模式匹配。例如,

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'。 在/day/:num中,:num只是网址中的变量名称。您可以通过request.params.num访问该变量。然后使用该信息构造文件名。希望这会清理你的脚本。 :) 有关详细信息,请在此处查看express api(http://expressjs.com/api.html#req.params)。