2017-05-31 29 views
0

我正在嘗試爲Google Closure編譯器使用的Electron創建一個extern。這就是我的實習醫生的樣子:extern中的Closure編譯器重命名函數

var electron = {}; 
electron.dialog = function() {}; 
electron.app = function() {}; 
electron.ipcRenderer = function() {}; 
electron.on = function() {}; 
electron.send = function() {}; 
electron.remote = function(){}; // {return{getGlobal: function(){}}}; 
electron.remote.getGlobal = function(a){}; 
electron.require = function() {}; 
electron.buildFromTemplate = function() {}; 
electron.popup = function() {}; 
electron.getCurrentWindow = function() {}; 
electron.showErrorBox = function() {}; 
electron.setTitle = function() {}; 
electron.setRepresentedFilename = function() {}; 
electron.showMessageBox = function() {}; 
electron.getPath = function() {}; 
electron.showSaveDialog = function() {}; 
electron.showOpenDialog = function() {}; 

var process = { 
    platform: {} 
}; 

我遇到的問題是,編譯器不保留的getGlobal函數的函數名。我原來的源代碼如下所示:

const electron = require('electron'); 
electron.remote.getGlobal('sharedObject') 

運行編譯器後,它結束了看起來像這樣:

var a = require("electron"); 
console.log(a.remote.D("sharedObject")); 

a.remote.D確實應該a.remote.getGlobal

如何讓編譯器保留getGlobal函數名稱?

回答

0

我改變了我原來的源代碼到現在這個樣子:

electron.remote'getGlobal」

編譯器將保留名稱。這是因爲編譯器始終保持字符串不變。編譯的代碼現在看起來是這樣的:

console.log(a.remote.getGlobal("sharedObject")); 

它仍然是儘管爲什麼編譯器不會在EXTERN文件識別getGlobal功能是一個謎。也許它只能處理從它們的根對象嵌套一層的函數(而這裏是兩層)。另一個原因可能與編譯器如何執行其多階段編譯有關,它在處理嵌套函數時存在一些缺陷。

相關問題