成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript 代碼優(yōu)化和部署——“性能和部署”的注意要點(diǎn)

Baaaan / 3132人閱讀

摘要:注意作用域避免全局查找以上代碼應(yīng)該修改如下避免語(yǔ)句必須使用語(yǔ)句的情況很少,因?yàn)樗饕糜谙~外的字符。將代碼分離稱多個(gè)文件只是為了提高可維護(hù)性,并非為了部署。要進(jìn)行部署的時(shí)候,需要將這些源代碼合并為一個(gè)或幾個(gè)歸并文件。

注意作用域 避免全局查找
function updateUI () {
    var images = document.getElementsByTagName("img");
    for (var i = 0, len = images.length; i < len; i++) {
        images[i].title = document.title + " image " + i;
    }
    var msg = document.getElementById("msg");
    msg.innerHTML = "Update complete";
}

以上代碼應(yīng)該修改如下:

function updateUI () {
    var doc = document; //doc
    var images = doc.getElementsByTagName("img");
    for (var i = 0, len = images.length; i < len; i++) {
        images[i].title = doc.title + " image " + i; //doc
    }
    var msg = doc.getElementById("msg"); //doc
    msg.innerHTML = "Update complete";
}
避免with語(yǔ)句

必須使用with語(yǔ)句的情況很少,因?yàn)樗饕糜谙~外的字符。

使用正確方法 避免不必要的屬性查找

算法的復(fù)雜度是使用O符號(hào)來(lái)表示的,最簡(jiǎn)單快速的算法是常熟值O(1)。

使用變量和數(shù)組要比訪問(wèn)對(duì)象上的屬性更有效率。

var query = window.location.href.substring(window.location.href.indexOf("?"));

上面的代碼需要6次屬性查找,應(yīng)該改為:

var url = window.location.href;
var query = url.substring(url.indexOf("?"));

上面的代碼則減少為4次屬性查找。

優(yōu)化循環(huán)
for (var i = 0; i < Things.length; i++) {
    Things[i]
};
for (var i = Things.length - 1; i >= 0; i--) {
    Things[i]
};

應(yīng)該才去上面第二種寫法。

var id = Things.length - 1;
if (i > -1) {
    do {
        Things[i];
    } while (--i >= 0);
}

或者把循環(huán)改成后測(cè)試循環(huán)。

展開(kāi)循環(huán)

使用Duff裝置

其他

避免雙重解釋

用原生方法C或C++等

用Switch代替if-else

位操作符代替布爾運(yùn)算和算數(shù)運(yùn)算

最小化語(yǔ)句數(shù) 多個(gè)變量聲明
var count = 5;
var color = "red";
var value = [21, 3, 21, 4];

var count = 5,
    color = "red",
    value = [21, 3, 21, 4];

應(yīng)該采用下面的方法

使用數(shù)組和對(duì)象字面量語(yǔ)法
var values = new Array();
values[0] = 123;
values[1] = 456;
var obj = new Object();
obj.name = "Oli";
obj.age = 18;

var values = [123, 456];
var obj = {
    name: "Oli",
    age: 18
};

應(yīng)該采用下面的方法

優(yōu)化DOM交互 最小化現(xiàn)場(chǎng)更新

使用fragment方法更新DOM

使用innerHTML
var list = document.getElementById("myList"),
    html = "",
    i;
for (var i = 10; i >= 0; i--) {
    html = html + "
  • listing...
  • "; }; list.innerHTML = html;

    類似fragment方法,要避免以下寫法:

    var list = document.getElementById("myList"),
        i;
    for (var i = 10; i >= 0; i--) {
        list.innerHTML = list.innerHTML + "
  • listing...
  • "; };
    使用事件代理

    任何可以冒泡的事件都可以在祖先節(jié)點(diǎn)上處理事件;

    注意HTMLCollection
    var imgs = document.getElementsByTagName("img");
    for (var i = 0, len = imgs.length; i < len; i++) {
        //processing...
    };
    
    部署 構(gòu)建過(guò)程

    將每個(gè)對(duì)象或自定義類型分別放在多帶帶的文件中。

    將代碼分離稱多個(gè)文件只是為了提高可維護(hù)性,并非為了部署。

    要進(jìn)行部署的時(shí)候,需要將這些源代碼合并為一個(gè)或幾個(gè)歸并文件。

    Ant構(gòu)建工具(http://ant.apache.org)

    驗(yàn)證

    用JSLint(http://www.jslint.com)

    壓縮 文件壓縮

    使用YUI壓縮器(http://yuilibrary.com/projects/yuicompressor)

    HTTP壓縮

    在Apache Web服務(wù)器中可以用下面兩個(gè)模塊進(jìn)行HTTP壓縮:mod_gzip和mod_deflate

    文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

    轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/78960.html

    相關(guān)文章

    • JavaScript 代碼優(yōu)化部署——“可維護(hù)性”注意要點(diǎn)

      摘要:代碼約定可讀性以下地方需要進(jìn)行注釋函數(shù)和方法注釋參數(shù)代表什么,是否有返回值大段代碼描述任務(wù)的注釋復(fù)雜的算法變量和函數(shù)命名變量用名詞函數(shù)名用動(dòng)詞開(kāi)頭等返回布爾值類型的函數(shù)用等合乎邏輯不用擔(dān)心太長(zhǎng)變量類型透明化方法一初始化,如下推薦方法二匈牙利 代碼約定 可讀性 以下地方需要進(jìn)行注釋: 函數(shù)和方法:注釋參數(shù)代表什么,是否有返回值; 大段代碼:描述任務(wù)的注釋; 復(fù)雜的算法; Hack 變...

      scwang90 評(píng)論0 收藏0
    • Javascript內(nèi)存注意要點(diǎn)

      摘要:垃圾收集具有自動(dòng)垃圾收集機(jī)制。管理內(nèi)存優(yōu)化內(nèi)存的最佳方式,就是為執(zhí)行中的代碼只保存必要的數(shù)據(jù)。一般適用于大多數(shù)的全局變量和全局對(duì)象的屬性。如執(zhí)行完畢后,變量被銷毀手動(dòng)解除的引用解除一個(gè)值的引用并不意味著自動(dòng)回收該值所占的內(nèi)存。 垃圾收集 JavaScript 具有自動(dòng)垃圾收集機(jī)制。 標(biāo)記清除 JavaScript 中最常用的垃圾收集方式是標(biāo)記清除。 當(dāng)變量進(jìn)入環(huán)境(如在函數(shù)中聲明一個(gè)...

      liaosilzu2007 評(píng)論0 收藏0
    • JavaScript 客戶端檢測(cè)——“能力檢測(cè)”注意要點(diǎn)

      摘要:能力檢測(cè)性能檢測(cè)基本模式語(yǔ)法目標(biāo)不是識(shí)別特定的瀏覽器,而是識(shí)別瀏覽器的能力。更可靠的能力檢測(cè)能力檢測(cè)對(duì)于想知道某個(gè)特性是否會(huì)按照適當(dāng)方式行事非常有用。所以在可能的情況下,要盡量使用進(jìn)行能力檢測(cè)。 客戶端檢測(cè) 不到萬(wàn)不得已,就不要使用客戶端檢測(cè)。只要能夠找到更通用的方法,就應(yīng)該優(yōu)先采用更通用的方法。先設(shè)計(jì)最通用的方案,然后再使用特定于瀏覽器的技術(shù)增強(qiáng)該方案。 能力檢測(cè)(性能檢測(cè)) 基本模...

      Pluser 評(píng)論0 收藏0
    • 編寫高質(zhì)量Javascript要點(diǎn)-Review深入理解Javascript系列(一)

      摘要:編寫高質(zhì)量的要點(diǎn)深入理解系列一知識(shí)點(diǎn)最小全局變量全局變量命名易與第三方的腳本引起沖突所以盡可能少的使用全局變量是很重要的相關(guān)策略有命名空間模式或是函數(shù)立即自動(dòng)執(zhí)行,但是要想讓全局變量少最重要的還是始終使用來(lái)聲明變量。 Title: 編寫高質(zhì)量Javascript的要點(diǎn)-Review深入理解Javascript系列(一)date: 2017-6-9 14:14:20 status: p...

      wh469012917 評(píng)論0 收藏0
    • JavaScript函數(shù)表達(dá)式——“函數(shù)遞歸閉包”注意要點(diǎn)

      摘要:如調(diào)用函數(shù)聲明函數(shù)不會(huì)報(bào)錯(cuò)使用函數(shù)表達(dá)式則不可以報(bào)錯(cuò)創(chuàng)建函數(shù)的兩種方式,一個(gè)是函數(shù)聲明如第一種方式一個(gè)是函數(shù)表達(dá)式如第二種方式。第二種函數(shù)創(chuàng)建方式創(chuàng)建的函數(shù)叫匿名函數(shù)或拉姆達(dá)函數(shù),因?yàn)殛P(guān)鍵字后面沒(méi)有標(biāo)識(shí)符。 函數(shù)表達(dá)式的基本概念 name屬性和函數(shù)提升 首先,name屬性,通過(guò)這個(gè)屬性可以訪問(wèn)到給函數(shù)指定的名字。(非標(biāo)準(zhǔn)的屬性)如: function People(){}; cons...

      winterdawn 評(píng)論0 收藏0

    發(fā)表評(píng)論

    0條評(píng)論

    最新活動(dòng)
    閱讀需要支付1元查看
    <