1. 程式人生 > >【指令碼語言JavaScript】 Ringo JS-模組 ringo/engine

【指令碼語言JavaScript】 Ringo JS-模組 ringo/engine

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 方法和變數,並將它們與其他模組隔離。

提供對 Rhino JavaScript 引擎的訪問。

Functions

Properties

將一個類定義為 Rhino 主機物件。

Parameters

JavaClass javaClass

the class to define as host object

將儲存庫新增到模組搜尋路徑

Parameters

Repository repo

a repository

噹噹前的 RingoJS 例項終止時,註冊一個要呼叫的回撥函式。

Parameters

Function|Object funcOrObject

Either a JavaScript function or a JavaScript object containing properties called module and name specifying a function exported by a RingoJS module.

Boolean sync

(optional) whether to invoke the callback synchronously (on the main shutdown thread) or asynchronously (on the worker's event loop thread)

獲取將它作為 Java 物件公開為 JavaScript 的物件的包裝器。

Parameters

Object object

an object

Returns

Object

the object wrapped as native java object

獲取將 java.lang.String 方法公開給 JavaScript 的字串的包裝器這對於以無 java.lang.String 的形式訪問字串非常有用,無需建立新例項。

Parameters

Object object

an object

Returns

Object

the object converted to a string and wrapped as native java object

createSandbox (modulePath, globals, options)

使用與此相同的安裝目錄建立一個Sandbox指令碼引擎,以及給定的模組路徑,全域性屬性,類shutter和密封

Parameters

Array modulePath

the comma separated module search path

Object globals

a map of predefined global properties (may be undefined)

Object options

an options object (may be undefined). The following options are supported:

  • systemModules array of system module directories to add to the module search path (may be relative to the ringo install dir)
  • classShutter a Rhino class shutter, may be null
  • sealed if the global object should be sealed, defaults to false

Returns

RhinoEngine

a sandboxed RhinoEngine instance

Throws

{FileNotFoundException} if any part of the module paths does not exist

獲取與當前執行緒或給定範圍或函式物件關聯的worker例項。

Parameters

Object obj

optional scope or function to get the worker from.

Returns

org.ringojs.engine.RingoWorker

the current worker

獲取包含當前worker中遇到的語法錯誤的列表

Returns

ScriptableList

a list containing the errors encountered in the current worker

獲取當前執行緒和上下文的 Rhino 優化級別。優化級別是-1(直譯器模式)和 9(編譯模式,所有優化啟用)之間的整數。預設級別是 0。

Returns

Number

level an integer between -1 and 9

獲取應用程式的模組搜尋路徑作為儲存庫列表。

Returns

ScriptableList

a list containing the module search path repositories

獲取與當前執行緒關聯的 org.mozilla.javascript.Context。

獲取與此應用程式關聯的 org.ringojs.engine.RhinoEngine。

Returns

org.ringojs.engine.RhinoEngine

the current RhinoEngine instance

獲取 RingoJS 安裝目錄。

Returns

Repository

a Repository representing the Ringo installation directory

獲取一個新的worker例項。

Returns

org.ringojs.engine.RingoWorker

a new RingoWorker instance

為當前執行緒和上下文設定 Rhino 優化級別。優化級別是 -1(直譯器模式)和 9(編譯模式,所有優化啟用)之間的整數。預設級別是 0。

Parameters

Number level

an integer between -1 and 9

RingoJS 版本是一個類似陣列的物件,主要和次要版本號作為第一個和第二個元素。