最流行的编程语言JavaScript能做什么?

wnkl7369 9年前
   <p>首先很遗憾的一点是,“PHP虽然是最好的语言”,但是它不是最流行的语言。</p>    <p><a href="https://simg.open-open.com/show/e8d7eb52800160c336d5fc7e6f0cf68c.jpg"><img alt="Sad" src="https://simg.open-open.com/show/e8d7eb52800160c336d5fc7e6f0cf68c.jpg"></a></p>    <p>对不起的还有刚刚在4月TIOBE编程语言排行榜上榜的各个语言:</p>    <p><a href="https://simg.open-open.com/show/70e37fe2f64d67651d9d16899ccb969b.png"><img alt="Tiobe四月" src="https://simg.open-open.com/show/70e37fe2f64d67651d9d16899ccb969b.png"></a></p>    <p>你们都很棒,但是你们都担当不了这个大任。</p>    <p>开始之前,我先说一下我常用的三个语言:Java、JavaScript、Python。</p>    <ul>     <li>Java,让我学到了很多架构层级的知识,这一点可以参考我之前写的架构相关文档。虽然我一点儿也不喜欢这个语言,但是它真的很棒。</li>     <li>Python,它真的足够简单,以至于我喜欢拿它学习各种理论知识,如推荐系统、贝叶斯定理、自然语言处理等等。</li>     <li>JavaScript,看下文。</li>    </ul>    <h2>数据可视化</h2>    <p>在过去我阅读的一些书籍里面,主要是以Processing作为可视化的语言——它起始于2001年,它最初是面向美术工作者和设计者创建的,后来变成了全面的设计和原型工具,可以用于创建复杂数据可视化领域。</p>    <p><a href="https://simg.open-open.com/show/e664c222c0333fea6abc2e4af4c9ccb6.png"><img alt="Processing" src="https://simg.open-open.com/show/e664c222c0333fea6abc2e4af4c9ccb6.png"></a></p>    <p>Processing被带入了到Web领域产生了Processing.js,还出现了D3.js。</p>    <p><a href="https://simg.open-open.com/show/f1fb79b69aa43439c38252f64b9577a1.jpg"><img alt="D3.js" src="https://simg.open-open.com/show/f1fb79b69aa43439c38252f64b9577a1.jpg"></a></p>    <p>当然还有Plotly、Leaflet、Sigma JS等等的工具。</p>    <h2>移动端应用: Cordova</h2>    <p>接着就是PhoneGap(今天的Cordova),将WebView带向了移动应用,也将JavaScript带向了移动应用。</p>    <p><a href="https://simg.open-open.com/show/f247986b32e11eaa5b76de9b8a19d086.png"><img alt="Cordova" src="https://simg.open-open.com/show/f247986b32e11eaa5b76de9b8a19d086.png"></a></p>    <p>使用Cordova,可以让我们<strong>一次开发多平台发布</strong>。我们也顺便提一下Ionic,作为混合应用的翘楚:</p>    <p><a href="https://simg.open-open.com/show/fc6dbd5e7776e044c55a99872e6d3edb.jpg"><img alt="Ionic" src="https://simg.open-open.com/show/fc6dbd5e7776e044c55a99872e6d3edb.jpg"></a></p>    <h2>移动端应用: React Native</h2>    <p>既然我们已经提到了Cordova,那么我们也应该说说<strong>React Native</strong>。也是一次开发多次运行:</p>    <p><a href="https://simg.open-open.com/show/0445a22656e8cf0f3407b46f81b2e6c6.png"><img alt="React Native" src="https://simg.open-open.com/show/0445a22656e8cf0f3407b46f81b2e6c6.png"></a></p>    <p>虽然它的坑还有很多,但是还是值得期待的。</p>    <h2>服务端:Node.js</h2>    <p>正是V8的性能将JavaScript带到了一个新的高度,于是Node.js诞生了——前端、后台都可以用JavaScript,一个JavaScript的全栈时代。</p>    <p><a href="https://simg.open-open.com/show/7faa798f382cc87a8655c3aa3f5f3841.png"><img alt="Nodejs" src="https://simg.open-open.com/show/7faa798f382cc87a8655c3aa3f5f3841.png"></a></p>    <p>Mongodb作为数据库,Express作为Server端MVC,他们可以提供一个RESTful服务,那么再加上MVVM框架的Angular.js,你就知道我在说什么!</p>    <p><a href="https://simg.open-open.com/show/8da4880dc3a696e7fdece29acde6875e.png"><img alt="mean.png" src="https://simg.open-open.com/show/8da4880dc3a696e7fdece29acde6875e.png"></a></p>    <h2>桌面应用: NW.js 和 Electron</h2>    <p>NW.js 是基于 Chromium 和 Node.js 运行的, 它们可以让我们用HTML和JavaScript来制作桌面应用。除了NW.js还有最近比较火的Electron,Atom编辑器的</p>    <p><a href="https://simg.open-open.com/show/5b10fce73176f52874286a41481158ab.png"><img alt="Electron" src="https://simg.open-open.com/show/5b10fce73176f52874286a41481158ab.png"></a></p>    <p>与Cordova的多平台构建多版本不同的是,Electron可以在一个平台上构建多个平台的应用。即我们可以在Mac OS上打包出Linux和Windows上的应用,而不需要在Windows再编译一次。</p>    <p>带向了桌面端,让桌面和Web保持了一致。最成功的案例就是估值达30亿美元的Slack:</p>    <p><a href="https://simg.open-open.com/show/fefa536d76c9fe8a83657f55d1e62384.jpg"><img alt="Slack" src="https://simg.open-open.com/show/fefa536d76c9fe8a83657f55d1e62384.jpg"></a></p>    <p>So,如果你使用桌面端的Slack就会很卡~~。</p>    <h2>全平台应用</h2>    <p>还记得我写的那篇《<a href="/misc/goto?guid=4959670379290739923">一份代码构建移动、桌面、Web全平台应用</a>》,在Eletcron上运行Ionic,就意味着无限的可能性。</p>    <p><a href="https://simg.open-open.com/show/491cb2d5231a20d72e4ba3b5701414d4.jpg"><img alt="一份代码构建移动、桌面、Web全平台应用" src="https://simg.open-open.com/show/491cb2d5231a20d72e4ba3b5701414d4.jpg"></a></p>    <p>能用Web开发的事情就用Web来完成就好了。</p>    <h2>游戏</h2>    <p>自从WebGL被带入浏览器的那一刻,就决定了这又是一个新的天地。</p>    <p><a href="https://simg.open-open.com/show/b2e819081303e9e7bc1fb08dc9ed1ee2.jpg"><img alt="HTML5 游戏" src="https://simg.open-open.com/show/b2e819081303e9e7bc1fb08dc9ed1ee2.jpg"></a></p>    <p>让我们忘记编译、启动更新、外挂等等的问题,并且我们还可以一次开发直接运行。</p>    <h2>VR</h2>    <p>如果你看到过之前的那篇《<a href="/misc/goto?guid=4959670379403562862">JavaScript在VR世界的应用</a>》,那么你就会对这个内容有更多的印象。</p>    <p>主要思想还是通过WebView来渲染VR视角:</p>    <p><a href="https://simg.open-open.com/show/702bb4cacd384dc3d38c83972dd07c21.jpg"><img alt="Three.js Oculus" src="https://simg.open-open.com/show/702bb4cacd384dc3d38c83972dd07c21.jpg"></a></p>    <p>并且各浏览器产商各在推进WebVR 为虚拟现实设备显示提供支持。</p>    <h2>AR</h2>    <p>虽然大部分的AR应用可能离我们有点远,但是离我们最近的就是Leap Motion——它可以利用手掌和手指动作来进行输入,但无需手部接触或者触摸。</p>    <p><a href="https://simg.open-open.com/show/f3ff4779aa3a25989bf3e2b9d515dca7.jpg"><img alt="Leap Motion" src="https://simg.open-open.com/show/f3ff4779aa3a25989bf3e2b9d515dca7.jpg"></a></p>    <p>同理于VR,读取传感器的数据,再将其手势交由浏览器端来处理。详细可以参考我之前写的:《<a href="/misc/goto?guid=4959670379508734723">Leap Motion JavaScript开发 手势控制基础篇</a>》</p>    <h2>硬件</h2>    <p>早先我看到了Arduino在编译的时候,以DSL的方式封装了API。而NodeMCU则内建了Lua语言的支持,可以让开始者使用Lua来开始。 而Tessel 原生就提供了JavaScript运行环境,我们写需要写好JavaScript就可以在上面运行。</p>    <p><a href="https://simg.open-open.com/show/412b980f87dd3e8635f076ce2f256525.jpg"><img alt="Tessel 2" src="https://simg.open-open.com/show/412b980f87dd3e8635f076ce2f256525.jpg"></a></p>    <p>Tessel 2属于配置比较高的硬件,而低配的呢?</p>    <p>三星设计了JerryScript引擎,它能够运行在小于64KB内存上,且全部代码能够存储在不足200KB的只读存储(ROM)上。</p>    <p><a href="https://simg.open-open.com/show/32207fd3e08b827c2d971cfe166498b9.png"><img alt="IoT.js" src="https://simg.open-open.com/show/32207fd3e08b827c2d971cfe166498b9.png"></a></p>    <p>想想就觉得未来是美好的。</p>    <h2>物联网</h2>    <p>等等,上面三星推出的是IoT.js,这就意味着它已经可以在物联网领域中应用了,为什么还会有这里的应用呢?我只是想稍微提一下这个:</p>    <p><a href="https://simg.open-open.com/show/d2a1b207f477b78520db368520d93718.jpg"><img alt="IoT Node.js" src="https://simg.open-open.com/show/d2a1b207f477b78520db368520d93718.jpg"></a></p>    <p>上面说到的只是Node.js在Web中的应用,而物联网和Web的很大不同之处在于,物联网可以使用各种不同的协议,而这些协议都需要Node.js对其的支持。</p>    <p>因此,如果我们需要开始Web版、移动应用,那么我们自然更需要其作为后台。</p>    <h2>操作系统界面</h2>    <p>虽然更好的机器带来了更好的性能,但是显然人们对于原生应用的需求并没有那么强烈。Firefox OS已经在移动操作系统败下阵来,但是这个操作被带到了物联网领域:</p>    <p><a href="https://simg.open-open.com/show/d07b636dd08ebabc78b5d4593d3ddff3.jpg"><img alt="Firefox OS" src="https://simg.open-open.com/show/d07b636dd08ebabc78b5d4593d3ddff3.jpg"></a></p>    <p>这就意味着,我们可以使用JavaScript来开发操作系统的界面了。</p>    <p>你觉得JavaScript还能做什么?</p>    <p>来自: <a href="/misc/goto?guid=4959670379642077097" rel="nofollow">http://blog.csdn.net/phodal/article/details/51111941</a></p>