Javascript 维护中型到大型JS重型web应用程序

Javascript 维护中型到大型JS重型web应用程序,javascript,Javascript,在web前端处理大量JS的最佳方法是什么?谷歌的编译器可以编译和缩小JS,这对生产是有好处的——但每次修改都要重新编译很烦人,调试也很烦人 将我的JS组织成多个文件的最佳方式是什么?关于javascript压缩中的“讨厌调试”部分,我的代码中发生了两件事,只有当项目处于调试阶段时,我才会提供非压缩文件,这样,在对文件进行任何更改后,我就不必重新构建javascript压缩项目。此外,如果您正在使用IE(喜欢吗?),IE9有一个用于javascript调试的“漂亮打印”功能,它应该解压缩(显然不会

在web前端处理大量JS的最佳方法是什么?谷歌的编译器可以编译和缩小JS,这对生产是有好处的——但每次修改都要重新编译很烦人,调试也很烦人


将我的JS组织成多个文件的最佳方式是什么?

关于javascript压缩中的“讨厌调试”部分,我的代码中发生了两件事,只有当项目处于调试阶段时,我才会提供非压缩文件,这样,在对文件进行任何更改后,我就不必重新构建javascript压缩项目。此外,如果您正在使用IE(喜欢吗?),IE9有一个用于javascript调试的“漂亮打印”功能,它应该解压缩(显然不会修复混淆)


VisualStudio中的MSBuild任务结合使用可以为您进行javascript/CSS压缩和缩小。我有一个“静态”项目,其中包含我的javascript、CSS和图像,所以当我修改我的javascript/CSS时,我构建了这个项目,它使用YUI压缩器来组合和缩小我的文件。通过这种方式,我可以分离我的javascript和css文件,但不必使用手动工具来压缩它们就可以一起提供它们

在项目属性中的“生成事件”下,我将其放在“生成后事件命令行”中:

一个示例MSBuild.xml文件:(我的有3个压缩程序任务,因此我可以获得特定的文件组)



希望这对javascript压缩的“讨厌调试”部分有所帮助,我的代码中发生了两件事,只有当项目处于调试阶段时,我才会提供非压缩文件,这样我就不必在对文件进行任何更改后重新构建javascript压缩项目。此外,如果您正在使用IE(喜欢吗?),IE9有一个用于javascript调试的“漂亮打印”功能,它应该解压缩(显然不会修复混淆)


VisualStudio中的MSBuild任务结合使用可以为您进行javascript/CSS压缩和缩小。我有一个“静态”项目,其中包含我的javascript、CSS和图像,所以当我修改我的javascript/CSS时,我构建了这个项目,它使用YUI压缩器来组合和缩小我的文件。通过这种方式,我可以分离我的javascript和css文件,但不必使用手动工具来压缩它们就可以一起提供它们

在项目属性中的“生成事件”下,我将其放在“生成后事件命令行”中:

一个示例MSBuild.xml文件:(我的有3个压缩程序任务,因此我可以获得特定的文件组)



希望这能帮上忙,也许这个能帮上忙


也许这个会有帮助


实际上有两个问题:如何避免在开发中重新编译,以及组织许多js文件的最佳方式是什么

第一个问题的简单答案是在模板中有一个用于生产/开发模式的变量。在伪模板代码中可能是这样的(示例很粗糙,当然最好使用LABjs等脚本加载工具):

{if mode=='production'}
{elseif mode=='development'}
{/if}
因此,您只需在切换到生产模式时进行编译


第二个问题要复杂得多,答案往往是自以为是的。您可以尝试使用现有的工具来强制使用自己的文件结构,例如,或更轻量级的工具。

实际上有两个问题:如何避免在开发中重新编译,以及组织许多js文件的最佳方式是什么

第一个问题的简单答案是在模板中有一个用于生产/开发模式的变量。在伪模板代码中可能是这样的(示例很粗糙,当然最好使用LABjs等脚本加载工具):

{if mode=='production'}
{elseif mode=='development'}
{/if}
因此,您只需在切换到生产模式时进行编译


第二个问题要复杂得多,答案往往是自以为是的。您可以尝试使用现有的工具强制使用自己的文件结构,例如,或更轻。

使用压缩器和生成过程带来的不便对于您获得的性能优势绝对值得。使用压缩器和生成过程带来的不便对于您获得的性能优势绝对值得。假设nornagon正在使用visual studio上开发。我认为他需要一个依赖项管理工具,比如MSBuild,在发生更改时自动压缩js文件。我认为他需要一个依赖项管理工具,比如MSBuild,在发生更改时自动压缩js文件。
/p:SourceLocation="$(ProjectDir)"
$(MSBuildBinPath)\msbuild.exe "$(ProjectDir)MSBuild\MSBuild.xml"
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/MsBuild/2003">
  <UsingTask
      TaskName="CompressorTask"
      AssemblyFile="Yahoo.Yui.Compressor.dll" />
  <Target Name="MyTaskTarget">
    <ItemGroup>
      <CssFiles Include="$(SourceLocation)..\css\Style.css"/>
      <CssFiles Include="$(SourceLocation)..\css\StylePrint.css" />
      <JavaScriptFiles Include="$(SourceLocation)..\scripts\general\*.js" />
    </ItemGroup>
    <CompressorTask
        CssFiles="@(CssFiles)"
        DeleteCssFiles="false"
        CssOutputFile="$(SourceLocation)..\css\Style.min.css"
        CssCompressionType="YuiStockCompression"
        JavaScriptFiles="@(JavaScriptFiles)"
        ObfuscateJavaScript="True"
        PreserveAllSemicolons="False"
        DisableOptimizations="Nope"
        EncodingType="Default"
        DeleteJavaScriptFiles="false"
        LineBreakPosition="-1"
        JavaScriptOutputFile="$(SourceLocation)..\scripts\general.min.js"
        LoggingType="ALittleBit"
        ThreadCulture="en-us"
        IsEvalIgnored="false"
            />
  </Target>
</Project>
{if mode == 'production'}
  <script src="allmyscripts.min.js"></script>
{elseif mode == 'development'}
  <script src="lib.js"></script>
  <script src="plugin1.js"></script>
  <script src="plugin2.js"></script>
  <script src="script1.js"></script>
{/if}