2
  1. 调用由以下三个文件的连接 (bash: cat ... >> app.js) 产生的文件:

/usr/share/ceylon/1.2.0/repo/ceylon/language/1.2.0/ceylon.language-1.2.0.js

modules/com/example/helloworld/1.0.0/com.example.helloworld-1.0.0-model.js

modules/com/example/helloworld/1.0.0/com.example.helloworld-1.0.0.js

用命令nodejs app.js什么都不做。在网页中使用时相同。我如何调用该 javascript 程序以便它在不使用 require.js 的情况下运行?

请给出 ceylon 模块和包含在其中的 run 函数和其他函数如何转换为 javascript 并被调用的规则。

如何在不手动或使用 require.js 连接多个 ceylon 模块的情况下从编译中获取一个 javascript 文件?

以上是没有使用谷歌闭包编译器。

鉴于语言模块的大小为 1.6 MB,不使用 google 闭包编译器运行 ceylon-js 是没有意义的。

  1. 单独使用 google 闭包编译器编译“ceylon.language-1.2.0.js”会导致很多警告。

java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --js /usr/share/ceylon/1.2.0/repo/ceylon/language/1.2.0/ceylon.language-1.2.0.js --js_output_file lib-compiled.js

我怎样才能摆脱这些警告?

  1. 我必须以什么顺序将 ceylon-js 产生的文件与模型文件和语言文件链接在一起,以便使用谷歌闭包编译器以高级模式编译它们以消除死代码。
4

2 回答 2

2

这是3个问题,真的。

Ceylon 模块被编译为 CommonJS 模块。连接生成的文件将不起作用,因为每个文件都是 CommonJS 格式,这是一个很大的函数,它返回一个带有导出声明的对象。

--no-module您可以使用仅获取生成代码的选项来编译模块,而无需将其包装为 CommonJS 格式。对于语言模块,您可以复制文件并删除第一行和最后 5 行。

我还不知道如何摆脱你在第二个问题中提到的警告。

至于第三个问题,我建议先放置语言模块,然后再放置其余文件。如果您在不同的模块中有任何同名的顶级声明,即使它们没有共享,也会发生冲突(仅保留最后一个声明),因为它们都在同一个模块/单元中。

于 2015-12-08T00:30:32.523 回答
0

好吧,我认为 require.js 可以将模块编译到一个文件中,然后运行 ​​google-closure-compiler,参见: http ://www.requirejs.org/docs/optimization.html

于 2016-02-08T16:49:26.890 回答