国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JSREPL README.md 中文翻譯

Donne / 3004人閱讀

摘要:方法回調(diào)函數(shù),該回調(diào)函數(shù)會在命令準備好執(zhí)行時返回,在命令未完整時返回。方法回調(diào)函數(shù),事件被觸發(fā)時將會被調(diào)用。超時如果在實例化時選擇了,當正在運行的程序在限定時間內(nèi)未調(diào)用指定的回調(diào)函數(shù)見實例化,那么將會觸發(fā)此事件。

一個兼容多種語言的瀏覽器 REPL 沙盒。

當前支持的語言

Javascript 系列

Javascript

CoffeeScript

Kaffeine

Move

Traceur (JavaScript.next)

Esoteric

Bloop

Brainfuck

LOLCODE

Unlambda

Emoticon

Classic

Quick Basic

Forth

Serious

Scheme

Lua

Python

Ruby (beta)

支持的瀏覽器

IE 9-10

Chrome 10+

Safari 5

Firefox 3.6+

Opera 11+

iOS 5 Safari

開始 建立 JSREPL 建立依賴
node.js
npm

curl http://npmjs.org/install.sh | sh

CoffeeScript

使用 npm 安裝:sudo npm install -g coffee-script

獲取源碼
克隆倉庫 (cloning the repository)

git clone git://github.com/replit/jsrepl.git

源碼依賴

git submodule update --init --recursive

進行 Bake 操作

cake bake

引入 JSREPL
html
實例化 JSREPL
javascriptvar jsrepl = new JSREPL({  
  input: inputCallback,  
  output: outputCallback,  
  result: resultCallback,  
  error: errorCallback,  
  progress: progressCallback,  
  timeout: {  
    time: 30000,  
    callback: timeoutCallback  
  }
});

inputCallback:一個回調(diào)函數(shù),當語言解釋器在請求用戶輸入時會被調(diào)用。

outputCallback:一個可選的回調(diào)函數(shù),當引擎需要將輸出發(fā)送到標準輸出時會被調(diào)用。

resultCallback:一個可選的回調(diào)函數(shù), 當解釋器成功地執(zhí)行(evaluated)一條程序并產(chǎn)生結(jié)果時會被調(diào)用。

errorCallback:一個可選的函數(shù),如果一條程序在被執(zhí)行(evaluated)的過程中產(chǎn)生錯誤時會被調(diào)用。

progress:一個可選的函數(shù),當加載一種語言時會被不斷調(diào)用,用來顯示進度條百分值。

timeout:為程序運行設(shè)置一個超時值。

time:等待時間(毫秒)。

callback:超時后會調(diào)用的回調(diào)函數(shù)。這個回調(diào)必須處理垃圾回收系統(tǒng)(比如說調(diào)用 jsrepl.loadLanguage 之類的)。必須返回 true 以停止超時的重復(fù)觸發(fā)。

API JSREPL::loadLanguage

它會加載一個語言解釋器,并帶有三個參數(shù):
* 字符串 lang_name:需要加載的語言名。
* 方法 callback:回調(diào)函數(shù),當語言成功加載后會被調(diào)用。
* 布爾值 worker_friendly (可選):JSREPL 默認會嘗試加載一個解釋器到 Web Workers,這個參數(shù)會決定解釋器是加載到 Worker(true) 還是加載到一個 iframe(false)。

例子:

coffeescript  jsrepl.loadLanguage("python", function () {  
    alert("Python loaded");  
  });
JSREPL::eval

在當前已加載的解釋器中執(zhí)行一條程序。帶有一個參數(shù):

字符串 command:需要執(zhí)行的程序字符串。
例子:

javascript    jsrepl.eval("1+1");  
JSREPL::getLangConfig

返回該語言相應(yīng)的配置對象。帶有一個參數(shù):

字符串 lang_name:需要返回配置對象的語言。默認為當前語言名。

JSREPL::checkLineEnd

給定一條命令,決定是否準備好執(zhí)行。因為有些情況是會導致暫時不準備執(zhí)行的,比如缺少右括號。

字符串 command:字符串,一條程序。

方法 callback:回調(diào)函數(shù),該回調(diào)函數(shù)會在命令(command)準備好執(zhí)行時返回 true,在命令未完整時返回 false

JSREPL::on

向一個或多個事件綁定一個監(jiān)聽器。帶有兩個參數(shù):

字符串 | 數(shù)組 event_type:事件類型,表示需要監(jiān)聽的事件。

方法 callback:回調(diào)函數(shù),事件被觸發(fā)時將會被調(diào)用。調(diào)用時會帶有事件提供的若干個參數(shù)。

JSREPL::off

解除某事件的一個或全部的監(jiān)聽器的綁定。帶有兩個參數(shù):

字符串 | 數(shù)組 event_type:事件類型,表示需要解綁方法的事件。

方法 callback:回調(diào)函數(shù),提供需要解綁的方法。如果不提供將會解除所有方法。

JSREPL::once

向一個或多個事件綁定一個只執(zhí)行一次的監(jiān)聽器。帶有兩個參數(shù):

字符串 | 數(shù)組 event_type:事件類型,表示需要監(jiān)聽的事件。

方法 callback:回調(diào)函數(shù),事件被觸發(fā)時將會被調(diào)用。調(diào)用時會帶有事件提供的若干個參數(shù)。

事件 input (輸入)

當當前的語言解釋器請求輸入時會被觸發(fā)。參數(shù):

方法 callback:回調(diào)函數(shù),程序會連續(xù)執(zhí)行這個回調(diào)函數(shù)。調(diào)用時必須帶有用戶輸入的字符串。注意,這個回調(diào)函數(shù)只能被一個監(jiān)聽器調(diào)用。

output (輸出)

當前的語言解釋器每次向標準輸出進行輸出時都會被觸發(fā)。參數(shù):

字符串 data:數(shù)據(jù),即輸出的字符串。

result (返回)

當語言解釋器有最終返回值時會被觸發(fā)。參數(shù):

字符串 data:數(shù)據(jù),字符串的形式的最終返回值。

progress (進度)

當 JSREPL 在加載語言解釋器時的進度百分比有變化時會被觸發(fā),用于報告進度。參數(shù):

浮點型 percentage:百分比,表示加載了多少文件。

timeout (超時)

如果 JSREPL 在實例化時選擇了 timeout ,當正在運行的程序在限定時間內(nèi)未調(diào)用指定的回調(diào)函數(shù)(見 實例化 JSREPL),那么將會觸發(fā)此事件。

ready (已準備好)

當語言已經(jīng)被加載完成并準備執(zhí)行時,將會觸發(fā)此事件。

一些標準輸入的 hack 問題

編譯時使用 Emscripten 的語言解釋器期望輸入的是一個阻塞式的調(diào)用(同步),要使之變成阻塞式調(diào)用的唯一方法是在瀏覽器里用 window.prompt 提示。雖然不理想,但它是可行的。然而,這種方法將會使我們失去在 Web Workers 中加載解釋器的能力(因為 Workers 沒有使用對話框)。

在 Workers 中加載解釋器會有很多好處,包括當解釋器初始化或工作時不阻塞主 UI 線程,以及擁有捕獲無限循環(huán)的能力(見 timeout 事件)。盡管有這些優(yōu)勢,但為了能夠輸入,直到目前為止我們依然避免使用 Workers。所以我們加載阻塞式調(diào)用時應(yīng)該使用 iframe 而不是 Worker。不過,在當前 Firefox 和 Chrome 的版本中打破了我們這個方法,因為我們再也不能做同步的二進制 XHR 操作了(比如去讀取庫文件)。

解決方案 Webkit 瀏覽器

在基于 Webkit 的瀏覽器中,我們可以利用非標準的 Web SQL 數(shù)據(jù)庫在主線程和 worker 線程之間共享資源。例如它們提供的同步機制,使它可以訪問主頁面線程和 Worker(見 repl.coffee 和 sandbox.js)。

Firefox

遺憾,我們不能在 Firefox 進行同樣的處理,因為它沒有實現(xiàn) Web SQL,而且仍然不支持標準的瀏覽器端數(shù)據(jù)庫(IndexedDB)同步 API。相反,我們可以使用 XHR 在 Worker 和主線程之間進行同步通訊,而我們的服務(wù)器就是天然的代理。這里有一個樣例服務(wù)器安裝在 repl.it static server 。

許可

jsREPL 在 MIT 許可下使用。jsREPL 的開發(fā)者對語言解釋器和修改過的 jsREPL 版本擁有自己的許可證,可以在它們的 extern/{語言名} 文件夾或子模塊下找到。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/85441.html

相關(guān)文章

  • docsify - 無需構(gòu)建快速生成文檔網(wǎng)站

    摘要:你可以指定導航欄文件名的內(nèi)容可以是這樣中文當然也支持二級列表,將生成一個下拉列表中文為什么是而不用想要實現(xiàn)的是用最簡單的方式動態(tài)渲染內(nèi)容。 showImg(https://segmentfault.com/img/bVGh1i?w=2562&h=1972); docsify 無需構(gòu)建快速生成文檔頁 網(wǎng)站:https://github.com/qingwei-li...文檔:https:...

    xiaokai 評論0 收藏0
  • docsify - 無需構(gòu)建快速生成文檔網(wǎng)站

    摘要:你可以指定導航欄文件名的內(nèi)容可以是這樣中文當然也支持二級列表,將生成一個下拉列表中文為什么是而不用想要實現(xiàn)的是用最簡單的方式動態(tài)渲染內(nèi)容。 showImg(https://segmentfault.com/img/bVGh1i?w=2562&h=1972); docsify 無需構(gòu)建快速生成文檔頁 網(wǎng)站:https://github.com/qingwei-li...文檔:https:...

    longmon 評論0 收藏0
  • 中文 Markdown 編寫格式規(guī)范的命令行工具 lint-md

    摘要:用于檢查中文編寫格式規(guī)范的命令行工具,基于開發(fā),且方便集成。忽略不檢查該規(guī)則警告,但不阻斷錯誤,且阻斷通過來忽略文件和目錄,語法。 lint-md 用于檢查中文 markdown 編寫格式規(guī)范的命令行工具,基于 AST 開發(fā),且方便集成 ci。Cli tool to lint your markdown file for Chinese. showImg(https://segment...

    wdzgege 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<