如何找到 Liferay 中 javascript 文件的连接顺序?

发布于 2024-12-02 14:34:09 字数 230 浏览 1 评论 0原文

因此,在 Liferay 中,我们有一个包含所有核心 javascript 的 ROOT/html/js 文件夹。有人可以向我解释创建串联 js 文件的确切机制吗? barebone.jsp 和 everything.jsp 之间有什么区别?在代码中的哪里可以看到文件连接成一个文件的顺序?

我可以看到 top_js.jspf 文件,但我仍然不清楚。

提前致谢。

So, in Liferay we have a ROOT/html/js folder with all core javascript. Can somebody explain me exact mechanism of creating concatenated js-file. What is the difference between barebone.jsp and everything.jsp? Where in code I can see the order in which file are concatenated into one file?

I can see top_js.jspf file, but nevertheless it remaind unclear to me.

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

迷爱 2024-12-09 14:34:09

Liferay 的portal.properties 是最好的文档文件之一。您可以在 Liferay Wiki 或 Portal-impl.jar 中找到它。

在那里搜索“准系统”或“一切”或只是“Javascript”。从那里我复制了以下文档:

#
# Set a list of JavaScript files that will be loaded automatically in
# /html/common/themes/top_js.jsp.
#
# There are two lists of files specified in the properties
# "javascript.barebone.files" and "javascript.everything.files".
#
# As the name suggests, the barebone list is the minimum list of JavaScript
# files required for most cases. The everything list includes everything
# else not listed in the barebone list.
#
# The two lists of files exist for performance reasons because
# unauthenticated users usually do not utilize all the JavaScript that is
# available. See the property "javascript.barebone.enabled" for more
# information on the logic of when the barebone list is used and when the
# everything list is used and how to customize that logic.
#
# The list of files are also merged and packed for further performance
# improvements. See the property "javascript.fast.load" for more details.
#

#
# Specify the list of barebone files.
#
# The ordering of the JavaScript files is important.
#
# The Liferay scripts are grouped in such a way, that the first grouping
# denotes utility scripts that are used by the second and third groups. The
# second grouping denotes utility classes that rely on the first group, but
# does not rely on the second or third group. The third grouping denotes
# modules that rely on the first and second group.

javascript.barebone.files= ... (omitted here, multiline)

以下部分(为了不复制此处的所有内容)也可能包含与您的案例相关的有趣信息。但我想你的问题已经通过上面的部分得到了回答 - 请阅读 Portal.properties 中的其余部分。

编辑:回答您的评论:顺序记录在上面,从上到下,因为后面的文件依赖于前面的文件。此外,以下属性可能会给出推理提示:

#
# Set this property to false to always load JavaScript files listed in the
# property "javascript.everything.files". Set this to true to sometimes
# load "javascript.barebone.files" and sometimes load
# "javascript.everything.files".
#
# The default logic is coded in com.liferay.portal.events.ServicePreAction
# in such a way that unauthenticated users get the list of barebone
# JavaScript files whereas authenticated users get both the list of barebone
# JavaScript files and the list of everything JavaScript files.
#
javascript.barebone.enabled=true

所有这一切背后的原因是,在许多安装中,客户希望最大限度地减少传输的数据量和执行的 JavaScript 量。如果一切都是完全动态的,这将导致传输大量文件,这会通过 http 花费大量时间。 “barebones”和“everything”连接并缩小所有文件并将它们作为一个整体进行传输。通常,仅传输一个文件比传输多个文件要快得多,即使所有文件加起来的长度相同。

虽然人们可以争论 Liferay 的一般文档数量,但我想说你不能争论 Portal.properties 是 Liferay 中最好的文档文件之一。看看它 - 只要这样做就会让您深入了解 Liferay 可以做哪些巧妙的事情。

Liferay's portal.properties is one of the best documented files. You'll find it either in the Liferay Wiki or in portal-impl.jar.

In there search for "barebone" or "everything" or just "Javascript". From there I've copied the following documentation:

#
# Set a list of JavaScript files that will be loaded automatically in
# /html/common/themes/top_js.jsp.
#
# There are two lists of files specified in the properties
# "javascript.barebone.files" and "javascript.everything.files".
#
# As the name suggests, the barebone list is the minimum list of JavaScript
# files required for most cases. The everything list includes everything
# else not listed in the barebone list.
#
# The two lists of files exist for performance reasons because
# unauthenticated users usually do not utilize all the JavaScript that is
# available. See the property "javascript.barebone.enabled" for more
# information on the logic of when the barebone list is used and when the
# everything list is used and how to customize that logic.
#
# The list of files are also merged and packed for further performance
# improvements. See the property "javascript.fast.load" for more details.
#

#
# Specify the list of barebone files.
#
# The ordering of the JavaScript files is important.
#
# The Liferay scripts are grouped in such a way, that the first grouping
# denotes utility scripts that are used by the second and third groups. The
# second grouping denotes utility classes that rely on the first group, but
# does not rely on the second or third group. The third grouping denotes
# modules that rely on the first and second group.

javascript.barebone.files= ... (omitted here, multiline)

The following sections (in order to not copy everything here) might also contain interesting information for your case. But I guess your question is answered with the parts from above - read the rest in portal.properties.

Edit: To answer to your comment: The order is documented above, it's top to bottom, as the later files depend on the earlier. Further the following property might give a hint on reasoning:

#
# Set this property to false to always load JavaScript files listed in the
# property "javascript.everything.files". Set this to true to sometimes
# load "javascript.barebone.files" and sometimes load
# "javascript.everything.files".
#
# The default logic is coded in com.liferay.portal.events.ServicePreAction
# in such a way that unauthenticated users get the list of barebone
# JavaScript files whereas authenticated users get both the list of barebone
# JavaScript files and the list of everything JavaScript files.
#
javascript.barebone.enabled=true

The reason behind all of this is that in many installations customers want to minimize the amount of data transferred and javascript executed. If everything would be fully dynamic, this would result in lots of files to be transferred, which takes a lot of time through http. "barebones" and "everything" concatenate and minify all of the files and transfer them as one. Typically, transferring just one file is a lot faster than transferring multiple files, even if all add up to the same length.

And while one can argue about the amount of documentation for Liferay in general, I'd say you can't argue about portal.properties being among the best documented files in Liferay. Take a look at it - just doing so will give you a lot of insight of what neat things you can do with Liferay.

谜兔 2024-12-09 14:34:09

请记住,准系统列表是在注销状态下列出的 javascript 文件。 everything 列表是 everything 列表和准系统列表的组合。

Please remember that the barebones listing is the javascript file listed in a logged out state. The everything list is a combination of the everything list and the barebones listing .

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文