我该如何分割我的javascript到使用谷歌的关闭编译模块?我该如何分割我的javascript到

2019-05-13 17:53发布

我想使用谷歌关闭编译器中,我们使用的JavaScript源。 在发展模式中,我们往往会打破功能,大量的文件,但对于生产愿让他们组合成模块。

当调用编译器,我可以给它的文件列表,包括编译,但是,它的输出显示,编译器并没有保存的文件列表的顺序。

我搜索一下,发现我可以为了控制不同的js文件之间的依赖关系使用goog.provide / good.require。 但问题是,它增加了代码到我的JS,我只是不需要或不想要的,例如:

goog.provide("mainFile")

将补充一点:

var mainFile = {};

编译后的js文件,这东西我不想。 我们不使用谷歌关闭图书馆所有,所有我想用的是编译器。

有没有办法告诉编译器中的文件的顺序,而不包括更多的“封库”功能,我有没有必要? 当然,我可以创造我自己的,这将首先采取的所有文件,将它们合并成一个,然后这将是编译器的输入的工具,但我宁愿作废,如果它可以被编译器本身来完成。


编辑

我们的目标是能够产生像在这个线程的答案模块: 利用在关闭编译器的--module选项来创建多个输出文件

所以,我想添加到控制哪些文件进入该模块同时也有自己的顺序控制的能力。 现在我不使用通配符,但我计划在将来这样做(如果可能的话)。

简单的“猫file1.js file2.js> combined.js &&编译...”是好的,但是对我们来说这是一个比较复杂一点,我们就必须写一个程序/脚本,它是基于某种逻辑。 如果我们能以某种方式告诉编译器在先进的文件的顺序它可能只是节省实现这样一个程序的时间。

谢谢。

Answer 1:

关闭编译器的创建多个输出文件的能力提供了一个强大的工具,输入文件分割成不同的输出块。 它被设计成使得不同的块可以在不同时间,这取决于所需的特性被加载。 有关于块多编译器标志。

每次使用--chunk标志的描述的输出文件和它的依赖。 每块标志如下的语法如下:

--js inputfile.js
--chunk name:num_files:dependency

所得到的输出文件将被name.js并包括由前述--js标志(多个)中指定的文件。

依赖选项,你会是什么最感兴趣,它指定父块是什么。 该块选项必须描述有效的依赖关系树(你必须有一个基本块)。

下面是一个例子:

--js commonfunctions.js
--chunk common:1
--js page1functions.js
--js page1events.js
--chunk page1:2:common
--js page2function.js
--chunk page2:1:common
--js page1addons.js
--chunk page1addons:1:page1

在这种情况下,你在告诉1和Page 2块取决于公共块,而且page1addons块依赖于第1页块的编译器。

请记住,编译器可以和它从一个块移动代码到其他块的输出文件,如果它决定了它是只由大块。

这一切都不需要封库或者使用goog.require的/提供电话也不任何代码添加到您的输出。 如果你想编译器自动判断依赖或将能够管理这些依赖你,你需要使用一个模块格式,如CommonJS的,ES2015模块或goog.require /提供/模块调用。

更新注意:在此之前的版本20180610,该chunk标志命名module 。 他们被重命名为减少与适当的JS模块混淆。 答案已更新,以反映新的名称。



Answer 2:

您还可以设置输出路径,例如用:

--module_output_path_prefix ./public/js/

参见: 在关闭编译器使用--module选项来创建多个输出文件



文章来源: How do I split my javascript into modules using Google's Closure Compiler?