2017-05-31 24 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功能是一个谜。也许它只能处理从它们的根对象嵌套一层的函数(而这里是两层)。另一个原因可能与编译器如何执行其多阶段编译有关,它在处理嵌套函数时存在一些缺陷。

相关问题