有没有人找到一个好的解决方案来开发可在服务器和客户端上使用的backbone.js模板?
这对于backbone.js历史堆栈来说是非常理想的,因为用户可以在浏览器位置栏中共享和链接到真实的url,并且node.js服务器可以在第一个页面视图上呈现页面,同时在客户端中使用相同的模板在后续页面视图中重建页面。
这也将为用户和搜索引擎提供理想的输出,这些搜索引擎会抓取链接,并且无需解析或执行 JavaScript 即可查看完全呈现的工作页面。
更新了更多信息:
两种可能的方法似乎是:
1)骨头——https://github.com/developmentseed/bones https://github.com/developmentseed/bones
Bones 有一些需要安装的怪癖,目前需要旧版本的 Node 和 npm。
2) 胶囊-https://github.com/andyet/capsule https://github.com/andyet/capsule
我还没试过,但看起来很相似。如果有人对这些项目感兴趣,我会很感兴趣。
我目前正在研究一个名为“onecode”的框架 https://github.com/ashtuchkin/onecode这就是你所要求的。目前它缺乏文档,但我有一个基于它的工作项目,所以它也适合你。我也在寻找贡献者。
这是它的工作原理。几乎所有代码都在客户端和服务器之间共享,包括模型和视图。
- 在服务器上,您创建一个 REST API,在其中定义业务规则、安全性、数据库操作,以及所有您不能信任客户端的内容。
- 当第一次请求页面时,客户端(使用标准 Backbone Ajax 调用)和服务器本身(直接使用覆盖的
$.ajax
方法)。
- 当客户端请求页面时,服务器会创建所有需要的模型和视图,向 API 发出直接请求并呈现 HTML。此外,它还记住来自 API 调用的所有数据以及哪些 HTML 元素对应于哪些视图。
- 模型/视图代码、HTML 和数据提供给客户端。在这里,HTML 已完全呈现并发挥作用,因此即使用户关闭了 JavaScript,他也可以单击链接并浏览网站(当然他不会获得任何动态功能)。但是,如果启用了 Javascript,所有模型和视图都会在后台自动重新创建并重新绑定到 DOM 节点,而不需要用户等待。
- 之后,应用程序就像单页应用程序一样工作,仅从同一 API 请求数据 (json),在客户端上呈现模板。
这意味着:
- 您只需编写一次演示和动态代码。
- 第一个请求的页面以闪电般的速度提供并显示给用户,不需要等待所有脚本加载和运行,只需 HTML/CSS。
- 下一页也非常快,因为仅请求原始数据,模板在客户端上呈现。您还可以使其具有视觉吸引力,而不是通常的页面重新加载。您甚至可以在用户浏览网站时播放音乐。
- 搜索引擎和社交网络爱你。
该架构强制提出一些合理的要求,这将使您成为更好的开发人员。就像是:
- 服务器操作和业务规则需要单独的、定义良好的 API。
- 没有全局变量。
- 视图的处理比一般 Backbone 更严格,更像是可堆叠的 UI 组件。
- HTML 渲染和动态行为之间清晰分离。
可以找到一个非常简单的例子在源代码树中 https://github.com/ashtuchkin/onecode/tree/master/examples/simple。我使用 Backbone 作为模型和视图的基础,并且浏览器化 https://github.com/substack/node-browserify将js包交付给客户端。
在我的项目中,我使用内联模板和 EJS 作为模板引擎。这样做的优点是可以将 HTML 和代码(我使用 CoffeeScript)保留在同一位置。但该框架能够与 Jade 等其他模板引擎一起从外部文件打包模板。请看一个模板示例 https://github.com/ashtuchkin/onecode/tree/master/examples/templating关于如何做到这一点。
如果您对这种方法感兴趣,请告诉我,也许它会促使我开始为其编写文档。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)