神通广大的JS

转载 2017年08月30日 16:12:06

​点击标题下「异步图书」可快速关注            



一切可以用 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工程师的新蓝海。


我是东风玖哥,段子手中最擅长开发Android应用的,Android工程师中段子编得最好的。感谢异步社区及其粉丝们对我的文章的认可和支持,以后每周三会在此奉上一篇原创文章以飨读者。


在浏览器端浏览EPUB

什么是epub.js? epub.js是支持跨多个设备的,在浏览器端渲染EPUB文件的JavaScript库。 epub.js提供通用的电子书功能界面(如渲染、持久和分页)不需要开发专用的应用程序或插...
  • wtf4007
  • wtf4007
  • 2017年02月16日 15:19
  • 1494

EPUB.js 解决图片裁剪问题(缩放问题)

在EPUB.js中,如果需要实现自动缩放,通过添加smartimages.js就可以实现图片自动缩放了,经过研究smartimages.js,发现,他可以是实现图片的缩放,但只能实现图片比需要显示的空...
  • yin138
  • yin138
  • 2015年09月18日 10:42
  • 1966

使用epublib解析epub文件(章节内容、书籍菜单)

本文介绍了如何使用epublib来解析epub文件;意在说明如何解析文件,如何解析出书籍的菜单,以及如何解析出各个章节的内容;还顺便介绍了epublib中重要的类,便于后面的理解。...

神通广大的WiFi劫持工具:Mana

Mana是一款国外安全人员为测试而开发的Wifi劫持工具,可以监听计算机或其他移动设备的Wifi通信,并能够模仿该设备。一旦有人连接到 Mana,它会自动运行SSLstrip把加密通信https降级为...

【设计模式】神通广大之工厂三姐妹

对于工厂三姐妹,大家都耳熟能详了,我再来重复一遍吧!         三大工厂包括:简单工厂模式、工厂方法模式、抽象工厂模式。它们各有各的特征,各有各的优点,同属于创建型模式。下面看看它们都有什么拿...

神通广大的CSS3选择器

作者:大额_skylar http://www.cnblogs.com/skylar/p/css3-selector.html 每个前端工程师可能每天都会写一些css,其中选择器是很主要的...
  • aeaiesb
  • aeaiesb
  • 2016年02月23日 10:00
  • 261

原生JS+canvas粒子连线效果

  • 2017年12月14日 10:14
  • 3KB
  • 下载

datepicker 失效,jquery-ui.js 冲突,日历框跑出来了

在项目中增加了jquery file upload 的一些内容之后,

The Majesty Of Vue.js

  • 2017年12月13日 09:37
  • 8.89MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:神通广大的JS
举报原因:
原因补充:

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