缩小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:用于命 ...
随机推荐
- 关于javascript数据存储机制的一个案例。
之前在学习js的结合性的时候,我有点不太明白,在网上找到一个比较经典的C语言优先级结合性的案例,就是下边这一个.本想在js之中测试一番,结果竟然发现得出的结果和网上的不一样,这令我百思不得其解,后经高 ...
- socket 中read返回0的情况
当client,调用read(socketfd,buffer,n)时,返回0的情况: 1.server端调用了close(soketfd)函数 2.server调用了close(fd,SHUT_WR) ...
- mongoDB3.4安装
添加官方yum源——mongodb3.4vim /etc/yum.repos.d/mongodb-org-3.4.repo [mongodb-org-3.4] name=MongoDB Reposit ...
- POJ1057 FILE MAPPING
题目来源:http://poj.org/problem?id=1057 题目大意:计算机的用户通常希望能够看到计算机存储的文件的层次结构的图形化表示.Microsoft Windows的 " ...
- java Response 设置中文编码
response.setHeader("Content-type", "text/html;charset=UTF-8"); response.setChara ...
- C语言标准库函数memcpy和memmove的区别以及内存重叠问题处理
①memcpy()和memmove()都是C语言中的标准库函数,定义在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下: void *memcpy(void *dst, cons ...
- Python学习笔记_零碎知识
1. 变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言.静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错. 2. Python有两种除法: /除法计算结果是浮点数, ...
- Eclipse + Git + 码云
1. 进入码云个人首页 点击自己的名称即可 2. 添加一个项目 3. 在Eclipse中创建一个本地Git Eclipse不建议git目录创建在项目的目录下,因此另选一个目录作为本地Git目录 选择一 ...
- 几种经过整理的文件上传压缩和前台js压缩的方法
/** * 图片压缩上传 * @param $im,图片资源 * @param int $maxwidth,最大宽度,超过这个宽度则进行压缩 * @param int $maxheight,最大高度, ...
- java——如何通过class调用该类的方法并获得返回值?(反射)
demo: public class T{ public static void main(String[] args) throws Exception{ //获得Person的Class对象 Cl ...