JavaScript很牛?

jonh_felix 发布于 2015/11/06 14:13
阅读 1K+
收藏 6

几年前,我从来没有想过现在的JavaScript竟然会变得几乎无处不在。下面是几个要关注JavaScript的原因。

首先,我认为JavaScript能够得到普及的主要原因之一是,JavaScript非常易于接近。学习JavaScript,对于初学者而言,相对比较容易,对于高级用户而言,又非常强大,可以用它来构建复杂又可靠的系统。

其次,之所以要关注JavaScript是因为现今的JavaScript已经无处不在。

你可以使用JavaScript在几乎所有平台上开发:客户端应用程序,服务器端业务逻辑,嵌入式芯片/物联网设备,管理构建脚本和依赖关系,等等。

不过,这并不意味着你可以在任意情况下使用完全相同的代码,但你可以使用相同的技能——JavaScript开发——提供跨越多个范式的解决方案。

客户端

JavaScript可被用于支持客户端应用程序/用户界面,以及众多平台和设备的用户交互。

web

当然,JavaScript支持web,这是肯定的。 JavaScript是所有web浏览器基本的脚本语言。

移动

JavaScript也可用于支持安装到本地设备上的移动应用程序。

  • Apache CordovnPhoneGap——你可以使用PhoneGap或Cordovn建立本地安装的web技术app。 PhoneGap是Adobe的Cordovn品牌分支,但是从开发者的角度来看,它们基本上是相同的。运行在移动设备上的应用程序会带有一个web视图,用构建动态web应用程序相同的方式建立用户界面。用户界面虽然是用HTML以及CSS样式实现的,但是所有的交互都是用JavaScript创建的。
  • DeviceOne ——得到JavaScript支持的web应用程序不仅可以内置web视图。DeviceOne框架是开发人员使用JavaScript直接编写他们的本地应用程序,并生成一个可以在移动设备上运行的本地应用程序。在运行时,逻辑被解释为JavaScript,但是所有(所有UI元素)与用户交互的东西,100%是本地的,这就提供了一个非常高品质的用户体验,而且现在还可用于iOS和Android、windows的应用程序。
  • Unity 3D——使用Unity 3D引擎,哪怕全部由JavaScript支持,你也可以开发出丰富多彩又身临其境的移动3D模拟或游戏体验。

桌面

桌面应用程序也没有被JavaScript排除在外。大多数桌面解决方案陷入了类似于Apache Cordovn的分类中,最终导致的结果是,web视图拥有的API层次较低,其内容开发基于web技术。

  • Electron——来自于GitHub的Node.js+Chromium桌面应用程序容器
  • app.js——Node+Chromium桌面应用程序容器
  • nw.js——另一个Node+Chromium桌面应用程序容器的框架
  • CEF——The Chromium Embedded Framework——嵌入Chrome浏览器内置于桌面应用程序的框架。

…等等。对了,我记得,微软对于如何纯粹地用HTML / JS构建Windows应用程序,已经有了一个解决方案,而且还有更多的解决方案,但现在我一下子记不起来了。

事实上,一些我最喜欢的桌面工具,如SlackAtom和 VS Code实际上就是在web技术和HTML / JS的基础上实现的。

服务器端

最明显的是Node.js——封装了Chrome的V8 JavaScript引擎的JavaScript运行时——在服务器端开发和企业上已经取得了巨大的进步。 Node.js,受到express.js和loopback.io等框架的支持,使得用JavaScript开发服务器端和复杂的企业应用程序中变得可能。

物联网

你可以完全使用JavaScript来开发可运行在Arduino、树莓派或其它小平板上的无头app,你可以使用JavaScript管理基础设施和物联网传感器信息流,你也可以使用JavaScript为嵌入式系统编写芯片程序,可以用它控制机器人,你甚至还可以使用JavaScript支持媒体中心连接电视体验。

就像我说的……JavaScript无处不在。

生态系统

你不仅可以到处构建和运行JavaScript应用程序。 JavaScript还有一个庞大而繁荣的开发者生态系统。

JavaScript是GitHub上最活跃的语言,它不仅是所有代码仓库中最活跃的,也是所有push/commit中最活跃的。

但是,种种这一切这并不意味着JavaScript就是适用于一切的最好语言。也不意味着你取出一段源代码就能照你想的那样运行在每一种设备和上下文中。

但是,你可以使用JavaScript技术,去开发几乎任意类型的设备/下上文。你可以编写一次,就可以到处运行,用DeviceOne团队的话就是: write once, run anyway。

加载中
0
piyoma
piyoma
js是人心所向 大势所趋
piyoma
piyoma
再过几年不会ecmascript 的, 就不能称为一个高级程序员
jonh_felix
jonh_felix
yeah!
0
xuqingkai
xuqingkai

特性所决定:嵌入一个解释引擎就搞定,无论是从app里,浏览器,应用软件,服务器里都可以

0
娱乐你我
娱乐你我
嵌入式芯片/物联网设备 这个倒是感觉用lua更多。
0
克己克己
克己克己

原型,闭包,动态语言,高阶函数特性

我认为js的上手难度比传统OO语言 java c# 这些难

chouxiaoya
chouxiaoya
应该说上手容易深入难
eechen
eechen
有比我大PHP更容易上手的吗?过程式、面向对象、闭包这些都支持,PHP就是简单就是快,就是风骚就是拽!
0
eechen
eechen
PHP更牛!不服来辩。
网站开发: Nginx + PHP-FPM + MySQL
即时通讯: Nginx + PHP Swoole + Redis/MySQL
桌面开发: PHP(CLI HTTP Server + SQLite + Beast代码加密) + 客户端浏览器
移动开发: PHP(CLI HTTP Server + SQLite + Beast代码加密) + WebView
物联网: PHP(CLI HTTP Server + SQLite) + 树莓派/Android
c
c132124
我就不服。web实现即时通讯,Node.js上的socket.io超强的兼容性,支持包括IE6以上的所有浏览器。你说那个Swoole不仅是国产的,而且浏览器方面的兼容性调来调去是个问题不说,还得用websocket现做构架。一小时能干成的事结果你非要干三天。
0
开源中国最大五毛
开源中国最大五毛

没有html/css,js基本也废了一半。

eechen
eechen
浏览器是JS的主场,把JS+PHP结合起来才是王道。
0
ziluopao
ziluopao
还好,我刚进入javascript的大门,在如今js框架如雨后春笋般的涌出来情况下,能沉下心把原生的学好是真不容易啊,人们太急功近利喽!
0
yak
yak
 console.log(Object instanceof Function);  
 console.log(Function instanceof Object);  
从这两行代码就可以看出 JavaScript很牛
p
phper08
你中有我,我中有你
返回顶部
顶部