JavaScript的胜利

  还记得曾几何时,不少朋友出于安全性考虑而选择在自己的浏览器上禁用JavaScript。时至今日,这种作法已经变得荒谬可笑——理由很简单, JavaScript已经统治了整个网络世界。在这个充斥着平台多样性的全新计算时代,我们需要那些能够运行在任意设备浏览器中的应用程序。原生应用可能运行速度更快、调用更多JavaScript 无法染指的特定平台功能,但不可否认,云时代已然来临、我们则身处其中。有鉴于此,我们要继续坚持针对专一平台编写桌面或者移动应用、还是拓宽思路利用 JavaScript开发一些任何平台都能够接纳的应用方案?

  当然,这个问题的具体答案取决于该应用的实际特性。 JavaScript存在多种局限——出于安全原因, JavaScript无法对客户端中的文件进行读取或者写入。而且“真正的”程序员更倾向于不断强调此类缺点。不过JQuery以及多种其它框架的出现已经使JavaScript 获得了构建复杂应用程序的能力;此外,JSON(即 JavaScript Object Notation)能够全面取代XML的数据传输功能。更不用提Node.js,它刚刚在最新一轮 InfoWorld Bossie评选中脱颖而出、帮助JavaScript 强势进军服务器端。

  

  JavaScript能走多远?

  堪称巧合的是,InfoWorld新技术论坛上同时出现了两篇文章,且都以探讨JavaScript的潜在发展空间为主:一篇由VisiCalc联合创造者、来自Alpha Software的 Dan Bricklin撰写,另一篇则由Adobe的Divya Manian 及Thibault Imbert联手推出。在《JavaScript在移动平台上击败原生代码》一文中, Bricklin针对JavaScript执行速度低于原生代码这一假设作出了回应:

  实际情况是,原生代码所能够完成的数学执行运算都能够在JavaScript上顺利实现(而且计算的相关时耗也并无不同)。上述观点忽略了这样一项客观现实,即对于各种不同类型的执行与计算工作而言,基于JavaScript的应用程序往往拥有与原生代码相同甚至更为出色的表现。

  为什么会这样?Bricklin解释称,因为睿智的程序员多年以来一直在对浏览器进行调整、旨在优化此类执行工作的速度表现。此外,浏览器内高级执行能力也迎来了显著提高,其中最具代表性的就是3D渲染功能。

  从Adobe公司的立场出发,Manian与Imbert对 JavaScript的发展前景作出了预期,并提到了 Mozilla打造的研究项目asm.js——该项目“定义了一套JavaScript子集,可由编译器生成并通过JavaScript虚拟机实现高度优化。”更令人振奋的是,他们还对RiverTrail(一套由英特尔打造的、专门用于JavaScript开发工作的并行编程模型及API)进行了探究。两位作者还提到Adobe正在将新型HTML 5功能推进至标准化高度,其中包括Regions、Blend Modes以及 Shapes等。纵览整篇文章,我们发现Manian与Imbert相当于给Flash以及ActionScript这两套行将就木的技术方案又一记猛击。

  JavaScript生态系统

  JavaScript的胜利似乎给业界带来了灵感,如今每周都会有一款新型框架与世人见面、其它与JavaScript开发相关的工具也层出不穷:

  ANGULARJS,一款用于将静态HTML页面转化为JavaScript应用的工具集,同时支持MVC架构。 BACKBONE.JS, 一款JavaScript库,允许开发人员向应用中添加结构并以Model形式表现数据。 BOOTSTRAP, 一款负责网页设备的框架,旨在与 JQuery进行对接。 ENYO, 一款面向对象型JavaScript框架,能够被用于创建HTML 5/CSS应用。 D3, 一款JavaScript库,能够在无需插件配合的前提下向浏览器推送矢量图形。 EMBER.JS, 一款前景广阔的JavaScript框架,用于开发MVC应用程序开发并配备丰富功能。 EMSCRIPTEN, 一款能够将C++转化为asm.js( Mozilla打造的高优化性JavaScript子集)的编译器方案。 JavaScript拥有成员众多的支持工具阵营——以上列举的仅是其中最为出色的少数解决方案。

  其中大部分属于开源项目,这些工具的不断拓展也成为JavaScript强劲发展势头的重要驱动因素。

  但是……JavaScript本身又如何?

  不过,经验丰富的开发人员对此拥有存在抵触情绪。InfoWorld网站的Andy Oliver这样描述他所抱持的保留态度:

  JavaScript一直都是备选开发途径中的一员—— 我们真正要做的是考量其是否适合自己的需求…… 我接触到的管理者喜欢JavaScript,因为它允许开发人员在其中使用jQuery、Node.js甚至利用 MongoDB处理一部分数据库事务。但我身边的开发人员显然持不同观点,他们讨厌日以继夜地进行 JavaScript开发……开发项目负责人同样持抗拒情绪,因为JavaScript牺牲掉了不少宝贵的数据库功能。

  换言之,作为一种既易于学习、又有所局限的开发方案,JavaScript给编程工作带来了民主化进程 ——一旦开发人员的工作目标模糊不清、最终开发成果也将变得一团糟。

  不过已经有越来越多优秀的JavaScript程序员逐步成长起来,其中不少都能在asm.js或者英特尔 RiverTrail并行编程模型的支持下打造出卓越的工作成果。而且毫无疑问,他们并没有在工作中受到缺乏相关工具的困扰。不过最出色的并不一定能获得最终胜利。对于x86指令集来说,笑到最后的可能也是惟一有能力活到最后的。我不知道JavaScript要如何实现自身扩展来迎合开发人员的工作需求,例如打造整体功能的丰富程度可与微软Office比肩的复杂应用程序。不过鉴于通过浏览器窗口观察世界的方式实在有点别扭,至少我本人不会把压箱底的资金投入到这类项目身上。

时间: 2024-09-28 17:00:04

JavaScript的胜利的相关文章

统治网络:JavaScript的胜利

JavaScript正凭借新型工具与功能提升以极度夸张的速度吞噬整个世界.我们是否应该接受这一无法逆转的趋势? 还记得那些旧日往事吗?很多用户因为担心安全问题而在浏览器中禁用JavaScript.如今这样的担忧已经显得相当可笑--JavaScript已经成为统治网络世界的绝对王者. 在以平台多样性为标志的计算时代之下,我们需要能够运行在任何设备浏览器当中的应用程序.原生应用的运行速度也许更快.对于特定平台的功能利用效果也非JavaScript可及,但云时代的来临显著缩小了二者之间的差距.现在摆在

谁是 2016 年的 JavaScript 之最?

JavaScript 社区正在不断地发展创新,趋势在不断地变化着.本文将通过比较过去1年里在Github上的 star 数,告诉你 2016 年的主要趋势.在2015年,React成为最大赢家,Redux在与Flux的大战中赢得胜利.那么谁是2016年的 JavaScript 新星? 1.通过一年中最热门的10个项目,您可以很好地了解2016年的Web开发环境: 2016年最热门的项目是Vue.JS项目,在去年的Github上获得了超过25,000 star,超过了包括React和Angular

《JavaScript数据可视化编程》——1.4 用离散图表绘制x/y值

1.4 用离散图表绘制x/y值 柱状图对于单一数据维度的可视化展现通常是非常有效的就像我们之前创建的展现胜利场次的柱状图.但如果我们想要探索两种不同类型数据之间的关系离散型图表会更有效.假设我们想要展示一个城市健康体检的花费一个维度和平均寿命另一个维度之间的关系.让我们通过一个例子一步步的看看用数据是如何创建离散型图表的. 就像在本书1.1节介绍的一样我们需要在我们的网页中加载Flotr2类库并设置一个div元素来放置我们将构建的图表. 1.4.1 第1步 定义数据 在这个例子中我们将使用经济合

JavaScript 字符串常用操作小结(非常实用)_javascript技巧

字符串截取 1. substring() xString.substring(start,end) substring()是最常用到的字符串截取方法,它可以接收两个参数(参数不能为负值),分别是要截取的开始位置和结束位置,它将返回一个新的字符串,其内容是从start处到end-1处的所有字符.若结束参数(end)省略,则表示从start位置一直截取到最后. let str = 'www.jeffjade.com' console.log(str.substring(0,3)) // www co

JavaScript 启动性能探究

本文讲的是JavaScript 启动性能探究, 作为 web 开发者,都知道 web 项目开发到最后,页面规模很容易变的很大. 但 加载 一个网页远不止从网线上传送字节码那么简单.浏览器下载了页面脚本之后,它还必须解析.解释和运行它们.这篇文章将深入 JavaScript 的这一部分,研究 为什么这一过程会拖慢应用程序的启动,以及 如何 解决. 过去,人们并没有花很多时间优化 JavaScript 的解析.编译步骤.我们总是期望解析器在遇到 script 标签时立即解析和执行代码,但是情况并非如

javascript 类式继承与原型继承

JavaScript类式继承 为了更好的了解JavaScript中类式继承的原理,我们先看一个简单的例子. //Super class function Person(){ this.name='张胜利'; this.age=23; this.getName = function(){ return this.name; }; }; Person.prototype.getAge = function(){ return this.age; }; //sub class function rea

《JavaScript数据可视化编程》—— 第1章 图像数据1.1 创建基础的柱状图

第1章 图像数据 JavaScript数据可视化编程在很多人的印象中,数据可视化图形是一些非常酷炫复杂.充满科幻设计感的图形.这种看法其实存在误区.实际上,建立一个有效的数据可视化模型并不需要特别深厚的设计功底和复杂的编程技巧,如果你一直牢记着数据可视化的目的是帮助人们更好地理解数据,那么你就会认同,在进行数据可视化的过程中最需要注意的,恰恰是"简单"二字.那些看似简单基础.随处可见的图表及其所传达的信息,往往最容易为人们所理解和消化. 因为用户已经熟悉了各式各样的常规图表,如柱状图.

JavaScript 预解析的原理及实现

事实上或某种现象证明并不是这样的,通过<JavaScript权威指南>及网上相关资料了解到,JavaScript有"预解析"行为.理解这一特性是很重要的,不然在实际开发中你可能会遇到很多无从解析的问题,甚至导致程序bug的存在.为了解析这一现象,也作为自己的一次学习总结,本文逐步引导你来认识JavaScript"预解析",如果我的见解有误,还望指正. (1) 如果JavaScript仅是运行时自上往下逐句解析的,下面的代码能正确运行是可以理解的,因为我们

访问本页面 您的浏览器需要支持JavaScript的解决办法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 百度site:首页出现"访问本页面,您的浏览器需要支持JavaScript".这样的情况,对于一个刚刚引起搜索引擎重视的新站来说是相当大的打击,需要尽快找出原因跟解决办法. 首先分析原因,用站长工具模拟搜索引擎蜘蛛抓取,结果却是"访问本页面,您的浏览器需要支持JavaScript".用谷歌管理员工具中实