在构建过程中缩小后更新javascript引用

时间:2009-02-10 22:28:05

标签: javascript asp.net-mvc minify

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

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

有人有什么想法吗?感谢

2 个答案:

答案 0 :(得分:4)

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

在运行时期间,控件会调用scriptmanager来注册特定脚本,这些脚本由其未经指定的名称引用。然后,脚本管理器将只在DEBUG模式下包含这些脚本(尽管我们执行的技巧包括HEAD中的脚本,而不是ClientScriptManager所做的主体)。在RELEASE模式下,scriptmanager将替换其缩小对应的已知脚本。对于组合到一个文件中的脚本,管理器被多次调用,每次都注册相同的组合缩小文件。有些文件是外部托管的:这也是由scriptmanager处理的。

下行:

  • 有关哪些文件被缩小的知识是重复的:scriptmanager和构建脚本必须同步。
  • 添加新脚本后,它们不会自动缩小(我个人认为这是一个好点;我希望缩小是一个选择)

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

答案 1 :(得分: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” - 可以在{{上找到更多信息3}}

2)其他人发布了他们写的Visual Web Developer team blog,它会在调试期间引用主版本,但在发布模式下会请求最小化版本。

3)我确定我在某个地方读过,虽然我现在找不到它,关于编写自己的HTML帮助扩展方法的人,会根据buid模式适当地生成脚本调用 - 类似处理Rick的想法,但允许你以更“平常”的方式工作,虽然我不确定它在intellisense中表现得如何。

我现在倾向于1 - 使用类似于Nick Berardi的过程:custom script managers来生成最小化的js。