node.js网站/ app模板设计

时间:2012-07-05 20:14:21

标签: javascript html model-view-controller node.js

简短版本:

通过提供一个html文件完成模板化并使用ajax / sockets加载特定于页面的数据,使用节点,我应该期待什么样的性能?设计明智还是坏?

长版

我目前正在学习编写更好的节点。我是一个长期的javascript粉丝,我现在正试图弄清楚node.js中的好/坏做法

我正在考虑模板化,我正在努力解决如何分离我正在存储的内容。我正在阅读很多MVC文章,我真的想要在没有杂乱代码的情况下分离视图逻辑。

我的问题是:

假设我有一个网站,它包含几个代表用户看到的“屏幕”的文件,让我们在这个基本示例中说用户应该能够看到:Index, About, Contact, Portfolio

现在我需要动态加载这些页面,这意味着我不想每次都更新每个文件的模板,但它们看起来非常相似。

由于节点完全基于异步操作 - 为所有这些操作提供相同的.html页面有多好/坏,然后根据我使用的页面从服务器加载所有数据AJAX /网络套接字?

(天真地,循环遍历所有名称为''view'的部分,并通过id或类似内容获取内容)

我觉得这会提供页面的异步加载,并完全将站点布局与站点的其余部分分离。这对我来说非常节点,没有阻塞,一切都异步。我正在寻找有经验的开发人员关于这个主题的意见。

此外,任何与使用node.js构建网站相关的提示都表示赞赏。我来自PHP背景,我真的想在设计时避免类似于webmatrix的东西。

2 个答案:

答案 0 :(得分:2)

这种“单页网站”存在一些陷阱:

搜索引擎优化:这个内容很难让蜘蛛索引。它更适用于有围墙的内容,例如用户的电子邮件。

导航:保留用户习惯的浏览器行为是可能的,但您必须明确考虑它 - 书签将如何工作?后退按钮怎么样?

您可能最好以传统方式提供页面(没有理由不能在后端的节点中呈现模板)。然后优化您的客户端代码和缓存系统,以便第二页快速加载 - 它不需要重新获取.css或.js。

答案 1 :(得分:1)

这个简单的概念是你有一些布局模板和一些局部模板。您可以将这些模板加载为JS文件(它们在编译时)。您可以将编译的模板设置为某个地方的全局对象.. App.templates.portfolio = JST [“templates / portfolio”]。为您的应用程序执行一次。这些模板可以缓存在任何地方 - 浏览器的localStorage,反向代理等。

当用户点击“组合”时,您的服务器会发送回JSON,并使用从服务器返回的数据在浏览器中编译“组合”模板。

https://github.com/sstephenson/eco/ 非常适合这个目的。还有许多其他同样好或甚至更好。这都是个人喜好。玉是我的最爱。

大多数MVC框架都包含其中之一。

如果您有一个基于页面的简单网站,那么Node可能不是最佳选择。我相信你已经知道了。