ajax的缺点
作者:子乌 来源:蓝色理想 发布时间:2007-11-08 12:51:00
http://swik.net/Ajax/Ajax+Mistakes
在某网站瞎逛时,发现这个链接,进去逛了逛,觉得很有意思,大家也可以去看看,姑且不论你是否同意里面的观点,看看别人看待Ajax的角度,这对于理解一个事物很有帮助。
下面是我对一部分缺陷的看法:
为Ajax而Ajax(Using Ajax for the sake of Ajax.)
很同意这点,当一个技术本身的生存意义由于它自身的亮点而被抹杀,不知道是这个技术的幸运还是不幸。
干掉了back按钮(Breaking the back button)
back按钮是一个标准的web站点UI的重要功能。然后,后退按钮没法和js很好的合作……
gmail似乎作的很好?不过没去仔细看过gmail如何实现后退和js相容的,被这个mistake一提醒,也许这也是ue的一个切口哦。
点击的时候没有提供一个可视化的提示(Not giving immediate visual cues for clicking widgets)
……也许是我没看懂,觉得写这段的人自相矛盾。。他说没提供可视化提示,不过是拿gmail右上角的红色提示作为例子。
阻挡了离线用户于门外(Leaving offline people behind)
看标题就清楚了,不过我持保留意见,web application和离线浏览本身似乎就存在着矛盾,要整合,可能要动很多脑子
别让我等(Don’t make me wait)
不过,ajax本身就存在着如果客户端的带宽不够,它的展示就会一塌糊涂的问题,这是它的先天缺陷,也是它崛起的先天因素--由于网速和带宽的不断增大,使得服务端与客户端的频繁通信成为可能。
显式的传递敏感信息(Sending sensitive information in the clear)
使用js传递数据,本身似乎就存在着这个风险,在我找到反对意见之前,我倾向认同这点--https协议除外。
假设ajax发展是一个单平台的发展。(Assuming AJAX development is single platform development)
作者文中的观点是ajax由于必须兼容多个浏览器,而没法做到只需要编码到标准的js就行,还要考虑到各个浏览器的问题……这个是js的问题,和ajax关系不大吧?
忘掉了可能多人在同时使用同一个应用(Forgetting that multiple people might be using the same application at the same time)
嗯,这其实是一个同步的问题,在b/s系统中这是一个麻烦的问题……当然,也许并不麻烦,做一个标记位就解决了吧?
太多代码让浏览器慢下来(Too much code makes the browser slow)
呃……同意这点,虽然在代码优化之后会有很大改善,但js本身运行速度慢这个缺陷还是会成为一个瓶颈。
不计划要那些禁用或者没有js的用户(Not having a plan for those who do not enable or have JavaScript)
呃……我在页面上用ajax的时候就准备放弃这些用户了,我没google那么闲,作两套系统,一套用ajax,一套纯页面。不过养成一个良好的编码习惯还是有必要,比如在超链接中不要直接设置href="javascript:..."而使用onmouseup或者onclick来触发事件,偶尔也为别人考虑考虑嘛,而且我也不能保证我的js程序在所有的浏览器上通吃。
不期然的页面闪烁和改变(Blinking and changing parts of the page unexpectedly)
我没经历过以前网页中blink标签的骚扰,所以我对作者的反感有点摸不着头脑,我觉得在适当的提示之后刷新某块页面总比整个页面的刷新看起来舒服。
没法把超链接发给朋友以及收藏(Not using links I can pass to friends or bookmark)
嘿嘿,这就是我上面提及的那点,如果编码习惯够好--而且时间够多,在超链接中为非js用户和js用户提供两套方案是可行的。


猜你喜欢
- axios的二次封装视频讲解npm i axios //下载axios首先创建两个文件夹在src目录下;api和c
- 一、撤销修改(git add/rm 之前)git checkout -- * //是撤销从上次提交之后所做的所有修改git c
- 前言关于 var、let 和 const 三个关键字的区别,是一个老生常谈的问题,也是经典的面试题。本篇文章将全面讲解三者的特性,以及它们之
- PHP 利用 Curl Functions 可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等,受限于php语言本身不支持
- 数据准备moduls.py# 构建表结构from django.db import models# 表app01_publishclass
- 本文讲述了Python检测网络延迟的代码。分享给大家供大家参考,具体如下:#!/usr/bin/env python # coding: u
- 关于什么是并发模型,我在这里引用 Go 语言联合创造者 Rob Pike 的一段话:并发是指一次处理多件事。并行是指一次做多件事。二者不同,
- GO的锁和原子操作分享上次我们说到协程,我们再来回顾一下:协程类似线程,是一种更为轻量级的调度单位线程是系统级实现的,常见的调度方法是时间片
- 安装 pip install django-crontab在Django项目中使用settings.pyINSTALLED_AP
- Django在做url设置时,如果有两个APP,那么再import时会出错解决的方法有两种:方法一:在每个APP里设置单独的url.py文件
- 前言9月份,开始开发微信小程序,也曾调研过wepy/mpvue,考虑到后期跨端的需求,最终选择使用了uni-app,本文主要介绍如何使用un
- typeof都返回object在JavaScript中所有数据类型严格意义上都是对象,但实际使用中我们还是有类型之分,如果要判断一个变量是数
- 1. 文件注释File -> settings -> Editor -> File and Code Templates
- 记录一些select的技巧: 1、select语句可以用回车分隔 $sql="select * from&nb
- 使用Northwind 数据库首先查询Employees表查询结果:city列里面只有5个城市使用ROW_NUMBER() OVER(PAR
- 在dreamweaver4中,你可以存储你自己设定的图片,链接,flash影片,颜色表,模板等等,组成这个站点的资产,这就是Assets面板
- 数据库的选择原则是什么?我只知道小网站用Access,大网站用SQL,请问它的具体选择原则是什么?在实际应用中,数据库的选择原则一般是:如果
- 本文实例讲述了PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)。分享给大家供大家参考,具体如下:前言:深度优先遍历:对
- /** * 获取地址栏参数 * * @example GetUrlString('id&#
- 本文实例讲述了js获取url传值的方法。分享给大家供大家参考,具体如下:js获取url参数值:index.htm?参数1=数值1&参