Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript WebBrowserControl+JS缩小:使用JS代码操纵资源属性,以便在VisualStudio的预构建事件中进行缩小_Javascript_Visual Studio 2010_Resources_Minify_Pre Build Event - Fatal编程技术网

Javascript WebBrowserControl+JS缩小:使用JS代码操纵资源属性,以便在VisualStudio的预构建事件中进行缩小

Javascript WebBrowserControl+JS缩小:使用JS代码操纵资源属性,以便在VisualStudio的预构建事件中进行缩小,javascript,visual-studio-2010,resources,minify,pre-build-event,Javascript,Visual Studio 2010,Resources,Minify,Pre Build Event,背景:获得了一个C项目,其中包含一块javascript,通过编程将其注入webbrowser控件显示的网页中。但是,最好缩小javascript块,并将其嵌入/写入资源文件的属性中。我知道javascript的小型化是可能的。我只是想知道是否也可以使用预构建事件将结果字符串写入资源文件的特定属性中 注意:当然,结果字符串可以写入一个文件,该文件又绑定到一个资源属性。然而,我更愿意避免这样的事情,因为我担心javascript块在运行时经常被加载会带来性能损失。如果我错了,请随时纠正我。对于那些

背景:获得了一个C项目,其中包含一块javascript,通过编程将其注入webbrowser控件显示的网页中。但是,最好缩小javascript块,并将其嵌入/写入资源文件的属性中。我知道javascript的小型化是可能的。我只是想知道是否也可以使用预构建事件将结果字符串写入资源文件的特定属性中


注意:当然,结果字符串可以写入一个文件,该文件又绑定到一个资源属性。然而,我更愿意避免这样的事情,因为我担心javascript块在运行时经常被加载会带来性能损失。如果我错了,请随时纠正我。

对于那些在类似问题上苦苦挣扎的人来说,这是我在Visual Studio 2010中选择的逐步解决方案。下面的方法以统一的方式处理javascript文件的缩小,同时尊重您可能使用的版本控制系统,避免在托管的文件中生成虚拟更改。以下是步骤:

安装Java和Google的闭包以缩小javascript

打开项目的资源,转到文件资源并创建一个虚拟文件属性a-la foo.txt。这将创建名为Resources的目录,并将其包含在项目中。在此之后,您可以删除foo.txt文件

右键单击Resources目录并创建一个以Uniminified.js结尾的javascript文件,例如MyInjectableJavascript.unnified.js。编辑此文件的属性,并确保生成操作设置为“无”。顺便说一下,不要在参考资料中引用此文件

现在回到资源的文件属性,添加一个新的文件属性,该属性与上面创建的文件的基本名称相同,只是这次以min.js结尾,例如MyInjectableJavascript.min.js

转到resources目录下创建的.min.js文件,并将其转换为嵌入式资源

现在转到项目属性->生成事件并插入以下代码:

一行中的预生成事件:

call "$(ProjectDir)JavascriptMinificationWithGoogleClosure.bat" "$(ProjectDir)Resources\MyInjectableJavascript.Unminified.js" "$(ProjectDir)Resources\MyInjectableJavascript.min.js"
生成后事件两行:

 del "$(ProjectDir)Resources\MyInjectableJavascript.min.js"
 call echo. 2> "$(ProjectDir)Resources\MyInjectableJavascript.min.js"
这样做的目的是在构建项目之前缩小javascript代码,在构建之后将缩小的文件重置为一个换行符

注意:我们不一起删除缩小文件的原因是,如果在我的案例中找不到资源引用的缩小文件,visual studio将生成一个错误,并且会表现得非常奇怪visual studio完全出乎意料地删除了resources.Designer.cs。。。5次。通过将min.js文件截断为一个换行符,您可以保留它,甚至可以将它添加到您的版本控制系统中,而无需再次使用它

在项目目录下放置一个名为JavascriptMinificationWithGoogleClosure.bat的文件,该文件包含以下内容:

%JAVA_HOME%jre6\bin\JAVA-jar%CLOSURE\u JS_HOME%compiler.jar-JS%1-JS_输出_文件%2

最后,创建两个环境变量右键单击计算机->属性->名为JAVA_HOME和CLOSURE_JS_HOME的环境变量,它们分别指向已安装JAVA和CLOSURE可执行文件的目录。例如:

JAVA\u主页->C:\Program Files\JAVA\ CLOSURE\u JS\u HOME->C:\Program Files\CLOSURE\

注意:确保在两条路径的末尾都包含尾随斜杠

现在,您可以使用以下命令访问从C代码构建期间生成的精简javascript:

Resources.MyInjectableJavascript\u min

希望这有帮助。祝你好运

干杯,
Dominick

缩小javascript是为了缩短下载时间。这不是你需要解决的问题。首先衡量一下。因为我给出的答案与javascript的简化有着千丝万缕的联系,为了清晰起见,我决定更新问题的标题。感谢Hans Passant帮助我认识到我最初拙劣的措辞导致的困惑。