国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS代碼優化的8點建議

2024-05-06 15:44:05
字體:
來源:轉載
供稿:網友

一、松耦合

當修改一個組件而不需要更改其他組件時,就做到了松耦合

1、將JS從CSS中抽離:不要使用CSS表達式

//不好的做法.box{width: expression(document.body.offsetWidth + 'px')}

2、將CSS從JS中抽離:通過JS修改CSS樣式時,使用className或classList,不要逐條修改style樣式

//不好的做法一ele.style.color = 'red';ele.style.left= '10px';//不好的做法二ele.style.cssText ='color:red;left:10px;';.reveal{color:red;left:10px;}//好的做法一ele.className += 'reveal';//好的做法二ele.classList.add('reveal');

3、將JS從HTML中抽離:從JS文件放入外置文件中

4、將HTML從JS中抽離:不要在innerHTML中拼接DOM結構,而是使用字符串模板,如handlerbars

二、全局變量

創建全局變量被認為是糟糕的實踐,尤其在團隊開發的大背景下更是問題多多。隨著代碼量的增長,全局變量會導致一些非常重要的可維護性難題,全局變量越多,引入錯誤的概率會變得越高

一般而言,有如下三種解決辦法

1、零全局變量

實現方法是使用一個立即調用函數IIFE并將所有腳本放置其中

(function(){ var doc = win.document;})(window);

這種模式的使用場景有限,只要代碼需要被其他的代碼所依賴,或者需要在運行中被不斷擴展或修改,就不能使用這種方式

2、單全局變量和命名空間

依賴盡可能少的全局變量,即只創建一個全局變量,使用單變量模式,如YUI或jQuery

單全局變量,即所創建的這個唯一全局對象名是獨一無二的,并將所有的功能代碼都掛載到這個全局對象上。

因此,每個可能的全局變量,都成為唯一全局變量的屬性,從而不會創建多個全局變量

命名空間是簡單的通過全局對象的單一屬性表示的功能性分組。比如Y.DOM下的所有方法都是和DOM操作相關的,Y.Event下的所有方法都是和事件相關的。常見的約定是每個文件中都通過新的全局對象來聲明自己的命名空間

3、使用模塊

模塊是一種通用的功能片段,它并沒有創建新的全局變量或命名空間。相反,所有的這些代碼都存放于一個表示執行一個任務或發布一個接口的單函數中。可以用一個名稱來表示這個模塊,同樣這個模塊可以依賴其他模塊

三、事件處理

將事件處理相關的代碼和事件環境耦合在一起,導致可維護性很糟糕

1、隔離應用邏輯

將應用邏輯從所有事件處理程序中抽離出來是一種最佳實踐,將應用邏輯和事件處理的代碼拆分開來

//不好的做法function handleClick(event){ var popup = document.getElementById('popup'); popup.style.left = event.clientX + 'px'; popup.style.top = event.clientY + 'px'; popup.className = 'reveal';}addListener(element,'click',handleClick);//好的做法var MyApplication = { handleClick: function(event){  this.showPopup(event); }, showPopup: function(event){  var popup = document.getElementById('popup');  popup.style.left = event.clientX + 'px';  popup.style.top = event.clientY + 'px';  popup.className = 'reveal'; }};addListener(element,'click',function(event){ MyApplication.handleClick(event);});            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 威远县| 景东| 津南区| 锡林浩特市| 隆安县| 娄烦县| 河东区| 攀枝花市| 长泰县| 祁连县| 红安县| 扶风县| 墨江| 三亚市| 长岛县| 从江县| 甘孜县| 庆云县| 上栗县| 志丹县| 进贤县| 九龙坡区| 衡阳县| 柞水县| 芷江| 吐鲁番市| 武平县| 锡林郭勒盟| 朝阳区| 东山县| 仁化县| 竹溪县| 河源市| 石狮市| 余江县| 全州县| 紫金县| 花垣县| 贺兰县| 甘德县| 玉溪市|