本篇內(nèi)容主要講解“JavaScript代碼組織結(jié)構(gòu)良好的特點有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“JavaScript代碼組織結(jié)構(gòu)良好的特點有哪些”吧!
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設,德宏州企業(yè)網(wǎng)站建設,德宏州品牌網(wǎng)站建設,網(wǎng)站定制,德宏州網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,德宏州網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。 隨著JavaScript項目的成長,如果你不小心處理的話,他們往往會變得難以管理。我們發(fā)現(xiàn)自己常常陷入的一些問題: 當在創(chuàng)建新的頁面時發(fā)現(xiàn),很難重用或測試之前寫的代碼。
當我們更深處地研究這些問題,我們發(fā)現(xiàn)根本原因是無效的依賴管理造成的。比如,腳本A依賴腳本B,并且腳本B又依賴腳本C,當C沒有被正確引入時,整個依賴鏈就無法正常工作了。
為了解決這個問題,我們已經(jīng)采取了異步模塊定義(AMD)的模式,并引入require.js到我們的技術(shù)堆棧。經(jīng)過對AMD的進一步探索,我們已經(jīng)基本確定,組織嚴密的JavaScript一般都呈現(xiàn)以下五個特點:
始終聲明我們的依賴
為第三方代碼庫添加shim(墊片) 定義跟調(diào)用應該分離 依賴應該異步加載 模塊不應依賴全局變量
讓我們詳細討論一下。
始終聲明我們的依賴
我們最常碰到了的一個問題是,我們會經(jīng)常忽略那些會被確定加載的依賴項。舉例來說,如果我們創(chuàng)建了一個jQuery插件,一般認為沒有必要申報jQuery的依賴,因為它在大多數(shù)頁面都是默認裝載的。雖然這似乎適用于大多數(shù)的網(wǎng)頁,但當我們試圖進行單元測試或在一個全新的頁面加載時,它就變成一個問題。
始終聲明我們的依賴,我們就消除了JavaScript中90%的問題??芍赜玫拇a變得更可靠,單元測試的數(shù)量增加了4倍也是一個因素。
為第三方代碼庫添加shim(墊片)
在管理JavaScript依賴時經(jīng)常碰到的一個有趣問題是,較舊的第三方庫可能無法和您的依賴關(guān)系管理系統(tǒng)配合工作。例如,你們內(nèi)部使用了jQuery的一個很酷的插件,但它對require.js一無所知。這會成為一個問題,因為第一個特點,我們來添加對這個插件的引用。
解決的辦法是通過依賴管理工具為這個插件制作一個墊片。在require.js中,這可以很容易地通過配置來完成:
var require = {
1. <p><font size="3"> "shim": {</font></p>
2. <p><font size="3"> "lib/cool-plugin": {</font></p>
3. <p><font size="3"> "deps": ["lib/jquery"]</font></p>
4. <p><font size="3"> }</font></p>
5. <p><font size="3"> }</font></p>
6. <p><font size="3"> }</font></p>
有了這個簡單的配置,每一個加載
lib/cool-plugin.js 的腳本都會自動加載jQuery。將有助于滿足所有相關(guān)性.
最終的結(jié)果是代碼更容易測試和重用,因為你總是有一個require()來調(diào)用所需的功能。
定義跟調(diào)用應該分離
這是限制JavaScript代碼的可重用性和可測試性的一個常見問題。問題表現(xiàn)在一個單一的文件即定義了一個類/函數(shù)又調(diào)用了它。考慮下面的代碼:
## js/User.js
1. <p><font size="3"> define(functino(require) {</font></p>
2. <p><font size="3"> var User = function(name, greeter) {</font></p>
3. <p><font size="3"> this.name = name;</font></p>
4. <p><font size="3"> this.greeter = greeter;</font></p>
5. <p><font size="3"> };</font></p>
6. <p><font size="3"> User.prototype.sayHello = function() {</font></p>
7. <p><font size="3"> this.greeter("Hello, " + this.name);</font></p>
8. <p><font size="3"> };</font></p>
9. <p><font size="3"> var user = new User('Alice', window.alert);</font></p>
10. <p><font size="3"> user.sayHello();</font></p>
11. <p><font size="3"> });</font></p>
在這個例子中,一個單一的文件即定義了User類又調(diào)用它。這將很難重用這個代碼,因為只要加載這個腳本就會出現(xiàn)alert。同樣greeter這個非常難以測試。
解決的辦法是保持定義和執(zhí)行的分離。這有助于確??芍赜眯院涂蓽y性:
## js/User.js
1. <p><font size="3"> define(functino(require) {</font></p>
2. <p><font size="3"> var User = function(name, greeter) {</font></p>
3. <p><font size="3"> this.name = name;</font></p>
4. <p><font size="3"> this.greeter = greeter;</font></p>
5. <p><font size="3"> };</font></p>
6. <p><font size="3"> User.prototype.sayHello = function() {</font></p>
7. <p><font size="3"> this.greeter("Hello, " + this.name);</font></p>
8. <p><font size="3"> };</font></p>
9. <p><font size="3"> return User;</font></p>
10. <p><font size="3"> });</font></p>
11. <p><font size="3"> ## js/my-page.js</font></p>
12. <p><font size="3"> define(functino(require) {</font></p>
13. <p><font size="3"> var User = require('js/User');</font></p>
14. <p><font size="3"> var user = new User('Alice', window.alert);</font></p>
15. <p><font size="3"> user.sayHello();</font></p>
16. <p><font size="3"> });</font></p>
這種變化,User類可以安全地在許多腳本中重用。
依賴應該異步加載
因為試圖同步加載腳本會導致瀏覽器鎖死,這是非常重要的,你的腳本和你的模塊應該使用異步加載機制。
Require.js在默認情況下,所有異步加載你的模塊,只有所有的的依賴都加載完以后才會執(zhí)行你的模塊代碼的函數(shù)。
通過使用一個閉包,我們可以進一步利用“use strict”的好處。
模塊不應依賴全局變量
為了進一步加強我們的JavaScript代碼庫,我們已經(jīng)(幾乎)完全消滅了全局變量(除了由require.js提供的全局變量,如require()和define())。全局變量是臭名昭著的潛在的進入模塊的“隱藏的依賴關(guān)系”,它會使代碼很難重用或測試。
Require.js也讓我們轉(zhuǎn)換第三方全局變量,require() - 通過墊補功能能模塊。在這個例子中,lib/calculator 創(chuàng)建一個全局的計算器對象,這個庫是被require化的。
var require = {
1. <p><font size="3"> "shim" : {</font></p>
2. <p><font size="3"> "lib/calculator": {</font></p>
3. <p><font size="3"> "export": "Calc"</font></p>
4. <p><font size="3"> }</font></p>
5. <p><font size="3"> }</font></p>
6. <p><font size="3"> }</font></p>
到此,相信大家對“JavaScript代碼組織結(jié)構(gòu)良好的特點有哪些”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!
新聞標題:JavaScript代碼組織結(jié)構(gòu)良好的特點有哪些-創(chuàng)新互聯(lián)
標題URL:http://jinyejixie.com/article28/dcphcp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、商城網(wǎng)站、定制網(wǎng)站、App設計、定制開發(fā)、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容