将web应用程序建立在浏览器AJAX调用上是一种好做法吗?
Is it good practice to base a web application on browser AJAX calls
在标准的MVC web应用程序中,是否可以用ajax调用呈现大部分内容?
让我们以Facebook为例,他们动态加载大部分内容。我们应该遵循这种方法吗?我们应该采取什么措施来确保良好的用户体验和性能?
编辑让我来澄清这个问题:
我使用Facebook的例子,因为我正在考虑解决类似于Facebook News Feed的应用程序上的问题:它们之间非常相似的大集合(几乎无限)实体,由于明显的性能和响应问题,控制器无法获取。
因此,我们将使用ajax调用动态加载项,并使用模板引擎呈现项。这个方法合理吗?我们应该做些什么来保证良好的用户体验,性能和合理的SEO?
这个问题有点模糊,因为我认为基于ajax的网站的用户体验会因网站而异。这也可能不是发布这个问题的最佳论坛。
然而,在我看来,ajax可以是一个伟大的工具,以提高用户体验。减少页面刷新、呈现新鲜内容以及在不干扰用户当前状态的情况下执行任务是一大优点。
但是,如果您的站点很复杂,并且有很多导航,ajax可能会成为开发人员和用户的噩梦。
我觉得这个主意不错。但有几件事你需要记住。Javascript总是需要时间来加载。所以如果你主要用js创建dom,用户肯定会觉得网站在初始加载时很慢。只是静态html会快得多。所以我们的想法是使用静态的html和智能的javascript来创建dom,这样不仅用户会觉得js很快而且服务器资源也得到了很好的利用。所以最好的办法是将两者巧妙地结合起来。当然,ajax调用总是倾向于通过javascript创建dom,除非您有大量数据要绑定到dom。总之,这取决于您的需求、资源和目标用户。
这些好处包括:
- 服务器可以实现api接口,这将允许它是客户端无关的
- 端点更加集中和离散
- web客户端可以更容易开发,可以并行开发,只要有一个明确的API规范
一些难点可能是:
- 难以确定每个api端点应该如何集中?应该返回什么数据?
- 客户端最终可能会发出许多小的ajax请求,许多连接的开销
- 单个请求失败或加载缓慢时的处理
- 在渲染api 返回的数据时考虑性能dom操作
- 每个端点缓存-即使端点可能非常集中,前端的单个页面视图在逻辑上可以对应一组端点
相关文章:
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 有没有一种方法可以仅使用HTML/CSS来隐藏基于特定值的数据单元格
- 有没有一种方法可以从URL跟踪请求的域
- 有没有一种方法可以列出Ember.Object的所有绑定
- 有没有一种方法可以获得three.js的最小/lite版本
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- ES6是否引入了一种机制来生成块范围的函数语句(而不是表达式)
- 有没有一种方法可以从Javascript检测特定的应用程序是否安装在(AndroidiOS)设备上
- 只能存储一种类型的对象的数组
- 在HTML/JavaScript中,有没有一种方法可以在图像开始加载时知道图像的最终布局尺寸
- 有没有一种方法可以在Javascript中进行可变递归currying
- 有没有一种方法可以检测ios<>使用jquery和触发器操作形成导航按钮
- 使用while循环+break是一种可接受的方式;goto;手术的结束
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- 将web应用程序建立在浏览器AJAX调用上是一种好做法吗?