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