`
tanlan
  • 浏览: 203386 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JavaScript,只有你想不到

阅读更多

      原文地址:http://radar.oreilly.com/2011/06/time-to-learn-javascript.html

      翻译地址:http://www.cn-cuckoo.com/2011/06/22/time-to-learn-javascript-2463.html

      作者:Mike Loukides

 

      很长时间以来,JavaScript在我眼里都是编程语言中的二等公民。早先,它经常是很多安全问题的发源地,就像是胶水一样,它能把HTML应用与样式粘到一块,可没有人拿它来正正规规地写程序;这样的情形太普遍了。而Java、Ruby、Python,这些才是真正能用来写程序的语言。

       过去几年间,我对JavaScript的态度有了彻底的改变。JavaScript已经“长大成人”了。我敢保证很多JavaScript开发人员都不会认同我前面的说法,他们会说JavaScript一直都是一个十分强大、成熟、深得人心的语言。或许他们说得没错,事实上只要是一门完整的编程语言,就能拿来写程序,也包括BASIC这种滥东西。而一门语言真正有用,必须一方面自身具备很强的表达能力,另一方面还要有众多的库和开发工具。显然,JavaScript的表达能力早就没有问题了,即便是创建对象的方式有点不好让人接受,其实问题也不大。直到最近,一些极其重要的扭转局面的技术出现了:jQuery、JSON、Node.js和HTML5。或许JavaScript以前就是一门完善的语言了,但却是这些重要的相关技术(以及其他一些没有在这里提及的),让JavaScript成为了每一个开发人员都知道的语言。如果明年你要学一门新语言的话,那一定就是JavaScript。

 

潜力无限的Node.js

     说Node.js潜力无限的意思,就是它有可能引发Web开发的革命。Node.js是一个框架,用于构建高性能Web应用——即使是巨量的请求也能应对如流。虽然Node本身作为一个底层框架,能够用于构建任何应用,但它还是最适合构建Web服务器。它的异步事件驱动模式与传统的请求-响应模式相比,无疑更适合Web应用。

     有两方面因素更让人看好Node。首先,Google在提升JavaScript性能方面掀起了一场革命。这句话的意思并不是说你随时随地都可以用上最好的JavaScript引擎(尽管这也是我们一个美好的期望)。但可以肯定的是,Google在其他竞争对手还没有上心的情况下,真的把JavaScript性能当成了一回事儿。如此一来,就把Mozilla、Apple、Microsoft、Opera,还有其他浏览器开发商逼到了性能竞赛的跑道上。结果导致我们现在使用的JavaScript引擎较之几年前快了不知道有多少倍,完全有能力运行复杂的大型Web应用。

     其次,Node有着庞大的开发人员基础。不管大家在服务器端使用的是什么语言,但在客户端却鲜有不使用JavaScript的。有的人可能是“剪刀加浆糊”式的东拼西凑,有的人则可能用JavaScript做出了高超的Ajax应用,而有的人甚至实现了全功能的应用程序,像Twitter或Gmail。可不管怎么说,JavaScript开发人员的数量无疑是非常庞大的。而Doug Crockford等作者更是极力宣传所有人都应该把JavaScript当成一门严肃正经的编程语言来看待——尽管它还有不少缺点。

     当时当下,编写Node应用相对还是个“粗”活儿,毕竟它只是一个底层库。想象一下单纯使用JavaScript写代码,对,就是这种感觉,Node当前还是一个beta版的格局,与Rails或Django这样成熟的Web开发框架还没法比。这种状况无疑会改变。一些轻量级的框架,比如Express,已经出现了;我坚信更多基于Node的全功能框架将继续不断涌现。

     前面提到过一些几乎完全在浏览器中运行的高级Web应用。那些都已经不算什么新鲜事儿了,Gmail多大了?Google Maps贵庚了?不过,用JavaScript编写在浏览器中运行的应用的客户端无疑是越来越有吸引力了。HTML5则继续推高了人们对这一趋势的期许。

 

HTML5就是JavaScript

     我不知道已经说过多少次了,HTML5实际上并没有多少与HTML有关,它其实就是JavaScript。HTML本身有什么变化?不过一些新标签而已,况且哪个新标签都不难理解。HTML5的威力在于让你能用JavaScript来创建这些标签。假如没有后台代码通过Canvas来创建动画、游戏,或者通过它来实现一些数据的可视化,这个标签也没有大用处。从浏览器开始支持Canvas开始,我已经看到了Asteroids(行星游戏)的上百个实现,那都是开发人员为熟悉这个新特性所做的练习。有的比较粗糙一些,而有的则极其精美。这些完全都要归功于JavaScript。

     由此可见,HTML5并不是以尖括号为特征的标签语言的一次大的改进,其实质是赋予了JavaScript更强大的能力。WebGL库(当前还羽翼未丰)支持在HTML5的画布中绘制实时的3D图形。HTML5的地理位置支持在浏览器中实现LBS(Location Based Service)应用——这都是手机的基本配置。而持久存储以及离线功能则为开发能与桌面应用媲美,但却在浏览器中运行的全功能应用奠定了基础。目前,就连增加多点触摸事件的实验性的库也已经出现了。凡此种种,无一不是实实在在的JavaScript特性。HTML5只是为这些高级功能的发挥提供了舞台。

     退一步讲,不依赖于HTML5的浏览器端开发库也取得了长足的进步。长久以来,JavaScript一直都是在HTML中实现动态效果的不二之选。可两个问题迟迟得不到解决:一是浏览器兼容性问题,二是直接操作DOM太麻烦。jQuery让这两个问题霎那间消失得无影无踪,这个库已经成为现代基于浏览器的客户端开发的基本配置。不过,并非只有jQuery。Protovis、还有D3,都可以让你直接在浏览器中创建复杂的交互性数据可视化效果,有史以来第一次让浏览器成为了展示数据的一个重要媒介。

 

JavaScript与数据库,编译器与语言

     就连数据库里都开始广泛使用JavaScript了!当前如火如荼的NoSQL运动的三只领头羊:CouchDB、MongoDB和Riak,都是“文档数据库”。它们保存的不是表,而是文档。这几个数据库所谓的“文档”,其实就是JSON文档,而不是Word或Excel。(Riak除了JSON文档,还支持XML和纯文本。)JSON已经成为一种被广泛采用的数据交换格式(所有现代的编程语言几乎全都有解析JSON的库),不过请注意,JSON实际上不就是一种序列化JavaScript对象的格式嘛!因此,虽然你可以在任何语言中使用JSON,但在JavaScript开发中使用它则是再自然不过的事了。况且,JSON 这个格式成为一种跨语言的标准,而不是Python、Ruby或Java等语言的序列化格式,这个事实本身足以说明JavaScript将在更加广阔的舞台上大显身手。还不仅仅如此,上述三个数据库都内置了支持JavaScript查询的能力。未来几年,更多的人都将会惊讶地发现,JavaScript和JSON还会内置到其他应用程序中!

      JavaScript时代的大幕才刚刚拉开。在今年的JSConf上,一个核心主题就是“JavaScript到JavaScript的编译器”,也被人们看成是未来的一个主要趋势。Google在“编译生成JavaScript代码”方面是首开先河者。据我所知,GWT(Google Web Toolkit)应该是通过编译(从Java代码)生成JavaScript代码的第一个框架。以前我对GWT并没有太重视,只是觉得它是一个致力于拯救那些Java程序员的框架,好让他们不必因为(学习)编写JavaScript而浪费时间。可是,GWT在编译过程中对JavaScript做了那么多的优化,简直是太神了。Closure就是一个“JavaScript到JavaScript的编译器”,能够实现同样级别的优化。Traceur,这是几个星期前才冒出来的一个框架,通过它能够试验JavaScript的新特性,换句话说,它可以把带有实验性语言特性的JavaScript代码编译成可以在所有现代平台中运行的JavaScript代码。

      最后,我们也开始看到了当初Java大旗下JVM语言的蓬勃景象:很多语言都在致力于编译成JavaScript!其中有一些语言比较有意思,像Coffeescript和Kaffeine,它们在风格上酷似JavaScript,但更关注弥补JavaScript的一些不够完善的地方。是不是觉得JavaScript的对象模型特有意思,可怎么看怎么有点笨笨滴,有木有?是不是一想到基于原型创建一个实际的对象都需要反反复复地定义这定义那,就望而却步了,有木有?Coffeescript对此作了明显的改进。除了完善对象模型,Coffeescript 还添加了类似列表解析(list comprehensions)的新特性,去掉了大部分花括号。就像在Python中一样,要使用缩进来区分代码块。

      未来的Web服务器、取之不尽的客户端库、HTML5、数据库,乃至基于JavaScript的语言——我现在一睁眼看到的就是JavaScript!假如你曾经对JavaScript敬而远之,今年可是该学习它了。没有任何理由,真的,再不学,恐怕你就没机会跟上时代了!

分享到:
评论

相关推荐

    qt下载向导大全 只有你想不到的!

    在"qt下载向导大全 只有你想不到的!"中,我们可以预见到这可能是一个集合了各种QT相关的资源、教程、库文件、文档甚至是示例代码的综合资料包。 "qt大全.php.htm"与"qt大全.php_files"这两个文件名暗示着这可能是...

    圆环菜单,只有你想不到的,没有做不到的

    圆环菜单,正如标题所言,“只有你想不到的,没有做不到的”,是一种非常具有创意的交互设计模式,它突破了传统线性或平面菜单的局限,将菜单元素以圆形布局呈现,为用户提供了一种全新的操作体验。 圆环菜单的核心...

    javascript视频教程

    关于javascript资源免费领取,绝对完全,绝对免费,只有你想不到的,没有你做不到的,码农加油!!链接:https://pan.baidu.com/s/1dGDXWJJ 密码:whnq

    javascript真经

     你看,数据代码间的关系与物质能量间的关系有着惊人的相似。数据也是有惯性的,如果没有代码来施加外力,她总保持自己原来的状态。而代码就象能量,他存在的唯一目的,就是要努力改变数据原来的状态。在代码改变...

    From Simple JavaScript Classes to ASP.NET AJAX Controls

    标题“From Simple JavaScript Classes to ASP.NET AJAX Controls”表明我们将探讨如何从基础的JavaScript类逐步过渡到使用ASP.NET AJAX控件的技术。在这个过程中,我们将深入理解AJAX(Asynchronous JavaScript and...

    javaScript实例应用

    对于初学者来说,这是一个很好的起点,因为JavaScript是Web开发的基础,无论你是想成为前端开发者还是全栈开发者,掌握JavaScript都是必不可少的。 1. **基本语法**:JavaScript的基础包括变量、数据类型、操作符、...

    advanced game design with html5 and javascript

    如果你想将自己的游戏设计技能提升到更高的水平,这本书将是你的最佳选择。书籍的难度介于中级到高级之间,适合拥有Web开发和JavaScript知识的读者。此外,本书还提供在线源代码,方便读者获取和使用。 从概念上讲...

    代码之家(提供各种各样的网址,只有想不到的,没有找不到的)

    你可以在GitHub上找到各种语言的开源项目,参与社区贡献,或者为自己的项目寻找合作伙伴。 3. **GitLab**:另一个流行的代码托管平台,类似于GitHub,支持版本控制和协同开发。GitLab还提供持续集成/持续部署(CI/CD...

    常用的JS-JavaScript

    如果想要在用户的浏览器不支持JavaScript的情况下提供替代方案,可以使用`noscript`标签: ```html 您的浏览器不支持JavaScript。 ``` 这会在不支持JavaScript的浏览器中显示指定的信息。 #### 11. 查看页面源码...

    javascript 表单验证禁止输入中文汉字

    例如,如果你想允许英文字符和数字,可以修改正则表达式为: ```javascript var reg = /^[a-zA-Z0-9]*$/; ``` 这样,只有包含英文字符和数字的输入才会被接受。 总结来说,禁止用户在JavaScript表单中输入中文...

    javascript防止事件传播

    例如,如果你想阻止事件冒泡但不阻止其默认行为,使用`stopPropagation()`;如果你还需要阻止同一元素上其他处理函数的执行,那么`stopImmediatePropagation()`更为合适。 测试示例(test.html): ```html <!...

    使用javascript定时切换图片

    语法为`setTimeout(function, delay)`, 其中`function`是你想执行的函数,`delay`是延迟的时间(以毫秒计)。 2. `setInterval()`: 该函数会周期性地重复执行,直到被`clearInterval()`清除。语法为`setInterval...

    Javascript技巧

    为了防止其他网站将你的网页嵌入到它们的框架中,可以使用以下代码: ```javascript <script language="JavaScript"> if (top.location != self.location) { top.location = self.location; } ``` 这样可以有效...

    在 IE 中调试 JavaScript 2.docx

    在IE中调试JavaScript是开发和优化网页应用时不可或缺的一个环节,尤其对于那些仍然需要支持旧版浏览器的项目。IE Developer Toolbar是一款由微软推出的专门用于Internet Explorer浏览器的开发者工具,它为开发者...

    JavaScript下的10中图片特效

    在JavaScript的世界里,图片特效是网页设计中不可或缺的一部分,它们能极大地提升用户的交互体验和视觉享受。本篇文章将深入探讨10种JavaScript实现的图片特效,帮助你为网页设计增添更多的创新元素。以下是对每种...

    javascript实现推箱子网页小游戏(非常值得学习)源码.rar

    推箱子游戏,作为一种经典的逻辑益智游戏,深受玩家喜爱。...总之,这个"javascript实现推箱子网页小游戏"的源码是一个很好的学习资源,对于任何想要提升JavaScript技能的人来说,都非常值得研究。

    javascript对象比较

    - **引用比较**:JavaScript的对象是按引用比较的,这意味着当你比较两个不同的对象时,即使它们的属性完全相同,也会返回`false`,因为它们在内存中的位置不同。 - **浅层比较**:如果想要比较两个对象是否具有...

    悟透JavaScript.mht

    你看,数据代码间的关系与物质能量间的关系有着惊人的相似。数据也是有惯性的,如果没有代码来施加外力,她总保持自己原来的状态。而代码就象能量,他存在的唯一目的,就是要努力改变数据原来的状态。在代码改变...

    不容错过的YAlbum带缩图相册,由JavaScript封装

    YAlbum就是这样一款由JavaScript封装的相册组件,它提供了带缩略图的功能,使得用户在浏览相册时可以快速预览并选择想要查看的图片,极大地提升了图片浏览的便捷性。这篇文章将深入探讨YAlbum的特性和使用方法,帮助...

    vividjs一个JavaScript库它可以轻松定制和使用SVG图标

    总的来说,Vivid.js 是一个强大且灵活的JavaScript库,它简化了SVG图标的使用和定制,对于任何想要在项目中引入SVG图标的开发者来说,都是一个值得考虑的工具。通过熟悉这个库,你可以提升Web应用的视觉效果和用户...

Global site tag (gtag.js) - Google Analytics