`
sohui
  • 浏览: 20616 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

转:【观点】学习JavaScript的理由

阅读更多

导读:文章根据《 Why a JavaScript hater thinks everyone needs to learn JavaScript in the next year 》这篇文章翻译而来。译文由李松峰整理编译《 学习JavaScript的理由 》。

内容如下:

很长时间以来,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还添加了类似列表解析 (comprehensions)的新特性,去掉了大部分花括号。就像在Python中一样,要使用缩进来区分代码块。

未来的Web服务器、取之不尽的客户端库、HTML5、数据库,乃至基于JavaScript的语言——我一睁眼就能看到JavaScript!假如你曾经对JavaScript敬而远之,今年就该学习它了。没有理由,真的,再不学,恐怕你再也没机会赶超别人了!

原文出自:radar.oreilly

译文出自:cn-cuckoo

分享到:
评论

相关推荐

    学习 Web 技术:HTML,CSS,JavaScript .zip

    学习 Web 技术:HTML,CSS,JavaScript学习 Web 技术:HTML,CSS,JavaScript 学习 Web 技术:HTML,CSS,JavaScript学习 Web 技术:HTML,CSS,JavaScript 学习 Web 技术:HTML,CSS,JavaScript学习 Web 技术:...

    二阶段:JavaScript程序设计

    二阶段:JavaScript程序设计二阶段:JavaScript程序设计二阶段:JavaScript程序设计二阶段:JavaScript程序设计二阶段:JavaScript程序设计二阶段:JavaScript程序设计二阶段:JavaScript程序设计二阶段:JavaScript...

    JavaScript学习基础学习心得

    ### JavaScript 学习基础心得 在深入探讨JavaScript的基础深度原理之前,我们首先了解JavaScript的一些基本概念,这将有助于我们更好地理解和应用这些高级知识点。 #### 浏览器组成 浏览器是JavaScript运行的重要...

    JavaScript学习指南 高清 PDF

    这份"JavaScript学习指南"高清PDF,无疑为想要深入理解JavaScript的初学者或有一定基础的开发者提供了宝贵的资源。下面,我们将深入探讨JavaScript的一些关键知识点。 1. **基础语法**:JavaScript的基础包括变量、...

    学习教程大全:Gis javaScript API:2023年.pdf

    GIS JavaScript API 学习教程大全 GIS JavaScript API 是一种强大的工具,用于开发基于 Web 的 GIS 应用程序。该 API 提供了丰富的功能,允许开发者创建交互式的 GIS 应用程序,例如地图浏览、空间分析、地理编码等...

    头歌教学实践平台 Web前端开发基础 JavaScript学习手册六:JS条件语句

    JavaScript是Web前端开发的核心语言之一,它为网页和应用程序提供了动态交互的能力。在JavaScript中,条件语句是...在头歌教学实践平台的Web前端开发课程中,这些基础知识的学习和实践将为你的编程技能打下坚实的基础。

    前端开发:JavaScript学习资源大全从基础到实战

    内容概要:本文档提供了详尽的JavaScript学习资源,覆盖了JavaScript的基础知识、进阶技巧以及实际项目的开发案例。主要内容包括JavaScript的基本语法、数据类型、控制结构、DOM操作、事件处理、异步编程等。通过...

    Programming TypeScript: Making Your JavaScript Applications Scale (ePUB)

    Programming TypeScript: Making Your JavaScript Applications Scale (ePUB) (Publication Date: 2019-05-18)

    javascript-advanced:深入学习JavaScript

    9. DOM API:学习如何通过JavaScript操作文档对象模型(DOM),包括元素的选择(getElementById、querySelector等)、增删改查节点、以及事件处理。 五、事件与事件循环 10. 事件与事件处理:理解事件冒泡和事件...

    深入学习:javascript开发与实例

    目前为止可以说是公认的最好的javascript教材,从入门到深入,十分经典。这本书网上可以说很少有中文版下载的。分两部分

    什么是javascript,学习javascript

    学习JavaScript,首先应该理解这些基本概念,然后逐步深入到更高级的主题,如异步编程(回调函数、Promise、async/await)、闭包、模块系统、正则表达式、错误处理、类型转换等。此外,JavaScript还支持面向对象编程...

    JavaScript学习指南带书签PDF

    5. **DOM操作**:学习如何使用JavaScript来创建、修改和查找DOM元素,是网页动态化的基本技能。 6. **AJAX**:通过AJAX,JavaScript可以向服务器发送异步请求,更新部分页面内容,实现无刷新页面交互。 7. **ES6及...

    前端学习笔记整理:HTML, CSS, JavaScript, Web 性能优化, 工具, 框架, 资源.zip

    前端学习笔记整理:HTML, CSS, JavaScript, Web 性能优化, 工具, 框架, 资源 前端学习笔记整理:HTML, CSS, JavaScript, Web 性能优化, 工具, 框架, 资源 前端学习笔记整理:HTML, CSS, JavaScript, Web 性能优化, ...

    JavaScript中文转拼音

    在JavaScript编程语言中,实现中文转拼音的功能是一个常见的需求,特别是在前端开发中,例如创建一个网页工具,允许用户输入中文并获取对应的拼音。这个过程涉及到字符编码、Unicode和中文字符到拼音的映射。以下是...

    JavaScript学习资料全面整理

    本资源包"JavaScript学习资料全面整理"显然是为了帮助初学者和进阶者深入理解这门语言,包含了各种资源,下面将对JavaScript的一些关键知识点进行详细阐述。 1. **基础概念**:JavaScript是一种解释型、弱类型、...

    javascript学习资料

    13. **安全性**:学习如何防止XSS(跨站脚本攻击)和CSRF(跨站请求伪造)等安全问题,确保应用程序的安全性。 14. **响应式设计**:随着移动设备的普及,掌握如何用JavaScript实现响应式布局和触屏事件处理是必要...

Global site tag (gtag.js) - Google Analytics