写前端的相信都遇到过要提高网页的性能,其中javascript文件越小,浏览器的下载速度面对文件的读取和解析就更快。而一般我们在开发又需要一定的代码规范来使我们的代码更加的容易维护和读懂,但是大量空格和换行又会加大文件的大小,所以在发布时进行缩编或者混淆可以减小javascript的大小,提高效率。

一、缩编

缩编就是去掉javascript代码中的空格和换行符,从而减小文件大小的目的。我们可以使用JSMin来进行代码缩编。

JSMIN的安装

  1. 安装node

  2. 安装npm

  3. 安装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的安装

  1. 安装node

  2. 安装npm

  3. 安装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文件大小之缩编、混淆的更多相关文章

  1. 如何在Visual Studio 2012中发布Web应用程序时自动混淆Javascript

    同Java..NET实现的应用程序类似,Javascript编写的应用程序也面临一个同样的问题:源代码的保护.尽管对大多数Javascript应用公开源代码不算是很严重的问题,但是对于某些开发者来说, ...

  2. 12.06 JavaScript

    任务 掌握JavaScript基础知识,能够使用JavaScript编写一些复杂度不大的交互功能. 任务: JavaScript基础 做完任务一的时候深深地感觉到自己的基础非常的薄弱,在这里再次感谢一 ...

  3. Javascript 相关文章 —— 性能

    在 IBM Bluemix 云平台上开发并部署您的下一个应用. 开始您的试用 概览 无论当前 JavaScript 代码是内嵌还是在外链文件中,页面的下载和渲染都必须停下来等待脚本执行完成.JavaS ...

  4. 顶级的JavaScript框架、库、工具及其使用

    几乎每隔一个星期,就有一个新的 JavaScript 库席卷网络社区!Web 社区日益活跃.多样,并在多个领域快速成长.想要研究每一个重要的 JavaScript 框架和库,是个不可能完成的任务.接下 ...

  5. 悟透JavaScript

    要理解JavaScript,你得首先放下对象和类的概念,回到数据和代码的本原.前面说过,编程世界只有数据和代码两种基本元素,而这两种元素又有着纠缠不清的关系.JavaScript就是把数据和代码都简化 ...

  6. 悟透JavaScript(理解JS面向对象的好文章)

    引子 编程世界里只存在两种基本元素,一个是数据,一个是代码.编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力. 数据天生就是文静的,总想保持自己固有的本色:而代码却天生活泼,总想改变这个 ...

  7. JavaScript 的性能优化:加载和执行

    随着 Web2.0 技术的不断推广,越来越多的应用使用 javascript 技术在客户端进行处理,从而使 JavaScript 在浏览器中的性能成为开发者所面临的最重要的可用性问题.而这个问题又因 ...

  8. JavaScript的作用域和提升机制

    JavaScript的作用域和提升机制 你知道下面的JavaScript代码执行时会输出什么吗? 1 2 3 4 5 6 7 8 var foo = 1; function bar() {     i ...

  9. 《JavaScript模式》第2章 基本技巧

    @by Ruth92(转载请注明出处) 第2章 基本技巧 一.编写可维护的代码 阅读性好 具有一致性 预见性好 看起来如同一个人编写 有文档 编写注释 编写 API 文档 @namespace:用于命 ...

随机推荐

  1. java读取 500M 以上文件,java读取大文件

    java 读取txt,java读取大文件 设置缓存大小BUFFER_SIZE ,Config.tempdatafile是文件地址 来源博客http://yijianfengvip.blog.163.c ...

  2. Mysql安装(Mac)

    1.安装mysql(百度详解) 2.打开终端 3.输入vim ~/.bash_profile 4.在最后加上PATH=$PATH:/usr/local/mysql/bin 5.按esc,然后输入 :w ...

  3. SpriteBuilder 不能对设置spriteframe的sprite进行设置dynamic Physics解决办法

    可能spriteBuilder是最新推出 cocos2d 可视化,在学习过程中遇到一些Bug,比如你对一个精灵设置了一个动画帧(spriteframe),这并不会改变他的物理属性,正常来说是可以设置他 ...

  4. 教主的花园 dp

    题目描述 教主有着一个环形的花园,他想在花园周围均匀地种上n棵树,但是教主花园的土壤很特别,每个位置适合种的树都不一样,一些树可能会因为不适合这个位置的土壤而损失观赏价值. 教主最喜欢333种树,这3 ...

  5. Python-6-字典-函数dict,字典的基本操作及将字符串设置功能用于字典

    phonebook = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} 字典由键及其相应的值组成,这种键-值对称为项. 键必须为独一无二,值不必如 ...

  6. HDU 1565 方格取数(简单状态压缩DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=1565 对于每一个数,取或者不取,用0表示不取,1表示取,那么对于每一行的状态,就可以用一个二进制的数来表示.比如 ...

  7. UVA 10806

    #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> us ...

  8. 一些不常见的css知识

    margin-top:20%  ----------------20% 是宽度的20%

  9. 查看SQL SERVER Job details

    SELECT [sJOB].[job_id] AS [JobID] , [sJOB].[name] AS [JobName] , [sDBP].[name] AS [JobOwner] , [sCAT ...

  10. my.ZC

    1.100级,裸身,满技能,属性模拟 数据:   大唐 方寸 化生 龙宫 普陀 地府 狮驼 魔王   气血 1200 1900 2600 1200 2600 2600 1900 1900   魔法 7 ...