JavaScript (04)-大话JS,屌丝逆袭(三)

前言


最近在学习 JS ,了解它的历史后感觉非常有意思,恰巧最近也在阅读并学习一些技术很厉害的牛人,模仿他们的一些文章写下这篇”屌丝逆袭”,用来了解 JavaScript 。
看这里, 就是我,大名鼎鼎的Javascript, 众人眼中的高富帅,前端编程之王;不过,在我还是一个屌丝的时候,谁也没能想到,我会发展到今天这个样子…



第一桶金


互联网的发展超出了所有人的预料, 我被应用在几乎每一个网站上, 但我一直很苦闷: 我作为一门语言,在浏览器中运行, 没法像java 那样访问网络, 也就没有办法调用服务器端的接口来获取数据。
用户只能通过GET或者POST向服务器发送请求,这时候服务器返回的数据是整个页面, 而不是页面中的一个片段, 也就是说整个页面都得刷新一遍, 哪怕是页面中只有一个文字的改变。


1998年的时候 ,我和积极进取的IE5做了一次会谈, 双方就共同关心的话题深入的交换了意见, 最后一致同意, 在IE5中引入一个新的功能:XMLHttpRequest , 这个新功能将允许我直接向服务器发出接口调用!


每当发起调用时, IE5通常会这么说:


那个小JS啊, 来, 你拿这个用户名和密码访问一下服务器端处理登陆的接口 , 这个过程很费时间,我就不等你了, 先干别的事儿去了, 你得到服务器端的返回数据以后, 一定要记着调用下我给你的这个函数啊。


我知道这其实叫做异步调用, 于是就乖乖的通过XMLHttpRequest 访问那个登录的url, 耐心的等待服务器干完活,把数据传输回来, 然后我就去调用那个函数, 基本是就是把DOM树的某个节点更新一下, 例如让那个包含用户名和密码登陆框消失, 再加一个提示消息:登录成功 , 这事儿我很擅长。


如果服务器处理和网络速度都足够快的话, 用户就会发现: 咦, 我没有刷新整个页面, 竟然已经登录了啊。


我和IE都没有料到,这个功能带来了一场革命: 这种方式可以使得网页局部刷新, 让用户浏览网页的体验极佳, 尤其是Google 地图, Gmail 等应用让互联网应用火了起来。


其他浏览器也迅速跟进,实现了类似功能, 各种各样交互性极佳的网站如雨后春笋般出现。


VB和Delphi 慢慢的不再嘲笑我了, 因为他们绝望的发现, 他们擅长的桌面应用慢慢的都被搬到了互联网上, 没人再喜欢他们了。


我, Javascript, 挖到了第一桶金,开始走向人生巅峰。



发明JSON


后来有个好事之徒把上面的那种处理方式称为AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML), 其实异步挺好, 但是XML就很不爽了。


比如说服务器返回了下面这段xml :

<book>
    <isbn>769-6-118-04084-4</isbn>
    <name>亦客沙漏</name>
    <author>王川</author>
   <introduction>正在成长的微众号</introduction>
   <price>66.00</price>
</book>



真正的数据很少, 标签(像这样的)反而占了大头, 把数据都给淹没了。


我对XML说: “你是不是太臃肿了, 传输起来多费劲啊。”


XML说:“切,你这就不懂了,这样很优雅啊,格式化良好, 人可以读, 程序也可以读啊。”
优雅个啥啊, 无用的数据这么多, 再说我还得用XML解析器来解析你, 费了劲了!”
你真是屌丝啊,连个解析都搞不定, 你看人家Java, 用我用的多Happy , Spring, Struts, Hibernate, 几乎所有配置文件都是我。


Java 也在一旁帮腔: 是啊, 我解析的时候还用DTD 做校验呢, 看看XML数据合法不合法。


我无语。


记得CPU阿甘说过:既然改变不了别人, 那就改变一下自己吧。
我看了看我的语法, 里边有个叫对象的东西, 它有一个花括号, 在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义, 属性由逗号分隔, 像这样:

var book = { 
"isbn": "769-6-118-04084-4", 
"name": "亦客沙漏",  
"author": "王川",
"introduction": "正在成长的微众号",
"price": "66.00"
 }




这种结构完全可以表达上面的xml 内容啊!
我的语法还支持数组,这样表达多个对象也不在话下啊:

var books = [
 { 
"isbn": "769-6-118-04084-4", 
"name": "亦客沙漏",   
"author": "王川",
"introduction": "正在成长的微众号",
"price": "66.00"
 },
 { 
"isbn": "769-6-118-04084-4", 
"name": "亦客沙漏",   
"author": "王川",
"introduction": "正在成长的微众号",
"price": "66.00"
 }
]


数组和对象都支持嵌套, 任何复杂的结构都可以保存!
更重要的是, 如果采用这种结构, 我根本不用什么XML解析器去解析了,它就是我语言的一部分。 直接拿来用即可。


books[0].name –>返回“亦客沙漏”
books[1].introduction –> 返回“正在成长的微众号”


生活不要太爽啊。


我把这种简洁的格式叫做JSON, 并且和服务器约定, 我们以后都用JSON来传输数据。


至于XML, 还是让Java 这样的老学究去用吧。












这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值