日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ngCloak 实现 Angular 初始化闪烁最佳实践

發布時間:2024/4/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ngCloak 实现 Angular 初始化闪烁最佳实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在做angular的SPA開發時,我們經常會遇見在如Chrome這類能夠快速解析的瀏覽器上出現表達式({{ express }} ),或者是模塊(div)的閃爍。對于這個問題由于JavaScript去操作DOM,都會等待DOM加載完成(DOM ready)。對于angular會在DOM ready完會才回去解析html view Template,所以對于Chrome這類快速的瀏覽器你會看見有閃爍的情況出現。而對于IE7,8這類解析稍慢的瀏覽器大部分情況下是不會出現這個問題的。

在angular中為我們提供了ng-cloak來實現紡織閃爍的方案,我們只需要在需要的地方加上ng-cloak。同時對于bing文字({{ express }} )我們也可以改為ng-bind來實現避免。

<div id="template1" ng-cloak>hello</div><div id="template2" ng-cloak class="ng-cloak"> {{'hello IE7}}</div><div id="template2" ng-bing="'hello IE7'"></div>

angular講ng-cloak實現為一個directive,并會在初始化的時候在DOM的heade增加一行css代碼,如下:

<style type="text/css">@charset "UTF-8";[ng\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\:form{display:block;}.ng-animate-start{clip:rect(0,auto,auto,0);-ms-zoom:1.0001;}.ng-animate-active{clip:rect(-1px,auto,auto,0);-ms-zoom:1;} </style>

從上面我們可以看見angular將帶有ng-clock的的元素設置為display:none,隱藏掉,在等到angular解析到帶有ng-clock的節點時候,會把attribute和class同時remove掉,這樣就可以實現防止節點的閃爍。

var ngCloakDirective = ngDirective({compile: function(element, attr) {attr.$set('ngCloak', undefined);element.removeClass('ng-cloak');} });

在angular.js的最后一段代碼中能看見前面所說的增加css的代碼:

!angular.$$csp() && angular.element(document).find('head').prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}</style>');

好像閃爍的問題好像已經能夠被我解決了,恩是否是這樣的,理論也改如此,但是現實是殘酷的,我們的感性認識經常會被現實一記重重的耳光,我們才能很更深入全面的思考,如果瀏覽器的速度比angular在head中加入css的速度還快呢?我在給公司的一個項目組解決這個閃爍的問題的時候就遇見了這個問題。怎么辦呢?那我們只能使出我們必殺技,自己把css加入我們的css文件引入heade,啟動加載,ok這樣就可以完美解決了。(如果你也遇見了加了ng-cloak還不起作用的話,那么試試直接引入css文件吧)

到這里關于ng-cloak的原理和解決方案已經完成,歡迎繼續關注angular的后續經驗篇分享。

總結

以上是生活随笔為你收集整理的ngCloak 实现 Angular 初始化闪烁最佳实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。