使用Angular.js可以实现jinja2可以实现的目标。我的问题是 - 完全用angular.js替换jinja2有什么好处吗?
答案 0 :(得分:15)
我认为大多数问题来自同样明显的区别:Jinja2是服务器端,Angular是客户端,这使得它们真的不同。
<强> SEO 即可。谷歌不了解Angular魔法。它只是一个繁重的Javascript代码,Google无法理解它。当然,你有一些解决方法可以向Google展示你的重要文本,但要解决它,你必须在服务器端渲染一些东西,回到Jinja2或者一些黑客来渲染东西以改善你的搜索引擎优化。 (如果您不关心Google搜索,这一点并不重要)
性能服务器端呈现比Javascript呈现更快。我说的是普通用户,可能是因为过时的Internet Explorer和糟糕的互联网连接。使用Angular,您必须等待至少一些Javascript资源在页面可用之前加载。用户会注意到这一点,我们知道一个慢速网站会触及您的转化。查看这篇关于&#34;第一条推文的时间的文章&#34;:https://blog.twitter.com/2012/improving-performance-on-twittercom
<强>兼容性即可。是的,他们声称该框架支持所有常见的浏览器,但有关于黑客的完整文档,以使其适用于IE7。取决于您的受众。
<强>成熟即可。 Jinja2非常稳定,拥有漂亮的API,几乎可以部署在所有Flask网站上。 Angular仍在不断发展,有时情况会发生很大变化。
<强>缺乏经验即可。你无法用Jinja2取代Angular。当你尝试它时,你会明白它们是不同的,你不能以同样的方式使用它们。在你做正确的事情之前,你会犯很多错误,就像你使用任何新的很棒的工具一样。
当然,您可以根据您的具体需求对我的所有论据提出索赔,这只是您在去Angular之前必须了解的一些事项。
也就是说,我在几个项目中使用Angular,主要用于单页应用程序。这是Angular的一个很棒的用例。在所有这些项目中,我仍然使用Jinja2进行渲染,因此这不是完全替代。
更新:
在我最初的回复后差不多两年的一些更新。
Google更了解动态渲染,但我仍然不相信它。
我不认为客户端渲染是一件事。只有实时数据呈现在客户端,但基本HTML是在服务器端生成的。
Angular放弃了IE7 / IE8的支持。对于网络而言,这绝对是一件好事,但不幸的是,在某些情况下我仍然必须支持这些浏览器。
Angular 2即将推出,改变您对当前版本的了解。我不记得任何重大的Jinja2变化。
答案 1 :(得分:3)
为什么要替换你的目标?使用Jinja和其他服务器端框架的强大功能以及客户端框架的强大功能。
使用两者的好处:
选择一个或另一个会让你的工作变得令人沮丧和复杂。