JavaScript特點(diǎn)、優(yōu)缺點(diǎn)及常用框架

什么是JavaScript

JavaScript是一種基于對(duì)象Object和事件驅(qū)動(dòng)Event Driven并具有相對(duì)安全性的客戶端腳本語(yǔ)言。同時(shí)也是一種廣泛用于客戶端Web開發(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)置支持類。

JavaScript的特點(diǎn)

  1. 一種解釋性執(zhí)行的腳本語(yǔ)言。
    同其他腳本語(yǔ)言一樣,JavaScript也是一種解釋性語(yǔ)言,其提供了一個(gè)非常方便的開發(fā)過程。JavaScript的語(yǔ)法基本結(jié)構(gòu)形式與C、C++、Java十分類似。但在使用前,不像這些語(yǔ)言需要先編譯,而是在程序運(yùn)行過程中被逐行地解釋。JavaScript與HTML標(biāo)識(shí)結(jié)合在一起,從而方便用戶的使用操作。
  • 一種基于對(duì)象的腳本語(yǔ)言。
    其也可以被看作是一種面向?qū)ο蟮恼Z(yǔ)言,這意味著JavaScript能運(yùn)用其已經(jīng)創(chuàng)建的對(duì)象。因此,許多功能可以來(lái)自于腳本環(huán)境中對(duì)象的方法與腳本的相互作用。
  • 一種簡(jiǎn)單弱類型腳本語(yǔ)言。
    其簡(jiǎn)單性主要體現(xiàn)在:首先,JavaScript是一種基于Java基本語(yǔ)句和控制流之上的簡(jiǎn)單而緊湊的設(shè)計(jì),從而對(duì)于使用者學(xué)習(xí)Java或其他C語(yǔ)系的編程語(yǔ)言是一種非常好的過渡,而對(duì)于具有C語(yǔ)系編程功底的程序員來(lái)說,JavaScript上手也非常容易;其次,其變量類型是采用弱類型,并未使用嚴(yán)格的數(shù)據(jù)類型。
  • 一種相對(duì)安全腳本語(yǔ)言。
    JavaScript作為一種安全性語(yǔ)言,不被允許訪問本地的硬盤,且不能將數(shù)據(jù)存入服務(wù)器,不允許對(duì)網(wǎng)絡(luò)文檔進(jìn)行修改和刪除,只能通過瀏覽器實(shí)現(xiàn)信息瀏覽或動(dòng)態(tài)交互。從而有效地防止數(shù)據(jù)的丟失或?qū)ο到y(tǒng)的非法訪問。
  • 一種事件驅(qū)動(dòng)腳本語(yǔ)言。
    JavaScript對(duì)用戶的響應(yīng),是以事件驅(qū)動(dòng)的方式進(jìn)行的。在網(wǎng)頁(yè)(Web Page)中執(zhí)行了某種操作所產(chǎn)生的動(dòng)作,被稱為“事件”(Event)。例如按下鼠標(biāo)、移動(dòng)窗口、選擇菜單等都可以被視為事件。當(dāng)事件發(fā)生后,可能會(huì)引起相應(yīng)的事件響應(yīng),執(zhí)行某些對(duì)應(yīng)的腳本,這種機(jī)制被稱為“事件驅(qū)動(dòng)”。
  • 一種跨平臺(tái)性腳本語(yǔ)言。
    JavaScript依賴于瀏覽器本身,與操作環(huán)境無(wú)關(guān),只要計(jì)算機(jī)能運(yùn)行瀏覽器,并支持JavaScript的瀏覽器,就可正確執(zhí)行,從而實(shí)現(xiàn)了“編寫一次,走遍天下”的夢(mèng)想。

因此,JavaScript是一種新的描述語(yǔ)言,其可以被嵌入到HTML文件中。JavaScript語(yǔ)言可以做到響應(yīng)使用者的需求事件(例如表單的輸入),而不需要任何的網(wǎng)絡(luò)來(lái)回傳輸資料。所以當(dāng)一位使用者輸入一項(xiàng)資料時(shí),此資料數(shù)據(jù)不用經(jīng)過傳給服務(wù)器(server)處理再傳回來(lái)的過程,而直接可以被客戶端(client)的應(yīng)用程序所處理。

JavaScript的優(yōu)缺點(diǎn)

JavaScript的優(yōu)點(diǎn):

  1. JavaScript減少網(wǎng)絡(luò)傳輸。
    在JavaScript這樣的用戶端腳本語(yǔ)言出現(xiàn)之前,傳統(tǒng)的數(shù)據(jù)提交和驗(yàn)證工作均由用戶端瀏覽器通過網(wǎng)絡(luò)傳輸?shù)椒?wù)器上進(jìn)行。如果數(shù)據(jù)量很大,這對(duì)于網(wǎng)絡(luò)和服務(wù)器的資源來(lái)說實(shí)在是一種無(wú)形的浪費(fèi)。而使用JavaScript就可以在客戶端進(jìn)行數(shù)據(jù)驗(yàn)證。
  • JavaScript方便操縱HTML對(duì)象。
    JavaScript可以方便地操縱各種頁(yè)面中的對(duì)象,用戶可以使用JavaScript來(lái)控制頁(yè)面中各個(gè)元素的外觀、狀態(tài)甚至運(yùn)行方式,JavaScript可以根據(jù)用戶的需要“定制”瀏覽器,從而使網(wǎng)頁(yè)更加友好。
  • JavaScript支持分布式運(yùn)算。
    JavaScript可以使多種任務(wù)僅在用戶端就可以完成,而不需要網(wǎng)絡(luò)和服務(wù)器的參與,從而支持分布式的運(yùn)算和處理。

JavaScript的局限性:

  1. 各瀏覽器廠商對(duì)JavaScript支持程度不同。目前在互聯(lián)網(wǎng)上有很多瀏覽器,如Firefox、Internet Explorer、Opera等,但每種瀏覽器支持JavaScript的程度是不一樣的,不同的瀏覽器在瀏覽一個(gè)帶有JavaScript腳本的主頁(yè)時(shí),由于對(duì)JavaScript的支持稍有不同,其效果會(huì)有一定的差距,有時(shí)甚至?xí)@示不出來(lái)。
  • “Web安全性”對(duì)JavaScript一些功能犧牲。
    當(dāng)把JavaScript的一個(gè)設(shè)計(jì)目標(biāo)設(shè)定為“Web安全性”時(shí),就需要犧牲JavaScript的一些功能。因此,純粹的JavaScript將不能打開、讀寫和保存用戶計(jì)算機(jī)上的文件。其有權(quán)訪問的唯一信息就是該JavaScript所嵌入的那個(gè)Web主頁(yè)中的信息,簡(jiǎn)言之,JavaScript將只存在于它自己的小小世界—Web主頁(yè)里。

常用JS框架介紹及其優(yōu)缺點(diǎn)

Jquery

是一款同 prototype 一樣優(yōu)秀 js 開發(fā)庫(kù)類,特別是對(duì) css 和 XPath 的支持,使我們寫 js 變得更加方便!如果你不是個(gè) js 高手又想寫出優(yōu)秀的 js 效果,那么 JQuery 可以幫你達(dá)到目的!并且簡(jiǎn)介的語(yǔ)法和高的效率一直是jQuery追求的目標(biāo)。

  1. 優(yōu)點(diǎn):注重簡(jiǎn)介和高效,js 效果有 yui-ext 的選擇,因?yàn)?yui-ext 重用了很多 jQuery 的函數(shù)
  • 缺點(diǎn):發(fā)布時(shí)間短,老版本瀏覽器大都不能很好支持。

EXT

基于 Yahoo UI 的擴(kuò)展包 yui-ext 是具有 CS 風(fēng)格的 Web 用戶界面組件,能實(shí)現(xiàn)復(fù)雜的 Layout 布局,界面效果可以和 backbase 媲美,而且使用純 javascript 代碼開發(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 版開始同 Jquery 合作,推出基于 jQuery 的 Ext 1.0,提供了更多有趣的功能。

  1. 優(yōu)點(diǎn):結(jié)構(gòu)化,類似于 java 的結(jié)構(gòu),清晰明了,底層用到了 Jquery 的一些函數(shù),使整合使用有了選擇,最重要的一點(diǎn)是界面太讓讓人震撼了。
  • 缺點(diǎn):太過復(fù)雜,整個(gè)界面的構(gòu)造過于復(fù)雜。

Dojo

是目前最為強(qiáng)大的JS框架,它在自己的 Wiki 上給自己下了一個(gè)定義,Dojo 是一個(gè)用 JavaScript 編寫的開源的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)是通過給 HTML 標(biāo)簽增加 TAG 的方式進(jìn)行擴(kuò)展,而不是通過寫 JS 來(lái)生成,Dojo 的 API 模仿 Java 類庫(kù)的組織方式。用 Dojo 寫 Web OS 可謂非常方便。Dojo 現(xiàn)在已經(jīng) 4.0 了,Dojo 強(qiáng)大的地方在于界面和特效的封裝,可以讓開發(fā)者快速構(gòu)建一些兼容標(biāo)準(zhǔn)的界面。

  1. 優(yōu)點(diǎn):庫(kù)相當(dāng)完善,發(fā)展時(shí)間也比較長(zhǎng),功能強(qiáng)大,據(jù)說利用 Dojo 的 io.bind() 可以實(shí)現(xiàn) comet 看見其功能強(qiáng)大非一般,得到 IBM 和 SUN 的支持。
  • 缺點(diǎn):文件體積比較大,200多KB,初次下載相當(dāng)慢,此外,Dojo 的類庫(kù)使用顯得不是那么易用,JS語(yǔ)法增強(qiáng)方面不如 Prototype

Prototype

它是一個(gè)非常優(yōu)雅的 JS 庫(kù),定義了 JS 的面向?qū)ο髷U(kuò)展,DOM 操作API,事件等等,以 Prototype 為核心,形成了一個(gè)外圍的各種各樣的 JS 擴(kuò)展庫(kù),是相當(dāng)有前途的 JS 底層框架,值得推薦,感覺也是現(xiàn)實(shí)中應(yīng)用最廣的庫(kù)類(RoR 集成的 AJAX JS 庫(kù)),之上還有 Scriptaculous 實(shí)現(xiàn)一些JS組件功能和效果。

  1. 優(yōu)點(diǎn):基本底層,易學(xué)易用,甚至是其他一些js特效開發(fā)包的底層,體積算是最小的了。
  • 缺點(diǎn):如果說缺點(diǎn),可能就是功能是他的弱項(xiàng)

dScriptaculous

是基于prototype.js 框架的 JS 效果。包含了 6 個(gè) js 文件,不同的文件對(duì)應(yīng)不同的 js 效果,所以說,如果底層用 prototype 的話,做js效果用 Scriptaculous 那是再合適不過的了,連大名鼎鼎的 digg 都在用他,可見不一般

  1. 優(yōu)點(diǎn):基于prototype 是最大的優(yōu)點(diǎn),由于使用 prototype 的廣泛性,無(wú)疑對(duì)用戶是錦上添花。
  • 缺點(diǎn):剛剛興起,需要時(shí)間的磨練

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 代碼解釋器

  1. 優(yōu)點(diǎn):MochiKit.DOM 這部分很實(shí)用,簡(jiǎn)介也是很突出的
  • 缺點(diǎn):輕量級(jí)的缺點(diǎn)

Mootools

是一個(gè)簡(jiǎn)潔,模塊化,面向?qū)ο蟮?JavaScript 框架。它能夠幫助你更快,更簡(jiǎn)單地編寫可擴(kuò)展和兼容性強(qiáng)的 JavaScript 代碼。Mootools 跟 prototypejs 相類似,語(yǔ)法幾乎一樣。但它提供的功能要比 prototypejs 多,而且更強(qiáng)大。比如增加了動(dòng)畫特效、拖放操作等等。

  1. 優(yōu)點(diǎn):可以定制自己所需要的功能,可以說是 prototypejs 的增強(qiáng)版。
  • 缺點(diǎn):不大不小,具體應(yīng)用具體分析。

Moo.fx

是一個(gè)超級(jí)輕量級(jí)的 javascript 特效庫(kù)(7k),能夠與 prototype.js 或mootools 框架一起使用。它非常快、易于使用、跨瀏覽器、符合標(biāo)準(zhǔn),提供控制和修改任何 HTML 元素的 CSS 屬性,包括顏色。它內(nèi)置檢查器能夠防止用戶通過多次或瘋狂點(diǎn)擊來(lái)破壞效果。moo.fx整體采用模塊化設(shè)計(jì),所以可以在它的基礎(chǔ)上開發(fā)你需要的任何特效。

  1. 優(yōu)點(diǎn):小塊頭有大能耐
  • 缺點(diǎn):這么小了,已經(jīng)不錯(cuò)了

參考博客:

JavaScript的特點(diǎn)
JavaScript的優(yōu)點(diǎn)與局限性
八款JS框架介紹及比較
JavaScript
框架介紹及其比較

參考

JavaScript特點(diǎn)、優(yōu)缺點(diǎn)及常用框架

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,565評(píng)論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,115評(píng)論 3 423
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,577評(píng)論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,514評(píng)論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,234評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,621評(píng)論 1 326
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,641評(píng)論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,822評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,380評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,128評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,319評(píng)論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,879評(píng)論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,548評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,970評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,229評(píng)論 1 291
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,048評(píng)論 3 397
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,285評(píng)論 2 376

推薦閱讀更多精彩內(nèi)容

  • https://github.com/jobbole/awesome-javascript-cn 包管理器管理著 ...
    孫雪冬閱讀 6,058評(píng)論 3 66
  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    前端進(jìn)階之旅閱讀 114,539評(píng)論 24 450
  • @轉(zhuǎn)自GitHub 介紹js的基本數(shù)據(jù)類型。Undefined、Null、Boolean、Number、Strin...
    YT_Zou閱讀 1,182評(píng)論 0 0
  • 我站在貨攤后面 人流在眼前飄動(dòng) 寒風(fēng)中跳舞的枯葉 盯著我手中的鈔票 我想揮舞雙手 將鈔票撒向天空 讓他與枯葉共舞。
    漢忠閱讀 77評(píng)論 0 0
  • UINavigationController 導(dǎo)航控制器是一個(gè)堆棧結(jié)構(gòu),只是其中管理的對(duì)象是controller,...
    kriskangdev閱讀 686評(píng)論 0 2