【玖哥乱弹】神通广大的JavaScript

原创 2017年08月30日 21:05:36

一切可以用 JavaScript 编写的程序,最终都会使用 JavaScript 编写

——Atwood 2007

 

就在前几天“JavaScript是世界上最好的语言”这句话火了,PHP的地位遭受了前所未有的挑战。JavaScript到底有何神通,能登上世界上最好的语言的宝座?

 

JavaScript是诞生于1995年的一种直译式脚本语言,原名Mocha。JavaScript是一种动态类型、弱类型、基于原型的语言,内置支持类型。JavaScript具备简单灵活和跨平台的优势,会成为解决大部分IT问题的优选方案。著名程序员 Jeff Atwood 在2007年发布了著名的 Atwood's Law: “Any application that can be written in JavaScript, will eventually be written in JavaScript. (一切可以用 JavaScript 编写的程序,最终都会使用 JavaScript 编写)”。就像世界上大多数人都是白种人一样,GitHub上用JavaScript写的代码也占据了大多数,JavaScript的开放性和简洁性功不可没。

 

网页前端

JavaScript最初是用来给HTML网页增加动态功能的。与JavaScript同时出现的JScript、ActionScript和ScriptEase等都几乎销声匿迹,但JavaScript仍然被广泛用于Web应用开发,也用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果,甚至成为了前端开发的代名词,这就说明了JavaScript的强大之处。

 

为传统企业做一个展示网站通常耗时以周计,此时开发者只要找一个模板就够了。而开发时间以月计的互联网公司前端开发工作就不得不选择一个合适的框架了,以下是世界主流的JavaScript前端开发框架和类库:

 

出自Google的前端开发框架Angular.js自带MVC框架,通过新的属性和表达式扩展了 HTML,并且通过被称为指令(directives)的结构让浏览器能够识别新的语法,现在已经凭借数据双向绑定成为了使用人数最多的前端开发框架。

 

来自FaceBook的前端开发框架React.js设计思想是用组件套组件的方式来绘制Web画面现在大家开发前端的思路早已不是当年的 Web page,而是 Application——传统的HEML+CSS已经不适合这个时代了,组件化开发即将成为主流。

 

国内前端专家尤雨溪的前端开发框架Vue.js在GitHub的Star数量已经非常接近React.js,Vue.js能像织席贩履的刘备一样与出身名门的Angular.js和React.js鼎足而立的原因在于提供了更加简洁、更易于理解的API, 更加轻量级也更加容易上手自带MVVM架构的Vue.js必将以开源世界中国人的骄傲载入史册。

 

体量并不能称为一个“框架”的jQuery是一个号称“Write Less,Do More”的JavaScript类库,封装了大多数常见、但写起来复杂的实用代码段,如优化HTML文档操作、事件处理和动画设计等。

 

服务端和大数据

JavaScript不仅适合前端开发,Node.js的出现使得JavaScript程序员进行后台开发成为可能。Node.js是一个基于 Chrome V8 引擎的 JavaScript 运行环境其包管理器 npm是全球最大的开源库生态系统。无论公司自备机房还是使用阿里云、金山云等云服务,Node.js都是创业团队的最佳选择。但因为JavaScript是单线程语言,在处理高并发和大数据等问题上常常力不从心。

 

如果你是一个Android或iOS开发者,服务器仅仅是给自己业余项目或开源项目用的,那么Bmob云(没错,Bmob云端代码也是JavaScript)也能为你提供一个小而美、并且价格低廉的服务器。

 

网页游戏

网页游戏不都是粗制滥造的“一刀999级”或“屠龙宝刀,注册就送”等圈钱产品,用浏览器玩的游戏也能做到画面精美、特效绚丽。

 

Cocos2d-x-js是全世界最著名游戏框架Cocos2d-x专为HTML5游戏设计的JavaScript版本,采用原生JavaScript语言编写。随着Flash退出历史舞台,掌握Cocos2d-x-js技术的程序员就是新一代的闪客。

 

2014年2月创立于北京的Egret是一套完整的HTML5游戏开发解决方案,其核心产品白鹭引擎(Egret Engine)凭借上手简便、性能强大已占据国内超七成的手机页游引擎市场份额。Egret布道师徐聪(笔名:臭臭打不死人)不但能用自己精益求精的技术和助人为乐的精神帮助开发者解决使用Erget时遇到的技术问题,还经常向有探索精神、帮助其他开发者了解Erget的开发者赠送礼物。

 

移动端

最著名的HTML5移动开发框架当属Facebook发布于2015年的React Native(顾名思义,是上文提到的React.js的一个分支),这是一套跨平台、动态更新的 Javascript 框架,口号是“Learn once, write anywhere”。与之类似有同属舶来的PhoneGap等。

 

国产的HTML5开发框架在国内也百家争鸣,常见的有HBuilder和AppCan,二者共同特点是都为了便于新手入门制作了专用的编译器。2016年,在Qcon大会上宣布开源的Weex也异军突起,来自阿里的它因为开发的软件与原生App别无二致受到很多人的青睐。

 

掌握JavaScript的程序员在国内还有一个新出路,就是微信开发。在国内有7亿用户的微信向广大JavaScript程序员提供了无数公众号和小程序开发的就业岗位,并且现在的移动互联网创业公司或者想涉足移动互联网的传统企业都可以先用微信公众号和小程序试水而不必一开始就开发成本高昂、进度缓慢的原生App

 

VR

2016年被誉为“中国VR元年”,其实VR并不神秘,只要掌握了眼球追踪和立体视觉,一切3D引擎都可以摇身一变成为VR引擎。而JavaScript恰好编写过几款著名的2D引擎

 

Three.js是3D绘图协议webGL的一款框架,也是增长最迅速的和讨论最热烈的3D游戏引擎;React VR是FaceBook今年推出的基于JavaScript框架的虚拟现实创建工具……这些五光十色的框架大大降低了JavaScript程序员涉足VR的门槛。

 

Egret Engine3D游戏引擎是国产的3D游戏引擎,不但网页兼容性更好,更支持手机浏览器,加载也更快,还配套了3D骨骼等配套工具,更具备支持将VR游戏发布到微信公众号及小程序的中国软件的种族优势。

 

尽管目前VR领域仍然是Unity-3d的时代,VR程序员都是写C#的,但JavaScript征服VR世界只是一个时间问题。

 

AI

AlphaGo击败柯洁的新闻在科技界引发了轩然大波,AI一夜之间登上了各大送索引擎的搜索榜首。

 

理论上一切图灵完备的语言都能成为AI开发语言,而JavaScript正是图灵完备的。无数JavaScript程序员致力于JavaScript在自然语言处理和手写识别等领域的研究,目前国外已经出现用JavaScript编写的人脸识别工具Landmarker.io

 

尽管目前业界主流观点还是“AI入门用Python,AI追求性能用C++,AI工业化用Java”,但我们仍然可以坚信克服了AI专业库缺失和无法精确控制内问题的JavaScript终将在AI领域占据一席之地。

 

loT

loT比一般的软件系统多了一个硬件层,这就决定了loT的架构的复杂程度,常常需要多种语言的配合才行:

1、用Arduino给硬件编写一个控制器

2、用使用C语言编写的Raspberry Pi连接网络,并传输控制信号给硬件

3、用“钩子语言”Python连接以上两条

4、用Java语言编写一个Android应用,用手机作为遥控器

……

万幸这个需要掌握多种语言才能进行loT工作的时代即将成为过去式。三星设计了用JavaScript编写的物联网引擎loT.js,它的运行内存小于64kb,而且全部代码能够存储在不足200KB的ROM上,如此轻量的体积在智能家居等硬件设备上有明显的优势。由此可见,物联网也将成为JavaScript工程师的新蓝海。

版权声明:本文为博主原创文章,转载请以超链接形式标明文章原始出处和作者

分布式服务框架的4项特性

原文地址 :http://timyang.net/distributed/service-architecture/ 在移动及云时代,尽管大部分可扩展的问题可以通过云平台解决,但...

【全国卷】程序员的自主命题!一本正经聊技术、代码,以及。。。。。。

IT168最近举办了一个“程序员高考”,我给每个话题写了一篇作文,任意两篇字数之和都小于1024字,任意三篇字数之和都大于1024字。...

【玖哥乱弹】如何做一个合格的Android面试官

我入坑Android已经三年有余了,期间被别人面试过也面试过别人。在被不合格的面试官面试过也做过不合格的面试官之后,我总结出了作为一个合格的Android面试官应有的套路...

【玖哥乱弹】成功的IT人士这样转型AI

AlphaGo在与围棋世界冠军的对弈大获全胜,不但让我们领略到了AI的巨大潜力,还把AI推上了新的浪潮之巅。作为一个从即将过去的移动互联网时代走来的Android工程师,我深深感受到自己成了传统行业,...

【玖哥乱弹】Android初学路上会遇到的瓶颈

对于大多数大三学生来说,这个暑假是人生最后一个暑假。对于IT专业的学生来说,开学后就要面对各大IT企业的秋招,很多人会成为从0开始的Android实习生。在Android初学之路上,每个Android...

【玖哥乱弹】编程语言间的斗争

在初级程序员阶段,每个人都不可避免遇到选择编程语言和职业方向的难题。我挑选了几个常见的编程语言,分析了优缺点和职业方向,以供想当程序员的人参考。 C/C++ 一句话概括:大多数中国程序员的...

一周乱弹(1,js if(!param)判断,2,jquery发送多个ajax请求 $.when().then()3,清空表单)

1,在js的if判断里以下几种情况默认为false null undifined ” 0 (数字0)所以在if判断中加上!就为true 。 2,jquery...

互联网金融乱弹4:讨论金融系统日切处理

日切,通俗的来说就是进行日期切换,更换系统记账的时间;对当天的系统业务进行集中处理,处理完毕后,系统从当前工作日切换到下一工作日,日切过程中交易可以照常提交并正确处理返回。 举一个银行的例子来说,就是...

悠然乱弹:开源中国GIT中Java分类下TOP10项目的活动情况分析

摘要: TOP 10 ThinkGem / JeeSite 项目GIT情况统计 从上面看到,总共参与的贡献者有15个人,10个以上提交者有3个,最近1个月一个提交也没有。默认分支文件总数有5490。 ...

乱弹java并发(八)-- Phaser

Phaser是java7新添加的一个同步工具,相比CyclicBarrier、CountDownLatch、Semaphore等同步工具,Phaser更灵活而且可复用(CyclicBarrier也可复...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【玖哥乱弹】神通广大的JavaScript
举报原因:
原因补充:

(最多只允许输入30个字)