我正在使用Closure Compiler编写一个相当大的JavaScript库,但是我做了一个较小的模型以用作此问题的示例:
src / main.js :
export function main(str) {
console.log("From main: " + str);
}
命令:
google-closure-compiler --compilation_level ADVANCED_OPTIMIZATIONS --language_in ECMASCRIPT6 --language_out ECMASCRIPT6 --js_module_root src/ --module_resolution node --js src/main.js --js_output_file build/main.min.js
预期结果(大致):
export function main(str){console.log("From main: "+str)}
实际结果:
'use strict';
长话短说,我已经奋斗了几个小时,而且我不知道如何让Closure Compiler尊重ES6的“导出”语句。我已经尝试了很多次谷歌搜索,但是我只能得到“ goog.modules” 的结果,这不是我想要的。任何帮助将不胜感激。
答案 0 :(得分:1)
Closure Compiler当前不支持将模块作为输出(任何格式)。
答案 1 :(得分:0)
如果仅使用ADVANCED_OPTIMIZATIONS编译以下函数, Closure编译器产生空输出:
功能displayNoteTitle(note){alert(note ['myTitle']); }
因为从未在您传递的JavaScript中调用该函数 对于编译器,Closure Compiler假定此代码不是 需要!
您应该添加一个调用函数的部分
function displayNoteTitle(note) {
alert(note['myTitle']);
}
displayNoteTitle({'myTitle': 'Flowers'});
或者您可以将其添加到窗口对象
function displayNoteTitle(note) {
alert(note['myTitle']);
}
// Store the function in a global property referenced by a string:
window['displayNoteTitle'] = displayNoteTitle;