【指令碼語言】RINGO JS簡介
Ringo 101
為了讓使用者更高效地編寫和執行 Javascript 指令碼,我們在 Total Control 指令碼環境中集成了 RingoJS 框架,使用者可在指令碼中直接引入並使用 RingoJS 提供的大量豐富的庫。
例如:如果您想在指令碼中使用 RingoJS 模組 fs 中的方法,您只需引入模組 require('fs') 即可。
1.引入模組 'fs'
var fs = require('fs');
2.根據需要,直接使用 fs 模組的函式,例如,使用 fs 的 exists 函式。
fs.exists('test.txt');
Ringo 是一個 JavaScript 平臺
ECMA JavaScript 規範將該語言描述為面向物件的程式語言,用於在主機環境中執行計算和處理計算物件。每個用 JavaScript 編寫的應用程式都需要一個主機環境,它提供特定於環境的物件和 API 來執行 I / O。 Ringo 為 JavaScript 提供了這樣一個環境,並附帶一組模組以使應用程式開發更容易。由於其作為通用程式語言的特性,JavaScript 可以用來解決各種各樣的問題,而 Ringo 可以幫助您這麼做。利用 Ringo,編寫命令列工具,複雜的 Web 應用程式甚至基於 Java UI 技術的 GUI 應用程式都很容易。
指令碼語言如 JavaScript 需要一個引擎來解釋和執行程式。 Ringo 沒有自己的引擎。相反,它使用 Mozilla Rhino,一種 Java 中的 JavaScript 實現。犀牛的最初發展始於 Netscape 時代,並一直持續到現在。基本思想是將 JavaScript 程式編譯為 Java 位元組碼,Java 位元組碼可以由 Java 虛擬機器(JVM)執行。犀牛還提供了對 Java 標準類庫和其他每個 Java 類的輕鬆訪問。這使得將現有的 Java 庫整合到新的 JavaScript 應用程式變得很容易。例如:Ringo 不是編寫自己的 I / O 系統,而是使用現有的 Java I / O 類,並將它們封裝起來以提供從 JavaScript 更容易的訪問。
Ringo 在伺服器或專用機器上執行 JavaScript,而不是在 Web 瀏覽器上下文中執行。如果您已經從基於 HTML 的應用程式中瞭解 JavaScript,則這是主要區別。沒有什麼像一個視窗物件,你沒有一個 DOM 來操縱 HTML 物件。儘管如此,很多事情會像你從瀏覽器中知道的那樣。您可以使用 console.log() 除錯到控制檯,但也有專用的日誌記錄模組可用於更復雜的日誌記錄。
Ringo 最大的優勢之一就是模組系統。 Ringo 並沒有自己構建程式碼,而是擁有一個易於使用的模組系統。它基於 CommonJS 模組,這是用於保持程式碼可互換的伺服器端 JavaScript 環境的規範。如果您瞭解 Node.js 的模組,您還知道如何在 Ringo 中編寫模組。一個模組封裝了 JavaScript 方法和變數,並將它們與其他模組隔離。
多執行緒 JavaScript
典型的命令列應用程式和 Web 應用程式不需要 Ringo 的多執行緒模型的任何特殊知識。使用 Ringo 並不意味著明確的多執行緒,初學者不需要編寫並行的 JavaScript 程式碼。但是,如果某個程式需要特殊的並行執行,或者在後臺執行耗時的計算任務,開發人員可以選擇使用多執行緒。
Ringo 不是在單執行緒事件迴圈中執行每個程式,而是使用 JVM 執行緒並行執行 JavaScript。為了彼此隔離執行緒,每個正在執行的程式或模組都被工作者包裝。工作人員是程式的執行上下文,具有自己的一組模組和資料。這將工作人員彼此隔離,並防止典型的多執行緒問題,如併發修改共享資料。 Ringo 的工作人員受 W3C Web Worker API 的影響,並使用非同步訊息傳遞進行工作間通訊。像 W3C Web Workers 一樣,每個 Ringo 工作者都有自己的事件迴圈,保證在單個執行緒中執行,這意味著只有在沒有其他程式碼執行時才會處理預定功能和外部事件。雖然 Ringo 工作人員都有自己的一套模組可供使用,但他們的確使用標準的建構函式和原型來共享全域性物件。這是安全的,因為 Ringo 中的全域性物件實際上扮演只讀角色。
誰在支援 Ringo?
Ringo 由許多貢獻者開發,由 HannesWallnöfer 於 2010 年左右建立。目前,它由團隊頁面上的人員維護。 Ringo 的主要使用者之一是奧地利公共廣播公司 ORF。