JavaScript 框架(庫(kù))
10年積累的成都做網(wǎng)站、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有巴林右旗免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
JavaScript 高級(jí)程序設(shè)計(jì)(特別是對(duì)瀏覽器差異的復(fù)雜處理),通常很困難也很耗時(shí)。
為了應(yīng)對(duì)這些調(diào)整,許多的 JavaScript (helper) 庫(kù)應(yīng)運(yùn)而生,這些 JavaScript 庫(kù)常被稱為 JavaScript 框架。介紹一些日常用的 JavaScript 框架:
jQuery
Prototype
MooTools
所有這些框架都提供針對(duì)常見(jiàn) JavaScript 任務(wù)的函數(shù),包括動(dòng)畫、DOM 操作以及 Ajax 處理。
jQuery
jQuery 是目前最受歡迎的 JavaScript 框架。
它使用 CSS 選擇器來(lái)訪問(wèn)和操作網(wǎng)頁(yè)上的 HTML 元素(DOM 對(duì)象)。
jQuery 同時(shí)提供 companion UI(用戶界面)和插件。
許多大公司在網(wǎng)站上使用 jQuery:
Microsoft
IBM
Netflix
Prototype
Prototype 是一種庫(kù),提供用于執(zhí)行常見(jiàn) web 任務(wù)的簡(jiǎn)單 API。
API 是應(yīng)用程序編程接口(Application Programming Interface)的縮寫。它是包含屬性和方法的庫(kù),用于操作 HTML DOM。
Prototype 通過(guò)提供類和繼承,實(shí)現(xiàn)了對(duì) JavaScript 的增強(qiáng)。
MooTools
MooTools 也是一個(gè)框架,提供了可使常見(jiàn)的 JavaScript 編程更為簡(jiǎn)單的 API。
MooTools 也含有一些輕量級(jí)的效果和動(dòng)畫函數(shù)。
其他框架
下面是其他一些在上面未涉及的框架:
YUI - Yahoo! User Interface Framework,涵蓋大量函數(shù)的大型庫(kù),從簡(jiǎn)單的 JavaScript 功能到完整的 internet widget。
Ext JS - 可定制的 widget,用于構(gòu)建富因特網(wǎng)應(yīng)用程序(rich Internet applications)。
Dojo - 用于 DOM 操作、事件、widget 等的工具包。
script.aculo.us - 開(kāi)源的 JavaScript 框架,針對(duì)可視效果和界面行為。
UIZE - Widget、AJAX、DOM、模板等等。
1、什么是模塊呢?我們可以簡(jiǎn)單的把它看成一個(gè)實(shí)現(xiàn)單獨(dú)功能的文件。比如在前端JS中的jQuery.js,在node.js里,我們把它就看成一個(gè)模塊的概念就行。 在前端的JS在使用它之前,是用 先要引入此文件。在node.js里,則需要require來(lái)引入.
我們新建一個(gè)require文件,來(lái)引入一下原來(lái)寫好的sum.js require("./sum"); 我們發(fā)現(xiàn)sum.js文件就自動(dòng)的運(yùn)行了。 如果我們想把sum.js里的值獲得到、或運(yùn)行sum.js里定義的一個(gè)方法怎么辦呢?
大家要注意,定義在模塊里的方法,一定要用exports來(lái)暴露給調(diào)用它的文件,否則無(wú)法調(diào)用。在前端JS里,被引入的文件里定義的全局變量,在當(dāng)前文件里是可以使用的,但node.js里不可以。這一點(diǎn)不同于前端的JS
每一個(gè)模塊都相當(dāng)于一個(gè)私有的作用域。這個(gè)模塊里定義的變量,調(diào)用它的文件是訪問(wèn)不到了,除非用exports來(lái)暴露出來(lái).
2、模塊的需要返反的值,通過(guò)賦給exports的某個(gè)屬性
3、包的概念:包含一個(gè)或多模塊的(也就是JS文件的)文件夾(我們先簡(jiǎn)單的理為包就是一個(gè)實(shí)現(xiàn)完整功能的目錄,其實(shí)它的意義遠(yuǎn)不止這些,先這樣上手)
4、什么叫依賴?1、通俗的說(shuō)就是包里各個(gè)文件之前的關(guān)系等。比如說(shuō)誰(shuí)是主文件(入口文件)2、包與包之間的引用關(guān)系。
在node.js里,是有模塊和包這兩個(gè)概念的,一個(gè)單獨(dú)功能的文件,就是一個(gè)模塊,可能一個(gè)復(fù)雜的功能,由多個(gè)模塊組成,我們則把這多個(gè)模塊,其實(shí)也就是文件,組織在一個(gè)文件夾里,然后用一個(gè)叫package.json的文本文件,來(lái)規(guī)定這些JS文件之間的關(guān)系(這個(gè)關(guān)系在node.js里叫依賴,就是包里的文件的組織關(guān),一個(gè)包里,就是一個(gè)文件夾里,最其碼要有一個(gè)主文件,可能這個(gè)主文件還要導(dǎo)入其它的JS文件才能運(yùn)行,那package.json里,要把這個(gè)關(guān)系描述清楚)
5、包是模塊化JS必須的。
我們可以在node.js項(xiàng)目中直使用別人寫好的功能,就是使用別人寫的包。也可以自己寫一個(gè)包,發(fā)布到互聯(lián)網(wǎng)上供大家使用。
目前來(lái)看,JS框架以及一些開(kāi)發(fā)包和庫(kù)類有如下幾個(gè),Dojo 、Scriptaculous 、Prototype 、yui-ext 、Jquery 、Mochikit、mootools 、moo.fx
Dojo (JS library and UI component ):
Dojo是目前最為強(qiáng)大的j s框架,它在自己的Wiki上給自己下了一個(gè)定義,dojo是一個(gè)用JavaScript編寫的開(kāi)源的DHTML工具箱。dojo很想做一個(gè)“大一統(tǒng)”的 工具箱,不僅僅是瀏覽器層面的,野心還是很大的。Dojo包括ajax, browser, event, widget等跨瀏覽器API,包括了JS本身的語(yǔ)言擴(kuò)展,以及各個(gè)方面的工具類庫(kù),和比較完善的UI組件庫(kù),也被廣泛 應(yīng)用在很多項(xiàng)目中,他的UI組件的特點(diǎn)是通過(guò)給html標(biāo)簽增加tag的方式進(jìn)行擴(kuò)展,而不是通過(guò)寫JS來(lái)生成,dojo的API模仿Java類庫(kù)的組織 方式。 用dojo寫Web OS可謂非常方便。dojo現(xiàn)在已經(jīng)4.0了,dojo強(qiáng)大的地方在于界面和特效的封裝,可以讓開(kāi)發(fā)者快速構(gòu)建一些兼容標(biāo)準(zhǔn)的界面。
優(yōu)點(diǎn):庫(kù)相當(dāng)完善,發(fā)展時(shí)間也比較長(zhǎng),功能強(qiáng)大,據(jù)說(shuō)利用dojo的io.bind()可以實(shí)現(xiàn)comet,看見(jiàn)其功能強(qiáng)大非一般,得到IBM和SUN的支持
缺點(diǎn):文件體積比較大,200多KB,初次下載相當(dāng)慢,此外,dojo的類庫(kù)使用顯得不是那么易用,j s語(yǔ)法增強(qiáng)方面不如prototype。
Prototype (JS OO library):
是一個(gè)非常優(yōu)雅的JS庫(kù),定義了JS的面向?qū)ο髷U(kuò)展,DOM操作API,事件等等,以prototype為核心,形成了一個(gè)外圍的各種各樣 的JS擴(kuò)展庫(kù),是相當(dāng)有前途的JS底層框架,值得推薦,感覺(jué)也是現(xiàn)實(shí)中應(yīng)用最廣的庫(kù)類(RoR集成的AJAX JS庫(kù)),之上還有 Scriptaculous 實(shí)現(xiàn)一些JS組件功能和效果。
優(yōu)點(diǎn):基本底層,易學(xué)易用,甚至是其他一些js特效開(kāi)發(fā)包的底層,體積算是最小的了。
缺點(diǎn):如果說(shuō)缺點(diǎn),可能就是功能是他的弱項(xiàng)
Scriptaculous (JS UI component based on prototype):
Scriptaculous是基于prototype.js框架的JS效果。包含了6個(gè)js文件,不同的文件對(duì)應(yīng)不同的js效果,所以說(shuō),如果底層用 prototype的話,做js效果用Scriptaculous那是再合適不過(guò)的了,連大名鼎鼎的digg都在用他,可見(jiàn)不一般
優(yōu)點(diǎn):基于prototype是最大的優(yōu)點(diǎn),由于使用prototype的廣泛性,無(wú)疑對(duì)用戶書錦上添花,并且在《ajax in action》中就拿Scriptaculous來(lái)講述js效果
缺點(diǎn):剛剛興起,需要時(shí)間的磨練
yui-ext (JS UI component):
基于Yahoo UI的擴(kuò)展包yui-ext是具有CS風(fēng)格的Web用戶界面組件 能實(shí)現(xiàn)復(fù)雜的Layout布局,界面效果可以和backbase媲美,而且使用純javascript代碼開(kāi)發(fā)。真正的可編輯的表格Edit Grid,支持XML和Json數(shù)據(jù)類型,直接可以遷入grid。許多組件實(shí)現(xiàn)了對(duì)數(shù)據(jù)源的支持,例如動(dòng)態(tài)的布局,可編輯的表格控件,動(dòng)態(tài)加載的Tree 控件、動(dòng)態(tài)拖拽效果等等。1.0 beta版開(kāi)始同Jquery合作,推出基于jQuery的Ext 1.0,提供了更多有趣的功能。
優(yōu)點(diǎn):結(jié)構(gòu)化,類似于java的結(jié)構(gòu),清晰明了,底層用到了Jquery的一些函數(shù),使整合使用有了選擇,最重要的一點(diǎn)是界面太讓讓人震撼了。
缺點(diǎn):太過(guò)復(fù)雜,整個(gè)界面的構(gòu)造過(guò)于復(fù)雜。
Jquery :
jQuery是一款同prototype一樣優(yōu)秀js開(kāi)發(fā)庫(kù)類,特別是對(duì)css和XPath的支持,使我們寫js變得更加方便!如果你不是個(gè)js高手又想寫出優(yōu) 秀的js效果,jQuery可以幫你達(dá)到目的!并且簡(jiǎn)介的語(yǔ)法和高的效率一直是jQuery追求的目標(biāo),
優(yōu)點(diǎn):注重簡(jiǎn)介和高效,js效果有yui-ext的選擇,因?yàn)閥ui-ext 重用了很多jQuery的函數(shù)
缺點(diǎn):據(jù)說(shuō)太嫩,歷史不悠久。
Mochikit :
MochiKit自稱為一個(gè)輕量級(jí)的js框架。MochiKit 主要受到 Python 和 Python 標(biāo)準(zhǔn)庫(kù)提供的很多便利之處的啟發(fā),另外還緩解了瀏覽器版本之間的不一致性。其中的 MochiKit.DOM 尤其方便,能夠以比原始 JavaScript 更友好的方式處理 DOM 對(duì)象。MochiKit.DOM 大部分都是針對(duì) XHTML 文檔定制的,如果與 MochiKit 和 Ajax 結(jié)合在一起,使用 XHTML 包裝的微格式尤其方便。Mochikit可以直接對(duì)字符串或者數(shù)字格式化輸出,比較實(shí)用和方便。它還有自己的 js 代碼解釋器
優(yōu)點(diǎn):MochiKit.DOM這部分很實(shí)用,簡(jiǎn)介也是很突出的
缺點(diǎn):輕量級(jí)的缺點(diǎn)
mootools :
MooTools是一個(gè)簡(jiǎn)潔,模塊化,面向?qū)ο蟮腏avaScript框架。它能夠幫助你更快,更簡(jiǎn)單地編寫可擴(kuò)展和兼容性強(qiáng)的JavaScript代碼。Mootools跟prototypejs相類似,語(yǔ)法幾乎一樣。但它提供的功能要比prototypejs多,而且更強(qiáng)大。比如增加了動(dòng)畫特效、拖放操作等等。
優(yōu)點(diǎn):可以定制自己所需要的功能,可以說(shuō)是prototypejs的增強(qiáng)版。
缺點(diǎn):不大不小,具體應(yīng)用具體分析
moo.fx :
moo.fx是一個(gè)超級(jí)輕量級(jí)的javascript特效庫(kù)(7k),能夠與prototype.js或mootools框架一起使用。它非??臁⒁子谑褂?、跨瀏覽器、符合標(biāo)準(zhǔn),提供控制和修改任何HTML元素的CSS屬性,包括顏色。它內(nèi)置檢查器能夠防止用戶通過(guò)多次或瘋狂點(diǎn)擊來(lái)破壞效果。moo.fx整體采用模塊化設(shè)計(jì),所以可以在它的基礎(chǔ)上開(kāi)發(fā)你需要的任何特效。
優(yōu)點(diǎn):小塊頭有大能耐
缺點(diǎn):這么小了,已經(jīng)不錯(cuò)了
不可以
變量名必須以字母、美元符號(hào)($)或下劃線 (_) 開(kāi)頭
變量名可以包含數(shù)字
由于JavaScript區(qū)分大小寫,所以可用的字母包括A到Z(大寫)和a到z(小寫)的字符
變量名不能是關(guān)鍵字或者保留字
JavaScript(簡(jiǎn)稱js),是一種基于對(duì)象和事件驅(qū)動(dòng)并具有相對(duì)安全性的客戶端腳本語(yǔ)言。同時(shí)也是一種廣泛用于客戶端Web開(kāi)發(fā)的腳本語(yǔ)言,常用來(lái)給HTML網(wǎng)頁(yè)添加動(dòng)態(tài)功能,比如響應(yīng)用戶的各種操作。它最初由網(wǎng)景公司(Netscape)的Brendan Eich設(shè)計(jì),是一種動(dòng)態(tài)、弱類型、基于原型的語(yǔ)言,內(nèi)置支持類。
因?yàn)镹etscape與Sun合作,Netscape管理層希望它外觀看起來(lái)像Java,因此取名為JavaScript。
在網(wǎng)頁(yè)里面,js主要有兩種實(shí)現(xiàn)方式,一是直接在網(wǎng)頁(yè)中使用script 和 /script,在標(biāo)簽中間寫入js語(yǔ)言,script 和 /script 會(huì)告訴 JavaScript 在何處開(kāi)始和結(jié)束。二是把腳本保存到外部文件中,外部 JavaScript 文件的文件擴(kuò)展名是 .js。然后使用script src="myScript.js"/script引入外部文件,src屬性中設(shè)置js路徑。
js的主要特點(diǎn)是:
一、js是一種解釋性腳本語(yǔ)言(代碼不進(jìn)行預(yù)編譯);
二、主要用來(lái)向HTML頁(yè)面添加交互行為;
三、可以直接嵌入HTML頁(yè)面,但寫成單獨(dú)的js文件有利于結(jié)構(gòu)和行為的分離。
js的主要功能有:
(1) 嵌入動(dòng)態(tài)文本于HTML頁(yè)面
(2) 對(duì)瀏覽器事件作出響應(yīng)
(3) 讀寫HTML元素
(4) 在數(shù)據(jù)被提交到服務(wù)器之前驗(yàn)證數(shù)據(jù)
(5) 檢測(cè)訪客的瀏覽器信息
(6) 控制cookies,包括創(chuàng)建和修改等