• 全自动时代:JavaScript自动压缩插件


    前两天看Dozer的博文《Visual Studio下的 JS & CSS 压缩和编辑插件》,感觉思路挺好,因为之前做过一阵子的VS插件开发,所以打算写一个出来。不过培训班的事情比较多,而且有两年没有碰VS插件开发了,一些细节忘了,所以利用周六没课的时间久开发了一个原始版本的出来。
    安装包下载:https://files.cnblogs.com/rupeng/JSMinSetup20101106_bin.zip
    源代码下载(需要安装VSSDK):https://files.cnblogs.com/rupeng/JSMin20101106_src.zip


    由于是测试的版本,所以暂时只支持VS2008。安装后重启VisualStudio即可。在js文件上点右键可以在右键菜单看到“启用压缩”(请谅解我和春晚学的植入广告行为)

    点击“启用压缩”即可,这样在js文件下就会折叠出现一个.min.js文件这个文件就是压缩后的js文件。

    只要对js文件做任何的修改修改后min.js文件也会同步压缩。这样开发的时候页面引用min.js,然后编辑的时候编辑js文件即可。

    源文件

     

    压缩后的min.js文件


    如果想取消js文件的自动压缩,只要再在js文件上点右键,取消“启用压缩”的勾选就可以了。


    由于对JS压缩算法不是很熟悉,因此我将CSDN上chinarenhcw开发的JS Minifier(http://download.csdn.net/source/2699409)的压缩算法反编译了拿来用,对这种未经原作者同意的逆向工程行为表示抱歉,chinarenhcw兄弟如果看到这篇文章不知道有没有兴趣一起开发这个插件。


    chinarenhcw的压缩算法只是进行了空行等的处理,没有进行变量重命名等进一步的压缩,为了发挥社区的力量,我将这个插件提供了一个扩展的机制,对JS压缩算法比较熟悉的朋友可以编写压缩算法,然后即使不懂VSX开发业没关系,只要提供一个dll即可


    大体步骤如下:创建一个类库项目,类库中包含一个public类,类中提供一个方法名为JsMin的public方法,方法包含一个string类型参数和一个string类型返回值,参数为压缩前的js字符串,返回值为压缩后的字符串,例如
        class Minifier
        {
            public string JsMin(string js)
            {
                return js.Replace(" ","");//压缩js字符串
            }
        }

    开发完成后打开VisualStudio主菜单“工具”→“选项”→“JSMin”,修改“JSMin压缩插件路径”选择压缩dll,然后“插件类全名”添加插件类的全名(命名空间+类名)即可。这样就是用你提供的压缩算法来进行压缩了,如果想恢复默认的压缩算法,将这两个选项清空即可。


    YUI Compressor是一个非常棒的JS压缩工具,貌似JQuery都是用它压缩的,因此我感觉咱们没必要重新发明轮子,将YUI Compressor集成过来就可以,由于YUI Compressor是java开发的,因此集成到.net中比较麻烦,我有两个想法:
    1、外调YUI Compressor,不过要求同时安装JDK,比较麻烦。
    2、用IKVM将YUI Compressor编译成.net 的dll,这样就简单很多了,不过没研究过IKVM,最近事情也比较多,没精力做这件事,所以只能这里提供一个思路了。

    高手写了更好用的压缩dll别忘了来这里分享给更多的朋友。

    这个VisualStudio插件开发中的一些零散资料(假设VSSDK安装在C:\Program Files\Microsoft Visual Studio 2008 SDK):
    1、制作安装包。
    1)添加一个“安装项目”
    2)在安装项目上点击右键,选择“添加”→“项目输出”,选择插件项目
    3)命令行进入C:\Program Files\Microsoft Visual Studio 2008 SDK\VisualStudioIntegration\Tools\Bin,然后运行
    regpkg /root:Software\Microsoft\VisualStudio\9.0  /regfile:ItcastJSMin.reg /codebase D:\我的文档\MyCode\VS插件开发\JS压缩\ItcastJSMin\bin\Debug\ItcastJSMin.dll
    其中ItcastJSMin.reg 为生成的注册表文件,D:\我的文档\MyCode\VS插件开发\JS压缩\ItcastJSMin\bin\Debug\ItcastJSMin.dll 为插件项目生成的dll,注意要写全路径,不要写相对路径,否则可能会报错“regpkg : error : 无效的 URI: 无法确定 URI 的格式”(参考 http://www.cnblogs.com/ApolloSun/archive/2010/02/25/1673665.html)。
    4)将生成的ItcastJSMin.reg用文本编辑器打开,将其中的“D:\\我的文档\\MyCode\\VS插件开发\\JS压缩\\ItcastJSMin\\bin\\Debug\\”替换成“[TARGETDIR]”,将“C:\\WINDOWS\\system32\\”替换成“[SYSTEMFOLDER]”这样由安装项目在安装时将reg中的路径替换为安装的路径。保存时注意编码要为Unicode。
    5)在安装项目上点击右键,选择“视图”→“注册表”,然后在“目标计算机上的注册表”上点击右键,选择“导入”,导入上面修改后的ItcastJSMin.reg。
    7)一般需要在安装了插件后运行“devenv.exe /setup”来确保插件安装,所以代码中添加了DevenvSetupCustomAction。
    8)在安装项目上点击右键“生成”,就可以生成安装包了。

    2、关于PLK
    安装VSSDK以后开发的VSPackage使用开发人员的PLK,如果想制作安装包让没有安装VSSDK的人也能安装的话需要到微软网站上(http://msdn.microsoft.com/en-us/vsx/cc655795.aspx)申请PLK,注意申请时的产品名、公司名不能含有中文和空格;这个产品名、公司名必须和VSPackage中ProvideLoadKey中使用的产品名、公司名一致。
    申请到PLK以后在插件项目中创建一个资源文件(resx),然后在文件中添加一个字符串资源,名称为1(任意,只要和后面一致就可以),值为申请到的PLK。
    然后在VSPackage上添加“[ProvideLoadKey("Standard", "1.0", "JSMinPackage", "Itcast", 1)]”,其中,1表示在Resource.resx中名字为1的为PLK。"Standard"、"1.0"、 "JSMinPackage"、"Itcast"为VS版本、插件版本、插件名称、公司名,必须和PLK申请时填写的一致。
    在VisualStudio启动的时候添加“/NoVSIP”选项就可以测试插件在没有VSSDK的机器上是否能正确运行“devenv.exe /NoVSIP”。

    3、手动添加vsct文件的方法
    参考如下文章:
    http://www.cnblogs.com/ApolloSun/archive/2010/02/25/1673483.html
    http://social.msdn.microsoft.com/Forums/en/vsx/thread/4bcceb62-abe6-4c9e-9f39-826857c9aadb

  • 相关阅读:
    day01--计算机硬件基础笔记
    22 Jun 18 Django,ORM
    21 Jun 18 Django,ORM
    20 Jun 18 复习, mysql
    20 Jun 18 Django,ORM
    19 Jun 18 复习, 正则表达式
    19 Jun 18 Django
    15 Jun 18 复习, shutil模块
    15 Jun 18 Django
    14 Jun 18 复习, form表单
  • 原文地址:https://www.cnblogs.com/dajiang02/p/1957474.html
Copyright © 2020-2023  润新知