使用Node.js将URL字符串发送到其他脚本

时间:2014-04-13 19:32:08

标签: javascript node.js express url-mapping

我开始学习Node.js,使用Express with Jade和Mongoose作为我的默认工具箱。我以前用PHP开发,迁移到Python,并通过Django学习MVC。拥有一个大型的客户端JS游戏和Mozilla.org的一些灵感,我愿意制作一个多人游戏 - 并将其视为学习Node的非商业机会:我可以花时间使用它。

然而,我遇到了一个问题。我不是想自己编写一个MVC系统,只是为了分离我的网站"应用程序"像大多数MVC一样。这个问题可能很基本 - 有这么多代码:

app.get(/^blog/, function(req, res) {
    require("./blog")();
});

......我理解Node / Express'的基础知识。 URL屏蔽,但是我需要将其余的URL字符串(mysite.com/blog之后的所有内容)传递到blog应用内的另一个URL解析脚本。

我用Google搜索了一段时间,无法找到一个好的解决方案。我甚至找到了一个关于在Node和Express中为较旧的Express版本编写MVC方案的完整教程,但是现在它有点过头了。你能给我一个简单的解决方案吗?

我认为blog/index.js应该是这样的:

module.exports = function(urlstring) {
    if(urlstring.indexOf('post') != -1) {
        // do stuff...
    }
    else if(urlstring === '/') {
        // return home.jade or something
    }
};

我希望我能清楚。提前谢谢!

1 个答案:

答案 0 :(得分:1)

使用快递,无需自行解析您的网址。我想你会想要以某种方式建立你的博客网址

/ blog显示博客帖子列表 / blog / post / 1显示id为'1'的博客文章

使用express 4,您可以为您的博客路径或已安装的应用设置路由器。已安装的应用允许您让应用处理基本网址路径的所有子网址。 See the express documentation for more detail

我想演示如何使用express 4路由器以及express的安装功能来构建博客路径。

// Set up express app
var app = express();

// Set up  a router
var router = express.Router();

router.get('/', function(req, res) {
  // Show a list of blog posts
}

router.get('/post/:id', function(req, res) {
  // Show a single blog post 
}

// Mount router
app.use('/blog', router);

此解决方案的一个好处是,您在路由器中注册的路由始终会获得带有/blog前缀的相对URL,因此您可以在/companyblog之类的URL下重复使用其他项目中的博客路由。