如何从 Closure Compiler 编译的模块中导出符号?
How to export symbols from modules compiled by Closure Compiler?
我在一个库文件中有很多由 Closure Compiler(高级)编译的 js es6 模块。
我无法使用 /** @export */
或使用 goog.exportSymbol('whatever', whatever)
将某些符号导出到 HTML 页中未编译的 javascript。
怎么做?
备注:如果我在所有模块中将 es6 import
/export
替换为 goog.require
/goog.provide
,它会起作用,我可以在 HTML页。
您不能在模块中使用 @export
,但 goog.exportSymbol
应该可以。您的另一个选择是手动导出它们:
window['whatever'] = whatever;
经过进一步调查,我找到了解决方案。
虽然在浏览器中加载时在控制台中没有任何错误(当然 undefined whatever
除外),但我的库没有执行。我只是将闭包库移动到要编译的文件堆栈之前,然后浏览器正确执行我的库并正确导出我的符号。
导出符号的 3 种方法在已编译的 es6 模块中有效:/** @export */ whatever
、goog.exportSymbol('whatever', whatever)
、window['whatever'] = whatever
。前两个是第三个的方便方法。
堡垒详情见
我在一个库文件中有很多由 Closure Compiler(高级)编译的 js es6 模块。
我无法使用 /** @export */
或使用 goog.exportSymbol('whatever', whatever)
将某些符号导出到 HTML 页中未编译的 javascript。
怎么做?
备注:如果我在所有模块中将 es6 import
/export
替换为 goog.require
/goog.provide
,它会起作用,我可以在 HTML页。
您不能在模块中使用 @export
,但 goog.exportSymbol
应该可以。您的另一个选择是手动导出它们:
window['whatever'] = whatever;
经过进一步调查,我找到了解决方案。
虽然在浏览器中加载时在控制台中没有任何错误(当然 undefined whatever
除外),但我的库没有执行。我只是将闭包库移动到要编译的文件堆栈之前,然后浏览器正确执行我的库并正确导出我的符号。
导出符号的 3 种方法在已编译的 es6 模块中有效:/** @export */ whatever
、goog.exportSymbol('whatever', whatever)
、window['whatever'] = whatever
。前两个是第三个的方便方法。
堡垒详情见