Jinja2、Backbone.js和渐进式增强
我有一个工作网站建立在谷歌应用程序引擎(Python+Jinja2模板引擎)之上。我想开始使用Backbone.js和下划线.js将其重新设计为单页应用程序。目标是使用渐进增强策略 在第一次访问时,网站仍将使用后端呈现。然后,如果浏览器支持JavaScript,Backbone.js将接管 我决定这样做有两个原因。首先,我已经拥有的所有链接将保持不变,其次,谷歌索引机器人将能够抓取网站内容 这种方法有两个问题:Jinja2、Backbone.js和渐进式增强,backbone.js,jinja2,Backbone.js,Jinja2,我有一个工作网站建立在谷歌应用程序引擎(Python+Jinja2模板引擎)之上。我想开始使用Backbone.js和下划线.js将其重新设计为单页应用程序。目标是使用渐进增强策略 在第一次访问时,网站仍将使用后端呈现。然后,如果浏览器支持JavaScript,Backbone.js将接管 我决定这样做有两个原因。首先,我已经拥有的所有链接将保持不变,其次,谷歌索引机器人将能够抓取网站内容 这种方法有两个问题: 我需要为我的站点上的几乎所有内容提供两个模板,一个在后端(Jinja2),一个在前端
数据属性来实现的。例如,要创建一个注释视图,我将使用如下元素:
<div class="comment" data-id="1" data-body="You Suck"></div>
最后,我将使用创建的模型支持一个视图,然后可以向站点添加功能:
var CommentView = Backbone.View.extend({
initialize: function() {},
edit: function() {},
delete: function() {}
});
var comment_view = new CommentView({
model: comment_model
});
然后你可能会问,“如果我需要重新呈现一些东西,我不需要客户端模板吗?”不。客户端模板是一个非常新的东西。我个人尽量避免使用它们,因为我认为我们还没有做到这一点,而且我一直觉得单页应用程序对我的口味反应不够灵敏。我肯定有很多人不同意我的观点,但这就是我在最近的项目中所采取的立场。也就是说,我在服务器上呈现所有内容,并以JSON的形式将html发送到客户端,然后将其注入DOM。所以我有很多api端点,它们将JSON返回到我的Backbone.js代码中。这就是我目前正在解决的问题,但这个问题通常主要是情境性的。你必须认真考虑你的需求是什么。值得一提的是,我目前的系统很大程度上是基于Twitter在尝试了整个单页应用程序之后最终决定做的事情。您可以阅读。非常感谢您提供这样一个描述性的答案。现在呢?客户端模板是否仍然未经验证?
var CommentView = Backbone.View.extend({
initialize: function() {},
edit: function() {},
delete: function() {}
});
var comment_view = new CommentView({
model: comment_model
});