缩小javascript文件大小之缩编、混淆
写前端的相信都遇到过要提高网页的性能,其中javascript文件越小,浏览器的下载速度面对文件的读取和解析就更快。而一般我们在开发又需要一定的代码规范来使我们的代码更加的容易维护和读懂,但是大量空格和换行又会加大文件的大小,所以在发布时进行缩编或者混淆可以减小javascript的大小,提高效率。
一、缩编
缩编就是去掉javascript代码中的空格和换行符,从而减小文件大小的目的。我们可以使用JSMin来进行代码缩编。
JSMIN的安装
安装node
安装npm
安装JSMIN
命令行:npm install -g jsmin
(相信现在的前端对node应该都是不陌生的,这里我就不做详细介绍,如果没了解过的建议去学一学)
JSMIN的使用
命令:jsmin -o 新文件名.js 要执行的js文件.js
例如:jsmin -o jsmin.js bootstrap.js

这里我用了bootstrap没有压缩过的bootstrap.js文件,可以看到,小了31.9%。
二、混淆
混淆是比更加高级的一种优化js代码的方法,他不仅能够去掉空格和换行,他还把一些全局变量或者是全局函数的名字重新定义为简短的名称。我们可以使用UglifyJS来进行代码混淆
UglifyJS的安装
安装node
安装npm
安装UglifyJS
命令行:npm install -g uglify-js
(又是node了,你知道它多方便了没-。-)
UglifyJS的使用
UglifyJS我主要两种使用,第一种是直接-o属性,和jsmin差不多,就去掉空格和换行。还是用bootstrap。
命令:uglifyjs 要执行的文件.js -o 生成的文件名.js
例如:uglifyjs bootstrap.js -o uglifyjs.js

可以看到也是减小了,但是和jsmin的效果是差不多的。
第二种是加-m属性的,这个属性可以让一些变量被重命名,这样将大大的减少js文件的大小。还是用bootstrap.js来实验。(-o后面一定要跟生成的文件)
命令:uglifyjs 要执行的文件.js -m -o 生成的文件名.js
例如:uglifyjs bootstrap.js -o uglifyjs.js

可以看到缩小了44.9%,比前两个缩小了更加多的大小。
三、总结:
这就是缩小js大小的两个方法,对于小的js文件来说,用什么其实差不多,对于比较庞大的js文件,那时用最后的方法比较的好。但是要求你的代码有一定要求,才不会再被进行重命名后引起了变量的冲突。还有一种GCC(Google Closure Compiler),这种可以更加的缩小js代码的量,更大规模更加的明显。但是我技术还差点,没法使用。

https://closure-compiler.appspot.com/home(可能需要翻墙)
这个网址就是GCC压缩的网站。之所以不使用他一个原因是要翻墙,还有一个原因是对代码的规范要求高,GCC在压缩之后破坏了原来了代码,如果没有很好的代码规范,将导致js文件出错。有兴趣的可以去百度一下。
缩小javascript文件大小之缩编、混淆的更多相关文章
- 如何在Visual Studio 2012中发布Web应用程序时自动混淆Javascript
同Java..NET实现的应用程序类似,Javascript编写的应用程序也面临一个同样的问题:源代码的保护.尽管对大多数Javascript应用公开源代码不算是很严重的问题,但是对于某些开发者来说, ...
- 12.06 JavaScript
任务 掌握JavaScript基础知识,能够使用JavaScript编写一些复杂度不大的交互功能. 任务: JavaScript基础 做完任务一的时候深深地感觉到自己的基础非常的薄弱,在这里再次感谢一 ...
- Javascript 相关文章 —— 性能
在 IBM Bluemix 云平台上开发并部署您的下一个应用. 开始您的试用 概览 无论当前 JavaScript 代码是内嵌还是在外链文件中,页面的下载和渲染都必须停下来等待脚本执行完成.JavaS ...
- 顶级的JavaScript框架、库、工具及其使用
几乎每隔一个星期,就有一个新的 JavaScript 库席卷网络社区!Web 社区日益活跃.多样,并在多个领域快速成长.想要研究每一个重要的 JavaScript 框架和库,是个不可能完成的任务.接下 ...
- 悟透JavaScript
要理解JavaScript,你得首先放下对象和类的概念,回到数据和代码的本原.前面说过,编程世界只有数据和代码两种基本元素,而这两种元素又有着纠缠不清的关系.JavaScript就是把数据和代码都简化 ...
- 悟透JavaScript(理解JS面向对象的好文章)
引子 编程世界里只存在两种基本元素,一个是数据,一个是代码.编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力. 数据天生就是文静的,总想保持自己固有的本色:而代码却天生活泼,总想改变这个 ...
- JavaScript 的性能优化:加载和执行
随着 Web2.0 技术的不断推广,越来越多的应用使用 javascript 技术在客户端进行处理,从而使 JavaScript 在浏览器中的性能成为开发者所面临的最重要的可用性问题.而这个问题又因 ...
- JavaScript的作用域和提升机制
JavaScript的作用域和提升机制 你知道下面的JavaScript代码执行时会输出什么吗? 1 2 3 4 5 6 7 8 var foo = 1; function bar() { i ...
- 《JavaScript模式》第2章 基本技巧
@by Ruth92(转载请注明出处) 第2章 基本技巧 一.编写可维护的代码 阅读性好 具有一致性 预见性好 看起来如同一个人编写 有文档 编写注释 编写 API 文档 @namespace:用于命 ...
随机推荐
- Python函数的冒泡排序、递归以及装饰器
函数的冒泡排序: 本质是,让元素换位置,逐个比较最终排序. 例1:实现a1,a2值互换: a1 = 123 a2 = 456 temp = a1 a1 = a2 a2 = temp print(a1) ...
- Google Maglev 牛逼的网络负载均衡器(转)
https://segmentfault.com/a/1190000009565788 Maglev 是什么 Maglev 是谷歌搞的一个工作在三层(IP层)的网络负载均衡器, 它是一个运行在普通的 ...
- CSS之字体样式
css字体样式 font-size:字号大小 font-size属性用于设置字号,该属性的值可以使用相对长度单位,也可以使用绝对长度单位.其中,相对长度单位比较常用,推荐使用像素单位px,绝对单位使用 ...
- 微信小程序强制横屏办法
最近想学习学习微信小程序开发,本着先设计,再查找具体实现的方法的想法,在进行数据统计时,想着竖屏展示数据会造成重叠,或者数据显示不全而用省略号代替的问题,所以计划采用横屏的方式显示数据表格. 搜索到两 ...
- Canvas 与 Image 相互转换
转换 Image为 Canvas 要把图片转换为Canvas(画板,画布),可以使用canvas元素 context 的drawImage方法: 代码如下: // 把image 转换为 canvas对 ...
- Mybatis学习笔记(二) —— mybatis入门程序
一.mybatis下载 mybaits的代码由github.com管理,下载地址:https://github.com/mybatis/mybatis-3/releases 下载完后的目录结构: 二. ...
- C#空接合操作符——??
操作符: ?? 用法:C = A ?? B; 解释:if(A != null){ C=A;} else{C=B} 类似三元运算符 :? 例子: Int32? num1=null; Int32? ...
- NYOJ144_小珂的苦恼_C++
题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=144 用扩展欧几里得定理判断是否有解即可,然后记得打上读入优化 扩展欧几里得算法:http:/ ...
- Ubuntu 安装 phpredis扩展
官网 https://github.com/phpredis/phpredis 下载->然后解压->上传服务器 /etc/phpredis 进行 cd /etc/phpredisphpiz ...
- docker基本命令日志
docker run - Run a command in a new container 启动一个新的容器,一般在docker pull之后首次运行此image -i 保持stdout打开 -t 打 ...