mg4377娱乐娱城官网_mg4377娱乐手机版_www.mg4377.com

当前位置: mg4377娱乐娱城官网 > www.mg4377.com > 正文

AngularJS压缩JS手艺剖判,3有的技艺

时间:2019-06-29 07:37来源:www.mg4377.com
正文实例陈说了AngularJS压缩JS的操作才能。分享给大家供我们参照他事他说加以考察,具体如下: 前言 HTML、JavaScript的回降和歪曲。去掉空格、裁减变量名,让js、html尺寸越来越小,升

正文实例陈说了AngularJS压缩JS的操作才能。分享给大家供我们参照他事他说加以考察,具体如下:

前言

HTML、JavaScript的回降和歪曲。去掉空格、裁减变量名,让js、html尺寸越来越小,升高下载速度。
HTML、JS压缩、混淆有动态和静态二种方案。HTML压缩器,比方HTML Compress,JavaScript压缩工具:Google Closure Compiler、YUI Compressor 等(英特网教程一大堆)。
诸多js库都提供了.min.js、compress.js的滑坡版本。

一、旧事总有其背景

年根儿将至,繁多闲适的大运,于是刷刷和讯,接触种种纷杂的新闻——美其名曰“学习”。运气不错,境遇了三个新名词,uglifyjs. 故事是用来压缩JS文件的,听说还能够优化JS,传闻是基于node的,还据书上说比Google Closure Compiler更带感,哦?激起了自己的好奇心。百之谷之,哟,相关的牵线还非常的多。然后揉搓了个把时辰,基本上知道了是个怎么回事。

笔者感到呢,如故某个用的,就算是否从业node开垦的人,抽个小空,share之,于是就有了本文。人总有慢性的时候,小编也不例外,uglifyjs内部浓厚的运维是什么样的,唉,笔者是精疲力尽,不想去折腾,所以,本文更加多是栖息在选择规模。可是嘛,这样反而受众面广一些。终究喜欢看《泰囧》的人要比《一代宗师》的多。

AngularJS压缩JS手艺剖判,3有的技艺。超越一半web项目在揭发时候都会对js代码进行削减,目标是为了减弱js文件的分寸,节省一点流量。

     框架采取。在上一篇文章斟酌中,有一些人讲angular1.3是个过时的东西,提议使用angular2。其实这种说法很像拿jQuery1.x和jQuery2.x做相比,新的本子当然会有优化优势的地点,但并不一定是最符合你项指标。当您项目必须协助IE6/7/8时,那又得使用jQuery1.x本子。所以不用以新不新去选拔三个框架或然有个别版本,而是看是还是不是顺应的。当初用angular1.3是他相比成熟有配套的文书档案,而angular2的文书档案是不完善的,此外有几许是1.x与2.x的分别太大了,两者的用法未有承继性。更要紧的是,近来的angular2唯有Alpha版本(测验),并不曾多少个典型版本。

压缩一般步骤:

二、node相关的固定流程

凡事谈起node应用,无非免不了类似上边包车型客车流水生产线:

  1. 安装node
  2. 安装nmpnpm
  3. 安装当前利用 – uglifyjs

前四个网络太多表示了,笔者事先也讲过,sorry, 作者很懒。
uglifyjs安装如下code:

npm install uglify-js -g

二个回车,于是打炮,就有下图所示的东东:
图片 1

于是,下边就能够减小JS了。

它的规律很简短,正是对参数及片段变量名和函数实行重命名。

     品质。有些人讲angular2的品质会相比好,小编还尚无用过,不做什么样批评。但对于angular1.x,笔者真正是不放心它的品质的,作为PC Web小编敢用angular,但在活动终端作者不敢用,在作者眼里无论从框架体量或框架运转功能,在虚亏的移位端皆乃至命的。有局地基于angular做的Hybrid框架(例Ionic),希望利用过的人能告诉自身它体验怎么着(品质上)。

1.安装jdk
2.配置景况变量(path)
3.初阶缩减。

三、uglifyjs JS压缩

uglifyjs压缩有广大的参数,详见其github托管项目。当中有一部分可选参数,如下一些截图:
图片 2

怎么美化压缩,空格多少长度,变量名是还是不是成为短名字等……您有乐趣能够自个儿去探望,若是明天不是周天,固然不是要赶回去买菜,作者就能翻译下的——诸位,请见谅本人吧,阿门!

下边演示如何利用uglifyjs压缩JS.

笔者的桌面上有个称呼formini的文书夹,作者会把要缩减的文本放在里面,然后再压缩。今后,作者从里边拷贝了三个堪称inet.js的JS文件到这几个文件夹中,然后:

  1. 开采cmd, 这一个不会自己就从不主意了
  2. 目录引到formini文件夹,cd 然后怎么样怎么的,那些不会本身也未曾主意了
  3. 如下代码:

    uglifyjs inet.js -o inet-min.js
    
  4. 再运维如下代码,测量试验-m可选参数:

    uglifyjs inet.js -m -o inet.min.js
    

    正如截图:
    图片 3

哦啦,以往正是看结果了,见下截图:
图片 4

90K的是尚未运转-m参数的,70K(69.4)的是运营的。-m参数所以正是把变量名产生a, b, c, d, ...

从实质上选择角度讲,上线的JS显明要削减变量,减小一定的文件尺寸。

跟YUICompressor比较,大小只小了0.6K, 可是网络反映uglifyjs比较YUI压缩很分明,我这边的高低仅优化了0.6÷174=0.345%,那只可以表明我写的代码还算相比优化,哈哈(突然想起了相恋的人的话,不要得瑟,深呼吸……深呼吸……)!
图片 5

唯独这种工作措施在AngularJS的行使中会有例外。

 

使用谷歌 Closeure Compiler(先安装jdk配置好碰到变量(path))

四、uglifyjs压缩批管理

大家不容许每一回都开采cmd去键入压缩推行代码,轻巧写错不说(如上边十一分结果图),还耗时,想想都会令人疯掉。懒人有懒法,花了点功夫,折腾了四个批处理文件,今后,想要压缩JS,只要双击运转那么些.bat文件就能够了!完整代码如下:

@echo off
:: 设置压缩JS文件的根目录,脚本会自动按树层次查找和压缩所有的JS
SET JSFOLDER=C:UsersAdministratorDesktopformini
echo 正在查找JS文件
chdir /d %JSFOLDER%
for /r . %%a in (*.js) do (
    @echo 正在压缩 %%~a ...
    uglifyjs %%~fa  -m -o %%~fa
)
echo 完成!
pause & exit

新建多个txt文档,任性命名,将方面的代码粘贴进去,修改JSFOLDER末端的公文夹目录为您本身的,然后把.txt后缀改成.bat就足以啊!然后双击即可批量用到uglifyjs压缩JS文件啦!

是因为AngularJS的借助注入是依据参数名进行注入的,鲜明,对参数实行重命名会破坏这几个机制。

有的技巧

在dos下运行:
java -jar compiler.jar(要运维的软件) --js hello.js(要缩小的公文) --js_output_file helloc.js(压缩后的文书名)

四、结束语

对此自身来讲,本文内容算作备忘。近期来讲,小编要么uglifyjs无法压缩CSS文件。然而嘛,掌握下总会有协理的。行文匆忙,文中假如有发布不正确的位置接待指正。

若是不开始展览出格管理,进行削减(minify)之后,在实践时将会油不过生如此的错误

     那篇小说记录一些angular1.3的小才干,angular2笔者会找个小时做个推行。

YUI Compressor 使用指南

Unknow provider: aProvider<-a

1. ng-repeat五个字段排序的写法

对此这种不当的法定解释是:找不到依附的劳务

动用orderBy过滤器,第三个参数是三个数组,表示依次按数组中的属性值举行排序(若按第一项相比较的值卓越,再按第二项比较),第二个参数是正序依旧倒序(暗许是正序)。

也便是说这种借助注入会冒出错误。

ng-repeat="groupUser in groupUsers | orderBy:['isOwner','isAdmin']:true"

万幸AngularJS内置了一种标准机制来管理这一个难点.

 

最简便也最广泛的方法正是用数组代替函数。如:

2. ng-include引入HTML片段

.controller('RegisterCtrl', ['$scope', '$interval', '$timeout', function ($scope, $interval, $timeout) {
  //do something
}]);

利用ng-include,第一个参数是页面包车型客车争辩地址的字符串。应该专注,是三个字符串,不是ng-expression,所以不用忘了加单引号,不然会开掘怎么都引不进那个HTML片段。

数组的末梢三个因素始终是壹个函数,而日前多少个参数都以字符串,和那一个函数中的参数一一对应。

<div ng-include="'msgs.html'"></div>

另一种方式就是所谓的Annotation情势。

 

var objCtrl = function($scope, $timeout, $interval){
  // do something
}
//给objCtrl函数增加一个$inject属性,它是一个数组,定义了需要被注入的对象
objCtrl.$inject = ['$scope', '$interval', '$timeout'];

3. ng-bind的$scope对象未有随着数据变化而更换

编辑:www.mg4377.com 本文来源:AngularJS压缩JS手艺剖判,3有的技艺

关键词: 3.前端框架 gulp