轻松压缩JS文件

JavaScript024

轻松压缩JS文件,第1张

在任意文件夹下按住shift按键的同时,点击鼠标右键 打开powershell命令窗口 执行命令: npm install uglify-js -g 首先,打开cmd 其次,查找要压缩的js文件,查找方法如下: 1、输入文件所在位置 例如,我需要压缩的文件在E盘中,就输入  e: 2、输入:cd + js文件所在位置 例如,我需要压缩的js文件在:E:\electron-vue\topology\static\new_node_modules\topology-vue 就执行:cd electron-vue\topology\static\new_node_modules\topology-vue 3、输入:uglifyjs + 要压缩的js文件名称 +  -o +  压缩后js文件名称 例如,我要将topology-vue.umd.js文件压缩成topology-vue.umd.min.js 就执行:uglifyjs topology-vue.umd.js -o topology-vue.umd.min.js 你没看错! 就是这么简单!! 将JS文件进行压缩,让你的程序快马加鞭地跑起来吧!!!

简单的压缩一般是:删除注释和空白符,替换变量名。

更激进点的做法还包括:删除无用代码,内联函数,等价语句替换等。

有些开发者出于保护代码的原因,还可能会对代码进行混淆处理。

通常深度压缩JS都必须要做的一步就是尽量地缩短变量名,因为一份体积巨大的JS代码,其中的变量名会占去不少空间。

压缩js必须要注意:

1、压缩前的代码格式要标准。因为去掉换行与空格时,所有语句就变成一行,如果你的代码有瑕疵(比如某行少了个分号),那就会导致整个文件报错。当然,现在有的压缩工具已经比较智能了。

2、备份原文件。压缩很可能不会一次成功,一般要多试,多改。

js压缩工具:

1. YUI Compressor

2. Google Closure Compiler

因为项目需要压缩字符串和二进制,找到了pako这个库:

https://github.com/nodeca/pako

https://gitee.com/renew_old_romance/pako/tree/master

https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/pako/index.d.ts

参考 Javascript 简单实现Gzip 压缩字符串 基于pako.js

因为字符串需要与后端通讯,所以使用了bota/atob进行base64编码。

关于字符串与二进制处理,可以参考 jsmpeg系列一 基础知识 字符处理 ArrayBuffer TypedArray ,其中提到了ArrayBuffer与字符串的互相转换。

ArrayBuffer转为字符串,或者字符串转为ArrayBuffer,有一个前提,即字符串的编码方法是确定的。假定字符串采用UTF-16编码(JavaScript的内部编码方式),可以自己编写转换函数。

但是,ab2str这种写法,在实际使用中,如果buf过大,会有 Maximum call stack size exceeded 堆栈溢出。

可以参考 javascript - js数组转字符串 - 在字符串和ArrayBuffers之间转换 ,改为for的写法: