国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript編碼規(guī)范 2

yankeys / 2569人閱讀

摘要:指定參數(shù)為可以獲得所有子元素。如需多次操作同一集合,則應(yīng)將集合轉(zhuǎn)為數(shù)組。示例顯示為顯示為建議獲取元素的直接子元素時(shí)使用。建議盡量減少操作。事件建議優(yōu)先使用綁定事件,避免直接在屬性中或的屬性綁定事件處理。而的僅支持冒泡的事件觸發(fā)。

轉(zhuǎn)載:原地址

4 瀏覽器環(huán)境 4.1 模塊化 4.1.1 AMD
[強(qiáng)制] 使用 AMD 作為模塊定義。

解釋:

AMD 作為由社區(qū)認(rèn)可的模塊定義形式,提供多種重載提供靈活的使用方式,并且絕大多數(shù)優(yōu)秀的 Library 都支持 AMD,適合作為規(guī)范。

目前,比較成熟的 AMD Loader 有:

官方實(shí)現(xiàn)的 requirejs

百度自己實(shí)現(xiàn)的 esl

[強(qiáng)制] 模塊 id 必須符合標(biāo)準(zhǔn)。

解釋:

模塊 id 必須符合以下約束條件:

類型為 string,并且是由 / 分割的一系列 terms 來(lái)組成。例如:this/is/a/module

term 應(yīng)該符合 [a-zA-Z0-9_-]+ 規(guī)則。

不應(yīng)該有 .js 后綴。

跟文件的路徑保持一致。

4.1.2 define
[建議] 定義模塊時(shí)不要指明 iddependencies

解釋:

在 AMD 的設(shè)計(jì)思想里,模塊名稱是和所在路徑相關(guān)的,匿名的模塊更利于封包和遷移。模塊依賴應(yīng)在模塊定義內(nèi)部通過(guò) local require 引用。

所以,推薦使用 define(factory) 的形式進(jìn)行模塊定義。

示例:

javascriptdefine(
    function (require) {
    }
);
[建議] 使用 return 來(lái)返回模塊定義。

解釋:

使用 return 可以減少 factory 接收的參數(shù)(不需要接收 exports 和 module),在沒(méi)有 AMD Loader 的場(chǎng)景下也更容易進(jìn)行簡(jiǎn)單的處理來(lái)偽造一個(gè) Loader。

示例:

javascriptdefine(
    function (require) {
        var exports = {};

        // ...

        return exports;
    }
);
4.1.3 require
[強(qiáng)制] 全局運(yùn)行環(huán)境中,require 必須以 async require 形式調(diào)用。

解釋:

模塊的加載過(guò)程是異步的,同步調(diào)用并無(wú)法保證得到正確的結(jié)果。

示例:

javascript// good
require(["foo"], function (foo) {
});

// bad
var foo = require("foo");
[強(qiáng)制] 模塊定義中只允許使用 local require,不允許使用 global require

解釋:

在模塊定義中使用 global require,對(duì)封裝性是一種破壞。

在 AMD 里,global require 是可以被重命名的。并且 Loader 甚至沒(méi)有全局的 require 變量,而是用 Loader 名稱做為 global require。模塊定義不應(yīng)該依賴使用的 Loader。

[強(qiáng)制] Package在實(shí)現(xiàn)時(shí),內(nèi)部模塊的 require 必須使用 relative id

解釋:

對(duì)于任何可能通過(guò) 發(fā)布-引入 的形式復(fù)用的第三方庫(kù)、框架、包,開(kāi)發(fā)者所定義的名稱不代表使用者使用的名稱。因此不要基于任何名稱的假設(shè)。在實(shí)現(xiàn)源碼中,require 自身的其它模塊時(shí)使用 relative id。

示例:

javascriptdefine(
    function (require) {
        var util = require("./util");
    }
);
[建議] 不會(huì)被調(diào)用的依賴模塊,在 factory 開(kāi)始處統(tǒng)一 require

解釋:

有些模塊是依賴的模塊,但不會(huì)在模塊實(shí)現(xiàn)中被直接調(diào)用,最為典型的是 css / js / tpl 等 Plugin 所引入的外部?jī)?nèi)容。此類內(nèi)容建議放在模塊定義最開(kāi)始處統(tǒng)一引用。

示例:

javascriptdefine(
    function (require) {
        require("css!foo.css");
        require("tpl!bar.tpl.html");

        // ...
    }
);
4.2 DOM 4.2.1 元素獲取
[建議] 對(duì)于單個(gè)元素,盡可能使用 document.getElementById 獲取,避免使用document.all
[建議] 對(duì)于多個(gè)元素的集合,盡可能使用 context.getElementsByTagName 獲取。其中 context 可以為 document 或其他元素。指定 tagName 參數(shù)為 * 可以獲得所有子元素。
[建議] 遍歷元素集合時(shí),盡量緩存集合長(zhǎng)度。如需多次操作同一集合,則應(yīng)將集合轉(zhuǎn)為數(shù)組。

解釋:

原生獲取元素集合的結(jié)果并不直接引用 DOM 元素,而是對(duì)索引進(jìn)行讀取,所以 DOM 結(jié)構(gòu)的改變會(huì)實(shí)時(shí)反映到結(jié)果中。

示例:

html

[建議] 獲取元素的直接子元素時(shí)使用 children。避免使用childNodes,除非預(yù)期是需要包含文本、注釋和屬性類型的節(jié)點(diǎn)。
4.2.2 樣式獲取
[建議] 獲取元素實(shí)際樣式信息時(shí),應(yīng)使用 getComputedStylecurrentStyle

解釋:

通過(guò) style 只能獲得內(nèi)聯(lián)定義或通過(guò) JavaScript 直接設(shè)置的樣式。通過(guò) CSS class 設(shè)置的元素樣式無(wú)法直接通過(guò) style 獲取。

4.2.3 樣式設(shè)置
[建議] 盡可能通過(guò)為元素添加預(yù)定義的 className 來(lái)改變?cè)貥邮剑苊庵苯硬僮?style 設(shè)置。
[強(qiáng)制] 通過(guò) style 對(duì)象設(shè)置元素樣式時(shí),對(duì)于帶單位非 0 值的屬性,不允許省略單位。

解釋:

除了 IE,標(biāo)準(zhǔn)瀏覽器會(huì)忽略不規(guī)范的屬性值,導(dǎo)致兼容性問(wèn)題。

4.2.4 DOM 操作
[建議] 操作 DOM 時(shí),盡量減少頁(yè)面 reflow

解釋:

頁(yè)面 reflow 是非常耗時(shí)的行為,非常容易導(dǎo)致性能瓶頸。下面一些場(chǎng)景會(huì)觸發(fā)瀏覽器的reflow:

DOM元素的添加、修改(內(nèi)容)、刪除。

應(yīng)用新的樣式或者修改任何影響元素布局的屬性。

Resize瀏覽器窗口、滾動(dòng)頁(yè)面。

讀取元素的某些屬性(offsetLeft、offsetTop、offsetHeight、offsetWidth、scrollTop/Left/Width/Height、clientTop/Left/Width/Height、getComputedStyle()、currentStyle(in IE)) 。

[建議] 盡量減少 DOM 操作。

解釋:

DOM 操作也是非常耗時(shí)的一種操作,減少 DOM 操作有助于提高性能。舉一個(gè)簡(jiǎn)單的例子,構(gòu)建一個(gè)列表。我們可以用兩種方式:

在循環(huán)體中 createElement 并 append 到父元素中。

在循環(huán)體中拼接 HTML 字符串,循環(huán)結(jié)束后寫父元素的 innerHTML。

第一種方法看起來(lái)比較標(biāo)準(zhǔn),但是每次循環(huán)都會(huì)對(duì) DOM 進(jìn)行操作,性能極低。在這里推薦使用第二種方法。

4.2.5 DOM 事件
[建議] 優(yōu)先使用 addEventListener / attachEvent 綁定事件,避免直接在 HTML 屬性中或 DOM 的 expando 屬性綁定事件處理。

解釋:

expando 屬性綁定事件容易導(dǎo)致互相覆蓋。

[建議] 使用 addEventListener 時(shí)第三個(gè)參數(shù)使用 false

解釋:

標(biāo)準(zhǔn)瀏覽器中的 addEventListener 可以通過(guò)第三個(gè)參數(shù)指定兩種時(shí)間觸發(fā)模型:冒泡和捕獲。而 IE 的 attachEvent 僅支持冒泡的事件觸發(fā)。所以為了保持一致性,通常 addEventListener 的第三個(gè)參數(shù)都為 false。

[建議] 在沒(méi)有事件自動(dòng)管理的框架支持下,應(yīng)持有監(jiān)聽(tīng)器函數(shù)的引用,在適當(dāng)時(shí)候(元素釋放、頁(yè)面卸載等)移除添加的監(jiān)聽(tīng)器。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/87681.html

相關(guān)文章

  • JavaScript 編碼規(guī)范

    摘要:這樣的變量增加了代碼量,并且混淆讀者。錯(cuò)誤代碼示例變量雖然聲明了,但沒(méi)被使用持續(xù)更新 JavaScript 編碼規(guī)范 一、命名規(guī)范 1. 變量 命名方法:小駝峰式命名法(由小寫字母開(kāi)始,后續(xù)每個(gè)單詞首字母都大寫) 命名建議:語(yǔ)義化的名詞 特殊:布爾值變量建議添加符合其含義的前綴動(dòng)詞 is:是否 can:能不能 has:有沒(méi)有 示例: // 頁(yè)面標(biāo)題 let pageT...

    wenshi11019 評(píng)論0 收藏0
  • 在 React-CRA 應(yīng)用中配合 VSCode 使用 ESLint 實(shí)踐前端代碼規(guī)范

    摘要:編碼規(guī)范是獨(dú)角獸公司內(nèi)部的編碼規(guī)范,該項(xiàng)目是上很受歡迎的一個(gè)開(kāi)源項(xiàng)目,在前端開(kāi)發(fā)中使用廣泛,本文的配置規(guī)則就是以編碼規(guī)范和編碼規(guī)范作為基礎(chǔ)的。 更新時(shí)間:2019-01-22React.js create-react-app 項(xiàng)目 + VSCode 編輯器 + ESLint 代碼檢查工具 + Airbnb 編碼規(guī)范 前言 為什么要使用 ESLint 在項(xiàng)目開(kāi)發(fā)過(guò)程中,編寫符合團(tuán)隊(duì)編碼規(guī)...

    Hujiawei 評(píng)論0 收藏0
  • HTML編碼規(guī)范

    摘要:當(dāng)然我們還可以引入框架,這些框架一般都自帶模板處理引擎,比如等語(yǔ)義化命名和語(yǔ)義化標(biāo)簽我們盡量多采用語(yǔ)義化來(lái)命名,并且采用語(yǔ)義化標(biāo)簽來(lái)書寫代碼,多用中新增的標(biāo)簽來(lái)書寫。 1.黃金法則(Golden rule) 不管有多少人參與同一個(gè)項(xiàng)目,一定要確保每一行代碼都像是同一個(gè)人編寫的。 Every line of code should appear to be written by a si...

    nifhlheimr 評(píng)論0 收藏0
  • 編寫靈活、穩(wěn)定、高質(zhì)量的HTML代碼的規(guī)范

    摘要:六字符編碼通過(guò)明確聲明字符編碼,能夠確保瀏覽器快速并容易的判斷頁(yè)面內(nèi)容的渲染方式。十一減少標(biāo)簽的數(shù)量編寫代碼時(shí),盡量避免多余的父元素。未完待續(xù)編寫靈活穩(wěn)定高質(zhì)量的代碼的規(guī)范閱讀更多 一、唯一定律 無(wú)論有多少人共同參與同一項(xiàng)目,一定要確保每一行代碼都像是唯一個(gè)人編寫的。 二、HTML 2.1 語(yǔ)法 (1)用兩個(gè)空格來(lái)代替制表符(tab) -- 這是唯一能保證在所有環(huán)境下獲得一致展現(xiàn)的方法...

    anquan 評(píng)論0 收藏0
  • JavaScript是怎樣編碼數(shù)字的[How numbers are encoded in Java

    摘要:譯者注規(guī)范化就是把小數(shù)點(diǎn)放在第一個(gè)非零數(shù)字的后面總結(jié)當(dāng)指數(shù)的范圍是十進(jìn)制分?jǐn)?shù)不是所有的十進(jìn)制分?jǐn)?shù)都能夠非常精確的表示例如和都不能夠被精確的表示成二進(jìn)制浮點(diǎn)數(shù)。相同的,也不能被精確表示成一個(gè)十進(jìn)制分?jǐn)?shù),它大概能被表示成。 在JavaScript中所有的數(shù)字都是浮點(diǎn)數(shù),本篇文章將介紹這些浮點(diǎn)數(shù)在JavaScript內(nèi)部是怎樣被轉(zhuǎn)為64位二進(jìn)制的。我們會(huì)特別考慮整數(shù)的處理,所以讀完本篇之后,...

    oysun 評(píng)論0 收藏0
  • JavaScript如何實(shí)現(xiàn)UTF-16編碼轉(zhuǎn)換為UTF-8編碼——utfx.js源碼解析

    摘要:編碼轉(zhuǎn)換為編碼下面讓我們來(lái)看下如何將編碼的數(shù)據(jù)轉(zhuǎn)換為編碼的數(shù)據(jù)。該方法是將碼進(jìn)行編碼轉(zhuǎn)換,從而得到編碼的數(shù)據(jù)。 概述 當(dāng)你在前端需要通過(guò)二進(jìn)制數(shù)據(jù)與服務(wù)端進(jìn)行通信時(shí),你可能會(huì)遇到二進(jìn)制數(shù)據(jù)的編碼問(wèn)題。大部分服務(wù)端的字符串編碼類型都為UTF-8,而JavaScript中字符串編碼類型是UTF-16,因此,你需要一個(gè)能夠?qū)⒆址趦煞N編碼方式間進(jìn)行轉(zhuǎn)換的方法。 本文通過(guò)對(duì)utfx.js這個(gè)...

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

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

0條評(píng)論

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