天天看點

【腳本語言JavaScript】 Ringo JS-子產品 ringo/engine子產品 ringo/engine

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 方法和變量,并将它們與其他子產品隔離。

子產品 ringo/engine

提供對 Rhino JavaScript 引擎的通路。

Functions

  • addHostObject (javaClass)
  • addRepository (repo)
  • addShutdownHook (funcOrObject, sync)
  • asJavaObject (object)
  • asJavaString (object)
  • createSandbox (modulePath, globals, options)
  • getCurrentWorker (obj)
  • getErrors ()
  • getOptimizationLevel ()
  • getRepositories ()
  • getRhinoContext ()
  • getRhinoEngine ()
  • getRingoHome ()
  • getWorker ()
  • setOptimizationLevel (level)

Properties

  • version

addHostObject (javaClass)

将一個類定義為 Rhino 主機對象。

Parameters

JavaClass javaClass the class to define as host object

addRepository (repo)

将存儲庫添加到子產品搜尋路徑

Parameters

Repository repo a repository

addShutdownHook (funcOrObject, sync)

當目前的 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)

asJavaObject (object)

擷取将它作為 Java 對象公開為 JavaScript 的對象的包裝器。

Parameters

Object object an object

Returns

Object the object wrapped as native java object

asJavaString (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

getCurrentWorker (obj)

擷取與目前線程或給定範圍或函數對象關聯的worker執行個體。

Parameters

Object obj optional scope or function to get the worker from.

Returns

org.ringojs.engine.RingoWorker the current worker

getErrors ()

擷取包含目前worker中遇到的文法錯誤的清單

Returns

ScriptableList a list containing the errors encountered in the current worker

getOptimizationLevel ()

擷取目前線程和上下文的 Rhino 優化級别。優化級别是-1(解釋器模式)和 9(編譯模式,所有優化啟用)之間的整數。預設級别是 0。

Returns

Number level an integer between -1 and 9

getRepositories ()

擷取應用程式的子產品搜尋路徑作為存儲庫清單。

Returns

ScriptableList a list containing the module search path repositories

getRhinoContext ()

擷取與目前線程關聯的 org.mozilla.javascript.Context。

getRhinoEngine ()

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

Returns

org.ringojs.engine.RhinoEngine the current RhinoEngine instance

getRingoHome ()

擷取 RingoJS 安裝目錄。

Returns

Repository a Repository representing the Ringo installation directory

getWorker ()

擷取一個新的worker執行個體。

Returns

org.ringojs.engine.RingoWorker a new RingoWorker instance

setOptimizationLevel (level)

為目前線程和上下文設定 Rhino 優化級别。優化級别是 -1(解釋器模式)和 9(編譯模式,所有優化啟用)之間的整數。預設級别是 0。

Parameters

Number level an integer between -1 and 9

version

RingoJS 版本是一個類似數組的對象,主要和次要版本号作為第一個和第二個元素。

繼續閱讀