为客户端MV*框架提供无js回退

Providing no-js fallbacks for clientside MV* frameworks

本文关键字:js 回退 框架 客户端 MV      更新时间:2023-09-26

我最近刚被介绍到MV*框架,并利用他们网站上的TodoMVC应用教程尝试了Ember.js。

我曾考虑在我即将推出的一个项目中使用Ember(Ruby on Rails CRUD应用程序,在某些功能上类似于Twitter),但我仍然有点困惑,在我做出最终决定之前,如果有人能解决以下问题,我会很高兴的:

  1. 将Ember这样的高级框架用于中型多页CRUD应用程序是个好主意吗?与使用jQuery的DOM操作和AJAX功能构建的交互层相比,它会改善开发时间和维护吗?还是只有在开发复杂的单页应用程序(例如:Grooveshark)时才使用Ember(等等)?

  2. 考虑到该应用程序将使用Rails开发,并且假设将使用Ember,是否有可能为禁用JavaScript的浏览器和/或搜索引擎爬网程序提供基本功能的回退?它需要代码复制或其他肮脏的技巧吗?你知道有什么技术可以用来实现它吗?

  3. 是否有可能将网站调整为具有有效结果的移动浏览(仅使用CSS),或者在手机上运行Ember所带来的开销是否会使设备难以以保持响应的方式呈现网站?

我们现在正在进行一个相当大的Ember项目,所以下面是我对您的问题的看法。

  1. 我们发现Ember在为我们的单页应用程序创建丰富的UI方面非常有效,但我不知道如果你正在创建一个专为传统多页(查看页面、提交表单等)布局设计的应用程序,它会有多大帮助。

  2. 我认为这是关键——Ember完全基于JS,所以如果你需要支持没有JS的浏览器,你基本上必须编写一个并行应用程序。如果这是你的应用程序的硬性要求,我认为Ember(或任何MV*JS框架)将是不可能的

  3. 我们在移动设备上遇到的性能问题很少——我们的网站响应能力很强,从黑莓到最新的Chrome浏览器,所有内容都能在桌面上呈现,性能良好。

@Scott Rankin已经解决了使用Pure Ember方法的大部分问题。我将添加一种快速做出此决定的方法。

如果应用程序在登录之后,请使用Ember/MVVM。然后你不必考虑搜索引擎,因为内容通常是私有的,不应该被索引。

对于SEO,你必须构建至少一部分内容,使其可索引。话语应用就是一个很好的例子。他们使用Ember,但也会发送一些生成的html和应用程序html slugs,以便搜索引擎可以对它们进行索引。你可以在这里阅读他们的方法。

我们有一种不同的方法,可以看作是一种倒退:我们预先呈现应用程序中每个页面的静态版本(每日计划任务)。此静态版本以HTML文件的形式存储在服务器上。每当我们作为蜘蛛/机器人用户代理进行嗅探时,我们都会提供该版本。