热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Javascript实现HTML5重要语言

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

很长时间以来,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敬而远之,今年可是该学习它了。没有任何理由,真的,再不学,恐怕你就没机会跟上时代了!


推荐阅读
  • 前面刚有AWS开战MongoDB,双方“隔空互呛”,这厢又曝出2亿+简历信息泄露——MongoDB的这场开年似乎“充实”得过分了些。长期以来,作为“最受欢迎的NoSQL数据库”,M ... [详细]
  • 个体都会学习的JavaScript之DOM树
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了JavaScript之DOM树相关的知识,希望对你有一定的参考价值。目录 ... [详细]
  • Python字典推导式及循环列表生成字典方法
    本文介绍了Python中使用字典推导式和循环列表生成字典的方法,包括通过循环列表生成相应的字典,并给出了执行结果。详细讲解了代码实现过程。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了Python版Protobuf的安装和使用方法,包括版本选择、编译配置、示例代码等内容。通过学习本教程,您将了解如何在Python中使用Protobuf进行数据序列化和反序列化操作,以及相关的注意事项和技巧。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • JavaScript简介及语言特点
    本文介绍了JavaScript的起源和发展历程,以及其在前端验证和服务器端开发中的应用。同时,还介绍了ECMAScript标准、DOM对象和BOM对象的作用及特点。最后,对JavaScript作为解释型语言和编译型语言的区别进行了说明。 ... [详细]
  • JavaScript和Python是用于构建各种应用程序的两种有影响力的编程语言。尽管JavaScript多年来一直是占主导地位的编程语言,但Python的迅猛发展有 ... [详细]
  • 这么多流媒体服务器?你怎么技术选型?
    在上一篇文章里我们介绍了我们介绍了MCU和SFU的优缺点,webRTC通信方案SFU和MCU的区别?下面就来探讨下常见的SFU开源解决方案,当然,你也可以自己实现SFU流媒体服务器 ... [详细]
  • 这也太简单了!轻松操作Feign 服务调用使用 Zipkin 链路追踪!
    0、介绍分布式微服务时代,方便了业务的快速增长和服务的稳定,但是系统出现问题后,面对同业务多服务排查起来令人头大。这时候领导就想着集成分布式追踪系统。Zipkin是T ... [详细]
  • php网站_十周后,62%的PHP网站将运行在一个不受支持的PHP版本上
    本文由编程笔记#小编为大家整理,主要介绍了十周后,62%的PHP网站将运行在一个不受支持的PHP版本上相关的知识,希望对你有一定的参考价值。 ... [详细]
  • hackingTeam是如何被黑的
    hackingTeam是如何被黑的 ... [详细]
  • 寻找优质 NFT 项目的 8 个方向:效用、社区、流动性……
    除了主观情绪之外,我们还能从哪些方向来判断一个NFT项目呢?原文标题:《8点方向,助你寻找优质NFT项目 ... [详细]
  • OrbitDBPeer 2 Peer Database using CRDTs
    2019独角兽企业重金招聘Python工程师标准Apeer-to-peerdatabaseforthedecentralizedwebOrbitDBisaserverless ... [详细]
author-avatar
陈芝麻烂谷子我勒个去
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有