【问题标题】:Efficient way to incorporate YUI3 into a Java web application?将 YUI3 合并到 Java Web 应用程序中的有效方法?
【发布时间】:2014-07-12 14:28:16
【问题描述】:

我正在将基于 Java 的 Web 应用程序 Apache Roller 从 YUI2 升级到 YUI3。我们在这里没有使用 Yahoo 的非 SSL CDN,因为 Roller 有时会在 SSL 上运行,我们希望避免向用户弹出有关访问非 SSL 站点的浏览器弹出警告。这意味着我们需要将 YUI3 库嵌入到我们的项目中,就像我们之前对小得多的 YUI2 所做的那样。问题是 YUI3 有大量文件夹(总共约 375 个),每个文件夹或组件依赖项都有一个。我已经使用YUI Configurator 来识别和“仅”导入我们需要的 75 个,但是,这在我们的project file system 中仍然非常混乱,添加了 75 个文件夹,其中大多数只有一个需要的文件。

有没有更有效的嵌入 YUI3 的方法?如果我可以将 75 个“-min.js”文件全部放在一个文件夹而不是一个文件夹中,那就太好了,但我不确定如果我这样做的话 YUI3 的依赖项发现系统是否会工作。像 JQueryUI 的 Custom Builder 这样的东西,我选择我想要的组件并且只需要添加一个文件,或者只添加几个文件到源代码控制将是理想的。我们已经在一些项目上使用了 JQueryUI,如果合并 YUI3 不能减少文件系统的负担,我们可能需要更多地使用它。

【问题讨论】:

标签: yui yui3


【解决方案1】:

我们已经在我们的大型 Java Web 应用程序中做到了这一点。第一步是创建一个名为 YUI 的新 Maven 工件。它只包含整个 YUI 版本。我们有一个内部 maven repo 可以将其发布到,但如果您不使用 Maven,您可以将 YUI 放入一个 jar 文件并将其包含到您的项目中。

我们将文件放入 JAR 中的 /META-INF/resources/yui 中,因为此路径将在 Tomcat 等符合 Servlet 3.0 的容器中显示为网络可见。

WebJars项目值得一看,它封装了大量的JS框架。它托管的 YUI 版本已过时,但您或许可以推动他们进行更新。

这将允许您配置 YUI 以从这个新位置提取文件(使用 loader documentation 中描述的 'base' 属性)

此时,您将不再依赖 CDN,因此您可以通过 SSL 进行托管,我认为这符合问题的要求。缺点是您将加载单个文件,而不是使用 YUI 的组合加载器。

我们所做的是编写一个组合加载器 Servlet,它能够接受 YUI 组合请求并为连接在一起的请求模块提供服务。如果 YUI 文件位于 JAR 中,则需要从那里获取它们,但这样做相当简单。

编写自己的 Combo Loader 来托管 YUI 的唯一警告是托管画廊。画廊的最新版本在其 CSS 中硬编码了指向其 CDN 的图像链接。这将导致通过 SSL 托管的问题。如果您不使用图库,一切都很好。

【讨论】:

    猜你喜欢
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 2010-10-11
    • 2012-09-30
    相关资源
    最近更新 更多