成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JavaScript重構 模塊劃分和命名空間

開發 前端
Javascript是一種由Netscape的LiveScript發展而來的原型化繼承的面向對象的動態類型的區分大小寫的客戶端腳本語言,主要目的是為了解決服務器端語言,遺留的速度問題,為客戶提供更流暢的瀏覽效果。本文介紹JavaScript重構的模塊劃分和命名空間。

通常我們的團隊中,開發人員在Java語言層面具備相當的技術素養,經驗豐富,而且有許多成熟的、合理的規約,類型繁多的代碼隱患檢查工具,甚至在團隊間還有計劃內的評審和飛檢。但是前端的代碼不似后臺,就像一個沒人疼的孩子,不僅僅容易被低估、被輕視,導致質量低劣、可維護性差,技能上,更缺少優秀的前端開發人員。

JavaScript是前臺代碼中重要組成部分,隨著版本的延續,產品越做越大,JavaScript層面的重構,需要在整個過程中逐步強化起來。

當代碼量達到一定程度,JavaScript最好能夠與頁面模塊組件(例如自定義的FreeMarker標簽)一起被模塊化。

模塊化帶來的最大好處就是獨立性和可維護性,不用在海量的js中定位問題位置,簡單了,也就更容易被理解和接受,更容易被定制。

模塊之間的依賴關系最好能夠保持簡單,例如有一個common.js,成為最通用的函數型代碼,不包含或者包含統一管理的全局變量,要求其可以獨立發布,其他組件js可以輕松地依賴于它。舉個例子,我們經常需要對字符串實現一個trim方法,可是js本身是不具備的,那么就可以在這個common.js中擴展string的prototype來實現,這對外部的使用者是透明的。

 

使用命名空間是保持js互不干擾的一個好辦法,js講究起面向對象,就必須遵循封裝、繼承和多態的原則。

參照Java import的用法,我希望命名空間能帶來這樣的效果,看一個最簡單的實例吧:

我有一個模塊play,其中包含了一個方法webOnlinePlay,那么在沒有import這個模塊的時候,我希望是js的執行是錯誤的:

 

  1. webOnlinePlay(); //Error! 無法找到方法 

 

但是如果我引入了這個模塊:

 

  1. import("play");  
  2. webOnlinePlay(); //正確,能夠找到方法 

 

其實實現這樣的效果也很簡單,因為默認調用一個方法webOnlinePlay()的實質是:window.webOnlinePlay(),對嗎?

所以在import("play")的時候,內部實現機制如下:

 

  1. var module = new playModule(); 

 

對于這個模塊中的每一個方法,都導入到window對象上面,以直接使用:

 

  1. window[methodName] = module[methodName]; 

 

其實這里并沒有什么玄機,但是這種即需即取的思想卻給前端重構帶來了一個思路,一個封裝帶來的可維護性增強的思路,不是嗎?

 

聰明的你也許還會提到一個問題:

如果我沒有import這個play模塊,這個頁面都不需要,那我能否連這個play.js都不加載呢?

當然可以,請關注后面的分解——關于js的動態加載的部分。

【編輯推薦】

  1. Web移動應用 HTML5 CSS和JavaScript
  2. JavaScript開發規范要求
  3. javascript面向對象技術基礎(一)
  4. Javascript中閉包的作用域鏈
  5. 讓瀏覽器非阻塞加載javascript的幾種方式
責任編輯:于鐵 來源: CSDN博客
相關推薦

2020-06-09 09:13:12

JavaScript重構對象

2020-06-08 08:46:59

JavaScript條件類名

2020-06-10 08:37:21

JavaScript重構技巧

2011-06-03 13:48:18

JavaScript重構

2009-09-01 17:17:48

C#命名空間和程序集

2021-04-30 09:16:08

軟件架構命名

2009-08-27 15:34:38

C#命名空間

2009-08-28 13:56:25

C#反射命名空間

2009-09-11 09:22:14

System.Linq

2013-08-21 16:48:42

.Net命名空間

2009-08-12 10:46:54

C#命名空間

2020-12-23 14:18:43

JavaScript模塊導出

2021-09-13 09:23:52

TypeScript命名空間

2024-04-11 10:20:57

JavaScript前端Web

2021-05-26 08:50:37

JavaScript代碼重構函數

2022-04-21 07:20:39

Javascript重構邏輯

2010-01-15 10:47:15

VB.NET命名空間

2011-05-20 14:54:46

ADO.NET命名空間

2023-10-31 19:00:56

2020-11-18 09:06:02

JavaScript開發技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品国产综合久久精品 | 欧美一极视频 | 亚洲精品久久久久久久久久久久久 | 精品国产99 | 亚洲视频一 | 911网站大全在线观看 | 欧美一区 | 日韩精品视频在线 | 国产成人亚洲精品自产在线 | 欧美日韩福利视频 | 天堂一区 | 欧美成人二区 | 最新免费视频 | 国产精品免费观看视频 | 福利视频1000| 国产乱码精品一区二区三区忘忧草 | 亚洲一区二区三区在线播放 | 蜜桃精品视频在线 | 日本大片在线播放 | 亚洲第一成年免费网站 | 欧美99久久精品乱码影视 | 看特级黄色片 | 免费精品久久久久久中文字幕 | www.日韩高清 | 超碰婷婷 | 日韩在线免费视频 | 夜夜av | 日韩欧美成人精品 | 免费福利视频一区二区三区 | 亚洲天堂网站 | 亚洲一区二区久久久 | 亚洲免费网址 | 福利av在线| 久久免费视频观看 | 国产精品欧美一区二区三区不卡 | 天天插天天操 | 久久1区 | 国产视频福利在线观看 | 成人不卡 | 黄色片在线看 | 成年视频在线观看福利资源 |