AngularJS壓縮JS技巧分析
本文實(shí)例講述了AngularJS壓縮JS的操作技巧。分享給大家供大家參考,具體如下:
大多數(shù)web項(xiàng)目在發(fā)布時(shí)候都會(huì)對(duì)js代碼進(jìn)行壓縮,目的是為了減少js文件的大小,節(jié)省一點(diǎn)流量。
它的原理很簡(jiǎn)單,就是對(duì)參數(shù)及部分變量名和函數(shù)進(jìn)行重命名。
但是這種工作方式在AngularJS的應(yīng)用中會(huì)有例外。
由于AngularJS的依賴注入是根據(jù)參數(shù)名進(jìn)行注入的,顯然,對(duì)參數(shù)進(jìn)行重命名會(huì)破壞這個(gè)機(jī)制。
如果不進(jìn)行特殊處理,進(jìn)行壓縮(minify)之后,在執(zhí)行時(shí)將會(huì)出現(xiàn)這樣的錯(cuò)誤
Unknow provider: aProvider<-a
對(duì)于這種錯(cuò)誤的官方解釋是:找不到依賴的服務(wù)
也就是說這種依賴注入會(huì)出現(xiàn)錯(cuò)誤。
好在AngularJS內(nèi)置了一種標(biāo)準(zhǔn)機(jī)制來處理這個(gè)問題.
最簡(jiǎn)單也最常見的方式就是用數(shù)組代替函數(shù)。如:
.controller('RegisterCtrl', ['$scope', '$interval', '$timeout', function ($scope, $interval, $timeout) { //do something }]);
數(shù)組的最后一個(gè)元素始終是一個(gè)函數(shù),而前面幾個(gè)參數(shù)都是字符串,和這個(gè)函數(shù)中的參數(shù)一一對(duì)應(yīng)。
另一種形式便是所謂的Annotation方式。如
var objCtrl = function($scope, $timeout, $interval){ // do something } //給objCtrl函數(shù)增加一個(gè)$inject屬性,它是一個(gè)數(shù)組,定義了需要被注入的對(duì)象 objCtrl.$inject = ['$scope', '$interval', '$timeout'];
這里的依賴注入形式不僅限于Controller,一切需要DI(依賴注入的directive、factory、services等)都可以采用這兩種方式。
希望本文所述對(duì)大家AngularJS程序設(shè)計(jì)有所幫助。
相關(guān)文章
angular6.0開發(fā)教程之如何安裝angular6.0框架
這篇文章主要介紹了angular6.0開發(fā)教程之如何安裝angular6.0框架,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06Angularjs實(shí)現(xiàn)數(shù)組隨機(jī)排序的方法
今天小編就為大家分享一篇Angularjs實(shí)現(xiàn)數(shù)組隨機(jī)排序的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10在angularJs中進(jìn)行數(shù)據(jù)遍歷的2種方法
今天小編就為大家分享一篇在angularJs中進(jìn)行數(shù)據(jù)遍歷的2種方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10Angular中Lazy Loading懶加載陷阱避坑最佳實(shí)踐
這篇文章主要為大家介紹了Angular中Lazy Loading懶加載陷阱避坑最佳實(shí)踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10AngularJs導(dǎo)出數(shù)據(jù)到Excel的示例代碼
本篇文章主要介紹了AngularJs導(dǎo)出Excel的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08