Ajax并不神秘:揭下各种Ajax控件和类库的小裤衩
程序员文章站
2022-04-14 11:59:00
ajax控件和类库现在真的太多了,不知不觉中增加了ajax的神秘性和复杂性,看到版内很多人为此费解和伤神,决定发此贴谈谈本人对ajax的观点,希望能让大家对ajax有一个本...
ajax控件和类库现在真的太多了,不知不觉中增加了ajax的神秘性和复杂性,看到版内很多人为此费解和伤神,决定发此贴谈谈本人对ajax的观点,希望能让大家对ajax有一个本质的认识。
观点一:ajax和服务器端技术毫不相关
严格的说,与传统web开发相比,ajax是完完全全的客户端技术。由于很多控件封装了客户端和服务器端的通信过程,因此很多问题也因通信而起。事实上,不论何种ajax技术,服务器端都是返回的一个纯文本流,再由客户端来处理这个文本。这段文本可以是xml格式,也可以是一个html片段,也可以是一段javascript脚本,或者仅是一个字符串。服务器端仅仅是作为一个数据接口,客户端使用xmlhttprequest对象来请求这个页面,服务器端在页面内写入结果文本,这个过程和普通的web开发没有任何区别。所不同的只是,客户端在异步获取结果后,不是直接显示在页面,而是由客户端的javascript脚本处理后再显示在页面。至于各种控件所谓的能返回dataset对象,date对象,或者其他的数据类型,都是封装了这个处理过程的结果。
观点二:dom模型是ajax最本质的技术
之所以没有把xmlhttprequest列为最本质的技术,因为本人觉得它实在是太简单了,它只是可以让浏览器在后台请求一个页面,并将其内容交给javascript处理。真正的核心应该是:dom模型,即文档对象模型。在dom模型里,html标记都被认为是一个对象,例如:div对象,table对象等等。dom模型就规定了这些对象所具有的属性、方法和事件。通过这些性质,可以对一个已经显示于浏览器的页面进行内容的修改,例如增加节点、修改节点位置,删除节点等等。而不仅仅是一个innerhtml属性这么简单,虽然这是一个很有用的属性。
观点三:在使用ajax控件前理解它们的实现
使用ajax控件的确可以提高效率,但如果你空中楼阁般使用控件,那就得不偿失了。从一个控件换到另外一个控件又会有一个漫长的学习曲线。所以应该从底层了解,况且ajax实在不是什么高深的技术。其实任何东西的最底层其实都是简单的,但如果封装了这些底层的东西,事情会变得复杂和难以理解。以asp.net为例,它的定制特性可以使得只要在方法前加上[ajax method]类似这样的标志就可以称为一个异步方法,相信这使得asp.net的ajax开发显得更加“高效”或者是“神秘”,而更多的事情则被封装了。同样记住一条,任何对服务器端的请求仅仅是返回纯文本,我们不一定要依赖于封装好的处理过程,而完全可以自己来实现。
观点四:学好javascript
在大多数人看来,javascript总不是那么一种正规的语言,随便copy一段就碰巧能运行,学过c之类的人,一看也能看懂,而且在浏览器中常常有脚本错误提示,所以潜意识觉得总不能付之以大任。事实上,要学好ajax,这就完全是一种错误的看法。javascript作为一种脚本语言,其语法的确不是很严格,但并不妨碍其完成诸多复杂的任务,没有javascript,就没有ajax。所以本人强烈建议,学ajax前,一定要好好研究一番javascript,一般来讲,如果能顺利看懂prototype框架的代码(如:prototype-1.3.1.js),你的javascript水平就基本过关了。同时对dom模型也可以算有一个基本的了解。
观点五:ajax点缀:css
用javascript控制css其实很简单,基本上每个dom对象都有一个style对象,只要把css属性里的”-”去掉,并让随后的字母变为大写就可以作为属性使用了,例如:element.style.backgroundcolor=”#f00″;在css是:选择符 {background-color:#f00}
一口气说这么多,希望对大家有点用处^_^
观点一:ajax和服务器端技术毫不相关
严格的说,与传统web开发相比,ajax是完完全全的客户端技术。由于很多控件封装了客户端和服务器端的通信过程,因此很多问题也因通信而起。事实上,不论何种ajax技术,服务器端都是返回的一个纯文本流,再由客户端来处理这个文本。这段文本可以是xml格式,也可以是一个html片段,也可以是一段javascript脚本,或者仅是一个字符串。服务器端仅仅是作为一个数据接口,客户端使用xmlhttprequest对象来请求这个页面,服务器端在页面内写入结果文本,这个过程和普通的web开发没有任何区别。所不同的只是,客户端在异步获取结果后,不是直接显示在页面,而是由客户端的javascript脚本处理后再显示在页面。至于各种控件所谓的能返回dataset对象,date对象,或者其他的数据类型,都是封装了这个处理过程的结果。
观点二:dom模型是ajax最本质的技术
之所以没有把xmlhttprequest列为最本质的技术,因为本人觉得它实在是太简单了,它只是可以让浏览器在后台请求一个页面,并将其内容交给javascript处理。真正的核心应该是:dom模型,即文档对象模型。在dom模型里,html标记都被认为是一个对象,例如:div对象,table对象等等。dom模型就规定了这些对象所具有的属性、方法和事件。通过这些性质,可以对一个已经显示于浏览器的页面进行内容的修改,例如增加节点、修改节点位置,删除节点等等。而不仅仅是一个innerhtml属性这么简单,虽然这是一个很有用的属性。
观点三:在使用ajax控件前理解它们的实现
使用ajax控件的确可以提高效率,但如果你空中楼阁般使用控件,那就得不偿失了。从一个控件换到另外一个控件又会有一个漫长的学习曲线。所以应该从底层了解,况且ajax实在不是什么高深的技术。其实任何东西的最底层其实都是简单的,但如果封装了这些底层的东西,事情会变得复杂和难以理解。以asp.net为例,它的定制特性可以使得只要在方法前加上[ajax method]类似这样的标志就可以称为一个异步方法,相信这使得asp.net的ajax开发显得更加“高效”或者是“神秘”,而更多的事情则被封装了。同样记住一条,任何对服务器端的请求仅仅是返回纯文本,我们不一定要依赖于封装好的处理过程,而完全可以自己来实现。
观点四:学好javascript
在大多数人看来,javascript总不是那么一种正规的语言,随便copy一段就碰巧能运行,学过c之类的人,一看也能看懂,而且在浏览器中常常有脚本错误提示,所以潜意识觉得总不能付之以大任。事实上,要学好ajax,这就完全是一种错误的看法。javascript作为一种脚本语言,其语法的确不是很严格,但并不妨碍其完成诸多复杂的任务,没有javascript,就没有ajax。所以本人强烈建议,学ajax前,一定要好好研究一番javascript,一般来讲,如果能顺利看懂prototype框架的代码(如:prototype-1.3.1.js),你的javascript水平就基本过关了。同时对dom模型也可以算有一个基本的了解。
观点五:ajax点缀:css
用javascript控制css其实很简单,基本上每个dom对象都有一个style对象,只要把css属性里的”-”去掉,并让随后的字母变为大写就可以作为属性使用了,例如:element.style.backgroundcolor=”#f00″;在css是:选择符 {background-color:#f00}
一口气说这么多,希望对大家有点用处^_^