JavaScript開發資源大全

jopen 11年前發布 | 100K 次閱讀 JavaScript開發 JavaScript

        JavaScript 起源于 Netscape 公司的 LiveScript 語言,這是一種基于對象和事件驅動的客戶端腳本語言,最初的設計是為了檢驗 HTML 表單輸入的正確性。

        早些年,JavaScript 由于其復雜的文檔對象模型(DOM)、糟糕的實現和調試工具、不一致的瀏覽器實現而不受開發者的待見。而隨著技術的發展, JavaScript 變得越來越的強大、完善,比如, Ajax 技術可以創建更加迷人的 Web 應用,Node.js 將 JavaScript 的應用范圍擴展到了服務器端,各種層出不窮的框架使得 JavaScript 的開發更加簡捷,尤其是近幾年 HTML5 的出現,將 JavaScript 提升到了前所未有的高度。

        如今 JavaScript 已經變成了 Web 開發必備的語言,甚至開始逐步向移動領域滲透,由于 JavaScript 的跨平臺特性,使得它在移動互聯網時代有更大的作為。

        凡是可以用 JavaScript 來寫的應用,最終都會用 JavaScript 來寫。——Atwood 定律(Jeff Atwood 在 2007 年提出)

        不會 JavaScript 怎么辦?

        如今 JavaScript 已經成為了 Web 開發的“標配”語言,不管你喜不喜歡,在 Web 開發中,必定要涉及到 JavaScript。JavaScript 可以實現真正的“一次編寫,到處運行”,并可以控制所有常用的瀏覽器,因此,JavaScript 還被稱作“Web 的虛擬機”以及“Web 上的匯編語言”

        盡管如此,但是如果你還沒開始學習 JavaScript,這也不影響你編寫 Web 應用。你完全可以用你喜歡的語言(Java、.NET、C/C++、Python、Ruby……)來編寫應用程序,然后將它們編譯為 JavaScript 語言,然后再運行于瀏覽器上。

        如果你對 JavaScript 的語法不滿意,你也可以使用一些 JavaScript 的增強版語言。比如,如果你更喜歡經典的面向對象方式,并想要一些語法糖,那么你可以試試 CoffeeScript;如果你希望有一個更嚴格的類型系統,那么你可能會發現 Dart 或 TypeScript 更有趣一些;如果你更喜歡函數式編程,那么 ClojureScript 或 Roy 可以幫助你。

        將你擅長的語言編譯為 JavaScript

        將 Java 代碼編譯為 JavaScript

        盡管 JavaScript 名字中包含“Java”,實際上 JavaScript 和 Java 沒有任何關系,只是由于當時 Java 火得一塌糊涂,為了借助 Java 的名氣來推廣,就起名為 JavaScript 了。

        各種強大的工具的出現,使得 JavaScript 代碼和 Java 代碼之間有了一定的聯系,就是可以將 Java 代碼編譯為 JavaScript 代碼,以便在瀏覽器中運行。當然,除了 Java 外,其他基于 JVM 的語言都可以如此做。

        可以實現此類操作的工具如下。

  • BicaVM:一個使用 JavaScript 實現的 JVM,可以運行 60% 的 Java 字節碼
  • Ceylon:一個可編譯為 JavaScript 的、模塊化的、靜態類型 JVM 語言[*]Doppio:一個使用 Coffeescript 實現的 JVM,使得 Java 程序可以運行在任何 JavaScript 引擎上[*]GrooScript:一個可以將 Groovy 代碼轉為 JavaScript 代碼的小框架
  • j2js:可以將 Java 字節碼轉換為 JavaScript 代碼
  • Java2Script:Eclipse 中的 Java to JavaScript 編譯插件,并實現了一個 JavaScript 版的 Eclipse SWT
  • Kotlin:可以編譯為 JVM 字節碼和 JavaScript 的靜態類型編程語言
  • Processing:一個基于 Java 的可視化語言,可以編譯為 JavaScript
  • STJS:Strongly-Typed JavaScript(強類型的 JavaScript),一個可以將 Java 源碼轉換為 JavaScript 代碼的 Maven 插件
  • </ul>

            將C/C++代碼編譯為 JavaScript

            C/C++如今也可以用來編寫 Web 應用程序,同樣可以將它們編譯為 JavaScript。一些工具如下。

    • Emscripten:Mozilla 開發的 LLVM 后端,可以將任何通過 LLVM 前端(比如C/C++ Clang)生成的 LLVMIR 中間碼編譯成 JavaScript 代碼。
    • mala:可以將 vala 代碼(vala 代碼在編譯時,首先會編譯為C代碼)編譯為 JavaScript
    • Mandreel:可以將 C++ 和 Objective-C 代碼編譯為高度優化的 JavaScript 源碼
    • Clue:一個C語言編譯器,可以將C語言代碼編譯為高質量的 Lua、Javascript 或 Perl 代碼。
    • </ul>

              由于 Emscripten 可以將 LLVM 二進制代碼編譯成 JavaScript,LLVM 是一種很流行的中間編譯格式,幾乎所有語言都有 LLVM 編譯器,因此 Emscripten 也可以作為大部分語言轉換為 JavaScript 的通用工具。

              將 Python 代碼編譯為 JavaScript

              可以使用如下工具將 Python 代碼編譯為 JavaScript 代碼。

      • Brython:用于替換網頁上的 JavaScript 代碼,允許使用 Python 來編寫腳本,并直接在網頁上執行
      • PYXC-PJ:可以將 Python 轉換為 JavaScript,并會產生一個行/列號映射文件
      • Pyjaco:可以將 Python 轉換為 JavaScript
      • Pyjamas:Python to JS 轉換器
      • Pyjs:Python to JS 轉換器
      • PyCow:可以將 Python 代碼轉換為 MooToolsJS 代碼
      • PyvaScript:一個類似于 Python 語法并擁有 JavaScript 特性的編程語言
      • RapydScript:增強版的 PyvaScript
      • Skulpt:客戶端的 Python
      • </ul>

                將 Ruby 代碼編譯為 JavaScript

                在 Ruby 領域,有一個使用 JavaScript 實現的 Ruby 標準庫—— RubyJS,它實現了 Ruby 中的所有方法,如 Array、Numbers、Time 等。Ruby 之父松本行弘稱“如果我必須編寫 JavaScript 代碼,我會使用 RubyJS”。

                另外,你也可以使用如下工具將 Ruby 代碼編譯為 JavaScript 代碼。

        • 8ball:一個可以將 Ruby(或 Ruby 子集)的源碼轉換為 JavaScript 源碼的編譯器
        • ColdRuby:一個 Ruby 1.9 MRI 字節碼編譯器和 JS 運行時,包括一個 C++ 運行時以及用于本地執行的 V8 引擎
        • HotRuby:可以在瀏覽器內部或 Flash 平臺上運行由 YARV 編譯的 Ruby 操作碼
        • Opal: 一個 Ruby to JavaScript 編譯器,可用于任何 JS 環境
        • rb2js:一個 Ruby to JavaScript 編譯器
        • Red:允許你以 Ruby 的方式編寫代碼,然后以 JavaScript 的方式運行代碼
        • </ul>

                  將 .NET 代碼編譯為 JavaScript

                  你可以使用如下工具將C#、F#以及其他 .NET 代碼編譯為 JavaScript 代碼。

          • Apps in Motion:允許使用 C# 來構建可以運行在任何設備上的 Web 應用程序
          • Blade:一個 Visual Studio 擴展,可以將 C# 代碼轉換為 JavaScript
          • FunScript:可通過 TypeScript 的類型提供器將F#代碼轉換為 JavaScript 或 JQuery 代碼
          • jsc:可將 .NET 程序重新編譯為 JavaScript、ActionScript、PHP 或 Java 程序
          • JSIL:可將 MSIL(.NET 字節碼)轉換為 JavaScript
          • NemerleWeb:可將 Nemerle 語言(微軟的多范型語言)編譯為 JavaScript
          • Pit:可將F#代碼編譯為 Javascript
          • Prefix(開發中):可將 C# 代碼編譯為 Javascript
          • Saltarelle:可將 C# 代碼編譯為 Javascript
          • SharpKit(商業工具):可將 C# 代碼編譯為 Javascript
          • Script#: 可將 C# 代碼編譯為 Javascript
          • WebSharper:可將F#代碼編譯為 Javascript.
          • </ul>

                    將 Scala 代碼編譯為 JavaScript

                    你可以使用如下工具將 Scala 代碼編譯為 JavaScript 代碼。

            • Scala.js:一款將 Scala 編譯為 JavaScript 的編譯器,支持全部 Scala 語言特性,允許開發者用 Scala 開發從前端到后端的 Web 應用
            • js-scala:在 Scala 中將 JavaScript 作為嵌入式的 DSL 語言
            • Scala+GWT:通過 GWT 工具鏈將 Scala 代碼編譯為 JavaScript 語言
            • </ul>

                      將 Flash 轉換為 JavaScript

                      HTML5(HTML/JavaScript/CSS3 技術組合)的最大對手就是 Flash,盡管目前 Flash 的市場份額還高居 70%,但也不可否認,未來將是 HTML5 的天下。

                      就連 Flash 的開發商 Adobe 也開始擁抱 HTML5,并發布了 Toolkit for CreateJS 工具,方便 Web 開發者將 Flash 轉換為 HTML5 格式。

                      去年,Google 曾發布了一套基于網頁的的工具——Swiffy,在線即可將 SWF 格式的 Flash 文件轉化為 HTML5 格式。

                      除了轉換外,Mozilla 還推出了一個新的解決方案——Shumway,這是一個“基于 JavaScript 的 Flash 虛擬機和運行時”,目的是在瀏覽器中構建一個可靠有效的 SWF(Flash 文件格式)渲染器,無需插件直接在瀏覽器中運行 Flash。

                      由此可見,這些工具將進一步加速 HTML5 取代 Flash 的步伐。

                      其他編譯工具

              • Go2js:可以將 Go 代碼行到行地編譯為 JavaScript 代碼
              • Perlito:可以將 Perl 5/6 代碼編譯為 JavaScript、Ruby、SBCL 和 Go 語言代碼。
              • </ul>

                        編譯為 JavaScript 后的問題

                        調試問題

                        由于是交叉編譯,導致輸出的代碼很難被跟蹤調試。

                        一些工具在編譯的過程中會生成映射文件(將編譯后的 JavaScript 代碼映射到源語言),可以通過這些文件來進行調試。

                        性能問題

                        由于 JavaScript 在瀏覽器中運行問題,本地代碼編譯為 JavaScript 后的執行速度可能會下降。

                        對于此類問題,Mozilla 給出了一個解決方案—— asm.js(見《 asm.js:JavaScript 的“匯編語言”》)。asm.js 是一個 JavaScript 的一個嚴格的子集,提供了一個類似于C/C++虛擬機的抽象實現,包括一個可有效負載和存儲的大型二進制堆、整型和浮點運算、高階函數定義、函數指針等,可以被用來作為一個底層的、高效的編譯器目標語言。

                        此外,還可以使用 Mozilla 開發的 JavaScript 引擎 OdinMonkey 來獲得更快的執行速度。開發者可以將編寫的代碼編譯為 JavaScript,然后手動編寫為 asm.js 代碼,當瀏覽器執行該程序時,OdinMonkey 引擎會讓程序的執行速度更接近于本地應用。Mozilla 未來可能會開發一些工具(類似于 LLJS)來自動生成 asm.js 代碼。

                        隨著技術的發展,未來 JavaScript 也許會跑得和 native C 一樣快。

                        一些演示

                        2012 年,Mozilla 曾推出一款 Web 版的第一人稱射擊游戲演示 BananaBread,今年 5 月份,Mozilla 宣布與 Epic Games 合作將虛幻引擎3(C/C++實現)移植到瀏覽器上,并發布了基于虛幻引擎 3 的 HTML5 演示游戲 Epic Citadel,這些游戲都是基于 WebGL、 Emscripten 和高性能的 JavaScript 子集 asm.js 實現,重新定義了 3D 游戲在瀏覽器中運行的性能,展示了高端游戲也可以很容易地移植到 JavaScript 和 WebGL 平臺,同時不失性能和畫面效果。

                JavaScript開發資源大全

                        Mozilla 的另一款支持多人在線的 HTML5 游戲—— BrowserQuest

                        隨著 HTML5 新特性 Full Screen API、Gamepad API 和 Mouse Lock API 的完善,瀏覽器或將成為未來游戲的新戰場。

                        增強版的 JavaScript

                        JavaScript 大量的擴展,在很大程度上彌補了 JavaScript 某些方面特性的不足。比如你可以使用如下這些工具或擴展來讓 JavaScript 更強大。

                        安全性增強

                • ADsafe:提供了客戶端靜態驗證功能和相關的 API,增強第三方腳本的安全性
                • Caja:可以將傳統的 HTML 和 JavaScript 轉換為安全限制的 JavaScpit 格式
                • Dojo Secure:用于構建安全混搭應用的框架
                • FBJS:非死book 的 JavaScript 工具,用于編寫 非死book 小插件
                • Jacaranda:支持對象的靜態驗證器
                • Gatekeeper:一個 JavaScript 密碼保護腳本
                • Microsoft Web Sandbox:通過隔離來保證安全性
                • </ul>

                          靜態類型特性

                  • JSX:一個更快、更安全、更易用的 JavaScript 替代品
                  • Elm:類型安全的函數式語言,可編譯為 HTML、CSS 和 JavaScript.
                  • Lambdascript:一個強類型的純函數式原型語言
                  • MileScript:一個類似于 C# 和 Java 的強類型語言,可編譯為 JS
                  • SafeJS:為 JavaScript 增加了語法糖
                  • Mascara:為 JavaScript 增加了強大的功能,比如類、命名空間和類型檢查等
                  • Roy:函數式語言,與 JavaScript 語義保持接近,擁有類型推斷、結構類型、sum 類型、模式匹配等
                  • </ul>

                            JavaScript 的衍生品

                            JavaScript 如今在 Web 開發界的地位無法撼動,但是仍不斷有一些新的語言出現,希望能夠通過提供更強大、更完善、更優雅的特性來代替 JavaScript。

                    • CoffeeScript: CoffeeScript 是一個使用純 Ruby 編寫的編程語言,只使用了 JavaScript 的“精髓”,拋棄了原來 JavaScript 晦澀、容易出問題的部分,如全局變量聲明、with 等。并提供了很多語法糖,讓代碼更優雅可讀。
                    • Dart:Google 推出的一種基于類的可選類型化編程語言,可以在原生虛擬機中直接運行,也可以用編譯器將 Dart 代碼翻譯成 JavaScript 代碼。
                    • TypeScript:JavaScript 的一個超集,添加了可選的靜態類型和基于類的面向對象編程。
                    • ClojureScript:由 Clojure 的創建者 Rich Hickey 推出,目標是“做 Javascript 所能做到的事情”,代碼可編譯為 Javascript。
                    • IcedCoffeeScript: Coffeescript 語言的擴展集,添加了 2 個關鍵字 await 和 defer,為瀏覽器和服務器兩者提供了強大的異步控制功能。
                    • LiveScriptCoco 的一個分支,是 CoffeeScript 的間接子集,并在面向對象和命令式編程方面進行了諸多改進,代碼可以編譯成 JavaScript。
                    • Kaffeine:JavaScript 語法的擴展,與 JavaScript 非常類似,代碼可以直接編譯成 JavaScript。
                    • </ul>

                              更多工具可參見http://altjs.org/

                              最后

                              幾乎所有主流的語言都可以編譯為 JavaScript,進而能夠在所有平臺上的瀏覽器中執行,這也體現了 JavaScript 的強大性和在 Web 開發中的重要性。此外,互聯網中還存在大量的工具,使得這些語言可以與 JavaScript 進行互操作,我們將在以后的文章中詳細介紹。

                              以上這些工具中,大部分都是開源項目,如果感興趣,你也可以通過源碼來了解這些語言之間進行轉換的相關原理和技術。

                      來自: www.iteye.com
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!