2009-02-10 39 views
1

缩小它们(我使用YUI Compressor)后更新javascript引用的最佳方法是什么?在构建过程中缩小后更新JavaScript引用

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

任何人有任何想法?由于

回答

4

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

在运行期间,使用ScriptManager通过控制称为登记特定脚本,这是由它们的处于最小化状态名称提及。然后,脚本管理器将以DEBUG模式包含这些脚本(虽然我们执行的技巧包括HEAD中的脚本,而不是ClientScriptManager所做的)。在RELEASE模式下,脚本管理器将替换其缩小对象所知道的某些脚本。在将脚本合并为一个文件的情况下,管理器将被多次调用,每次注册相同的合并缩小文件。有些文件是托管在外部的:这也由脚本管理器处理。

缺点:

  • 的哪些文件精缩的知识被复制:双方的ScriptManager和构建脚本必须同步。
  • 当添加新的脚本,它们将不会自动压缩(就是我个人认为这是一个很好的点,我想缩小成为一个选择)

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

+0

感谢您的意见。几个后续问题: 如何在运行时检测构建模式(发布版或调试版)? 您提到“scriptmanager被控件调用以注册特定脚本”。你使用ms ajax吗?我使用的是ext js,所以通常会在头部注册js。 – NabilS 2009-02-11 22:27:11

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 Developer team blog上可以找到更多信息。

2)其他人张贴上custom script managers他们写道,这将在调试期间主要参考版本,但在释放模式将要求最小化版本。

3)我确定我在某处读过,虽然我现在找不到它,但是有人编写了自己的HTML助手扩展方法,这会根据buid模式正确生成脚本调用 - 与瑞克的想法类似的过程,但允许您以更“常用”的方式工作,尽管我不确定智能感知如何发挥出来。

我现在倾向于1--使用类似于Nick Berardi的过程:How to create a YUI Compressor MSBuild Task生成最小化的js。

相关问题