2017-04-10 46 views
0

我正在爲基於Web的JS編輯器實現自動建議功能。當用戶打字時,我想向他展示只有他自己已經聲明或使用的所有變量,函數和類的建議。我可以從window獲取變量和函數,但我無法獲取已聲明類的列表。讓我們說下面輸入代碼至今:Javascript - 如何在javascript中列出文件中所有已聲明的類

class FooClass { 
 
    constructor() { 
 
    console.log("I am the constructor of ECMA6 class"); 
 
    } 
 
};

宣佈下課後,如果用戶輸入富,我想向他出示建議,FooClass

+1

那麼,你手動解析鋸文字的用戶輸入? – Cerbrus

+0

@Cerbrus,每當用戶按下Ctrl-Space時,我正在調查窗口對象,並相應地返回結果。我也在調查工作線程的自我對象以尋求建議。所以要從工作線程獲取類,我需要聲明的類的列表。 – user3474480

+0

_「調查窗口對象」_?你什麼意思?你是否自動運行用戶輸入的代碼? – Cerbrus

回答

0

大多數IDE使用AST執行自動完成和其他智能重構和缺陷檢測。

其中最着名的Javascript AST工具是Esprima,它隨着解析Javascript,它也運行在JS(瀏覽器和節點)。

下面是它提供瞭如何可以用於自動完成演示: http://esprima.org/demo/autocomplete.html

如果要創建一個基於Web的JS編輯器,這個工具可能會爲你節省很多時間,不要」重新發明車輪。

在CodeMirror的背景下,你可能會有所幫助: https://github.com/maxogden/javascript-editor

codemirror + esprima供電HTML5的JavaScript編輯器組件

+0

esprima只是解析關鍵字文件。在提出建議之前,沒有進行任何有效性檢查。而maxogden不支持ECMA6。它將'class'指定爲無效關鍵字。 – user3474480

+0

http://esprima.org/demo/validate.html - 另外,maxogden可能不支持ECMA6,但esprima確實(它的首頁是首頁) - 我不是說它會是一個開箱即用的解決方案,但這比自己可靠地重新創建它要容易得多。 – mikeapr4

相關問題