1

缩小 JavaScript 引用后更新它们的最佳方法是什么(我使用 YUI Compressor)?

我正在使用 ASP.NET mvc,并且在开发期间每个文件中都有一堆或 javascript 引用。在构建时(使用 MSBuild),我将所有文件缩小为单个文件。同时我想用单个引用替换所有引用。这应该是一件很常见的事情,但我找不到一个很好的干净的自动化方法来做到这一点。

有人有想法么?谢谢

4

2 回答 2

4

我们使用自定义脚本管理器。在我们的 msbuild 过程中,YUI Compressor 用于创建缩小版本,也可以将几个较小的 .js 文件合并为一个较大的文件。这减少了请求的数量,从而减少了加载时间。缩小版本和组合版本与可调试版本并排创建。

在运行时,控件调用脚本管理器来注册特定的脚本,这些脚本由它们的最小化名称引用。然后,脚本管理器将仅在 DEBUG 模式下包含这些脚本(尽管我们执行了一个技巧,即在 HEAD 中包含脚本,而不是像 ClientScriptManager 那样包含正文)。在 RELEASE 模式下,脚本管理器将用它们的缩小副本替换它已知的某些脚本。在脚本组合成一个文件的情况下,管理器会被多次调用,每次都注册同一个组合的、缩小的文件。一些文件在外部托管:这也由脚本管理器处理。

缺点:

  • 什么文件被缩小的知识是重复的:脚本管理器和构建脚本都必须同步。
  • 添加新脚本时,它们不会自动缩小(我个人认为这是一个好点;我希望缩小成为一种选择)

顺便说一句:我们不使用 C# 端口在 MSBuild 中运行。当我第一次尝试它时,它有太多的错误。我们只是用一个 Exec 任务调用 YUI Compressor。

于 2009-02-11T09:39:47.863 回答
2

有几个想法浮现在脑海:

1) 利用发布的修补程序以允许 .js 文件的调试/智能版本:KB958502

这将允许您编写(尽管是一个)大的、完全可读的 js 文件,但请参阅脚本 src 中的完整版本,该版本可以在构建期间生成。hofix 使 VS 能够查找名为“-vsdoc.js”或“.debug.js”的文件来代替引用的文件(因此您在 src 属性中引用“/scripts/myscript.js”,但 IDE 将首先查找对于“/scripts/myscript-vsdoc.js”,然后是“/scripts/myscript.debug.js”,最后它会查找“/scripts/myscript.js”——更多信息可以在Visual Web上找到开发者团队博客

2) 其他人发布了他们编写的自定义脚本管理器,该管理器将在调试期间引用主版本,但在发布模式下会请求最小化版本。

3)我确定我在某个地方读到过,虽然我现在找不到,关于有人编写了自己的 HTML 帮助扩展方法,这将根据 buid 模式适当地生成脚本调用 - 类似于 Rick 的过程想法,但允许您以更“通常”的方式工作,尽管我不确定它与智能感知的效果如何。

我目前倾向于 1 - 使用类似于 Nick Berardi 的过程:如何创建 YUI Compressor MSBuild 任务以生成最小化的 js。

于 2009-02-11T00:08:34.600 回答