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

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

 

如鹏网.Net培训班正在报名,有网络的地方就可以参加如鹏网的学习,学完就能高薪就业,点击此处了解

 

    三年前只要懂“三层架构”就可以说“精通分层架构”;现在则需要懂IOC(AutoFac等)、CodeFirst、lambda、DTO等才值钱;

    三年前只要会SQLServer就可以说自己“精通数据库开发”;现在则需还需要掌握MySQL等开源数据库才能说是“.Net开源”时代的程序员;

    三年前只要会进行用户上传内容的安全性处理即可;现在则需要熟悉云存储、CDN等才能在云计算时代游刃有余;

    三年前只要掌握Lucene.Net就会说自己“熟悉站内搜索引擎开发”;现在大家都用ElasticSearch了,你还用Lucene.Net就太老土了;

    三年前发邮件还是用SmtpClient;现在做大型网站发邮件必须用云邮件引擎;

    三年前缓存就是Context.Cache;现在则是Redis、Memcached的天下;

    如鹏网再次引领.Net社区技术潮流!点击此处了解如鹏网.Net最新课程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值