我正在将基于Java的Web应用程序Apache Roller从YUI2升级到YUI3。我们之前没有使用雅虎的非SSL CDN,因为Roller有时会在SSL上运行,我们希望避免向用户发出有关正在访问的非SSL站点的浏览器弹出警告。这意味着我们需要将YUI3库与我们的项目一起嵌入,就像我们之前使用更小的YUI2一样。问题是YUI3有大量的文件夹(总共大约375个),每个文件夹对应一个组件或组件依赖。我已经使用YUI Configurator来识别和导入“仅”我们需要的75,但是,我们project file system中的这个非常混乱,添加了75个文件夹,其中大多数只有一个所需文件。< / p>
是否有更有效的方法来嵌入YUI3?如果我可以将75“-min.js”文件全部放在一个文件夹而不是每个文件夹中,那将是很好的,但我不确定如果我这样做,YUI3的依赖项发现系统会起作用。像JQueryUI的Custom Builder,我选择我想要的组件,只需要添加一个文件,或者只需要几个文件来源控制就可以了。我们已经在某些项目中使用了JQueryUI,如果合并YUI3,我们可能需要更多地使用它,这对文件系统来说不会那么麻烦。
答案 0 :(得分:0)
我们在大型Java Web-App中完成了这项工作。第一步是创建一个名为YUI的新Maven工件。它只包含整个YUI版本。我们有一个内部的maven repo来发布它,但是如果你不使用Maven,你可以将YUI放入一个jar文件并将其包含在你的项目中。
我们将文件放在JAR中的/ META-INF / resources / yui中,因为此路径将在符合Servlet 3.0的容器(如Tomcat)中显示为Web。
值得一看的是WebJars项目,该项目打包了大量的JS框架。它托管的YUI版本已经过时,但您可以给它们一个轻推来更新它。
允许您配置YUI以从这个新位置选择文件(使用loader documentation中描述的&#39; base&#39;属性)
此时,您将不再依赖CDN,因此您可以通过SSL主持,我认为这符合问题的要求。缺点是你要加载单个文件,而不是使用YUI的组合加载器。
我们做的是编写一个组合加载器Servlet,它能够获取YUI组合请求并将所请求的模块连接在一起。如果YUI文件在JAR中,您需要从那里获取它们,但这样做相当简单。
编写自己的Combo Loader来托管YUI的唯一警告是托管图库。该库的最新版本具有硬编码链接到他们的CSS中的图像,指向他们的CDN。这将导致托管SSL的问题。如果您不使用图库,那一切都很好。