Node.js 如何处理单页web应用的多个视图
因此,我正在构建一个简单的node.js web应用程序。但我对单一的网络应用程序应该如何工作有点困惑。我现在不在fornt end使用backboneMVC。这个概念是我在页面上有两个选项卡,即文件夹和列表。因此,我希望能够通过restful URL(如host/Folder/{Folder id})显示文件夹的内容,并对列表执行相同的操作 如果我只是使用参数res.render视图模板以响应Restful请求,这似乎很好 但是,当这两个页面在同一个页面上,并且必须通过点击标签才能访问而不离开主页时,我感到困惑。通过使用带有#标记的前端路由,我可能可以让它工作(因此您最终使用的是host/index.html#/folder/{id})Node.js 如何处理单页web应用的多个视图,node.js,pug,Node.js,Pug,因此,我正在构建一个简单的node.js web应用程序。但我对单一的网络应用程序应该如何工作有点困惑。我现在不在fornt end使用backboneMVC。这个概念是我在页面上有两个选项卡,即文件夹和列表。因此,我希望能够通过restful URL(如host/Folder/{Folder id})显示文件夹的内容,并对列表执行相同的操作 如果我只是使用参数res.render视图模板以响应Restful请求,这似乎很好 但是,当这两个页面在同一个页面上,并且必须通过点击标签才能访问而不离开
所以我想知道,是否有更简单的方法使用部分模板,我可以通过jade模板部分切换主页的一部分,而无需离开index.html?您可能想查看Page.js以在单页应用程序中加载模板,()这也是来自Visionmedia,就是那些制造翡翠的人
我发现对于小规模的应用程序/站点来说,它比主干更容易理解。我以前没有尝试过直接渲染部分,但是如果我理解你的问题,你能这样做吗 创建视图以生成部分输出。使用路由为您提供端点以从中获取它们。从您的站点触发一些javascript,用该端点的输出替换(比如)一个块 可能看起来像这样: 在routes.js中:
app.get('/folder/:id', folders.show)
在controllers/folders.js中:
exports.create = function (req,res){
res.render('folders/partial')
}
在文件夹/show.jade中:
button#tab1
.tab
.result
然后使用一些简单的jquery将站点上的内容替换为部分内容:
$('#tab1').click(function() {
$.get('/folder/:id', function(data) {
$('.result').html(data);
})
})
你可以看看。它有助于将静态内容推送到浏览器
它可以将jade模板预编译成javascript函数,然后在客户端上呈现。语法非常简单:
new JadeAsset({
url: '/templates.js',
dirname: './templates'
});
因此,如果您的模板目录如下所示:
index.jade
contact.jade
user/
profile.jade
info.jade
$('body').append(Templates['index']());
$('body').append(Templates['user/profile']({username: 'brad', status: 'fun'}));
$('body').append(Templates['user/info']());
然后在客户端上引用您的模板,如下所示:
index.jade
contact.jade
user/
profile.jade
info.jade
$('body').append(Templates['index']());
$('body').append(Templates['user/profile']({username: 'brad', status: 'fun'}));
$('body').append(Templates['user/info']());
这里有一个链接:
*person Visionmedia只是他的把柄。是的,这是我的想法,有点像是从ajax结果构建html,应该是肯定的,但我不知道是否有一种“玉”的方式。我认为如果它像看上去的那样工作的话,它更接近布拉德上面的回答。js似乎也更接近express堆栈。