为客户端MV*框架提供无js回退
Providing no-js fallbacks for clientside MV* frameworks
我最近刚被介绍到MV*框架,并利用他们网站上的TodoMVC应用教程尝试了Ember.js。
我曾考虑在我即将推出的一个项目中使用Ember(Ruby on Rails CRUD应用程序,在某些功能上类似于Twitter),但我仍然有点困惑,在我做出最终决定之前,如果有人能解决以下问题,我会很高兴的:
-
将Ember这样的高级框架用于中型多页CRUD应用程序是个好主意吗?与使用jQuery的DOM操作和AJAX功能构建的交互层相比,它会改善开发时间和维护吗?还是只有在开发复杂的单页应用程序(例如:Grooveshark)时才使用Ember(等等)?
-
考虑到该应用程序将使用Rails开发,并且假设将使用Ember,是否有可能为禁用JavaScript的浏览器和/或搜索引擎爬网程序提供基本功能的回退?它需要代码复制或其他肮脏的技巧吗?你知道有什么技术可以用来实现它吗?
-
是否有可能将网站调整为具有有效结果的移动浏览(仅使用CSS),或者在手机上运行Ember所带来的开销是否会使设备难以以保持响应的方式呈现网站?
我们现在正在进行一个相当大的Ember项目,所以下面是我对您的问题的看法。
-
我们发现Ember在为我们的单页应用程序创建丰富的UI方面非常有效,但我不知道如果你正在创建一个专为传统多页(查看页面、提交表单等)布局设计的应用程序,它会有多大帮助。
-
我认为这是关键——Ember完全基于JS,所以如果你需要支持没有JS的浏览器,你基本上必须编写一个并行应用程序。如果这是你的应用程序的硬性要求,我认为Ember(或任何MV*JS框架)将是不可能的
-
我们在移动设备上遇到的性能问题很少——我们的网站响应能力很强,从黑莓到最新的Chrome浏览器,所有内容都能在桌面上呈现,性能良好。
@Scott Rankin已经解决了使用Pure Ember方法的大部分问题。我将添加一种快速做出此决定的方法。
如果应用程序在登录之后,请使用Ember/MVVM。然后你不必考虑搜索引擎,因为内容通常是私有的,不应该被索引。
对于SEO,你必须构建至少一部分内容,使其可索引。话语应用就是一个很好的例子。他们使用Ember,但也会发送一些生成的html和应用程序html slugs,以便搜索引擎可以对它们进行索引。你可以在这里阅读他们的方法。
我们有一种不同的方法,可以看作是一种倒退:我们预先呈现应用程序中每个页面的静态版本(每日计划任务)。此静态版本以HTML文件的形式存储在服务器上。每当我们作为蜘蛛/机器人用户代理进行嗅探时,我们都会提供该版本。
- 要求未定义JS回调参数
- 从新的WordPress媒体上传程序获取JS回调
- 重构DRY代码的Node.JS回调
- 大视频.js - 检查浏览器是否支持,背景图像回退
- 当 CDN JS Cloudflare 不可用时,Lightbox2 回退
- 回退方法在带有 Rails 2.3 的 i18n-js 中不起作用
- History.js回退无法正常工作
- Three.js检测到webgl支持并回退到常规画布
- javascript中amplify.js的cdn回退代码
- 需要JS回退或检查文件是否存在
- 为客户端MV*框架提供无js回退
- 我可以使用Node.js 'mirror'作为JavaScript不支持时的回退
- 在history.js中强制html4回退
- Velocity JS和Velocity UI的CDN回退
- 如何在ext js中编写回退逻辑
- 正在禁用mediaelement.js中的Flash回退选项
- Moment:弃用警告:Moment构造回退到js Date
- js资源回退不工作
- 在提交时转到URL的下拉菜单的非js回退
- 多个video.js播放器在flash回退时失败