我开始学习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
}
};
我希望我能清楚。提前谢谢!
答案 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下重复使用其他项目中的博客路由。