用過的js框架,談談其優點。
jQuery
1、jQuery實現腳本與頁面的分離
在HTML代碼中,我們還經常看到類似這樣的代碼:
<form id="myform" onsubmit=return validate();>
即使validate()函數可以被放置在一個外部文件中,實際上我們依然是把頁面與邏輯和事件混雜在一起。jQuery讓你可以將這兩部分分離。藉助於jQuery,頁面代碼將如下所示:
<form id="myform">
接下來,一個單獨的JS文件將包含以下事件提交代碼:
代碼如下:
$("myform").submit(function(){
...your code here
)}
這樣我們可以實現靈活性非常強的清晰頁面代碼。jQuery讓JavaScript代碼從HTML頁面代碼中分離出來,就像數年前CSS讓樣式代碼與頁面代碼分離開一樣。
2、最少的代碼做最多的事情
最少的代碼做最多的事情,這是jQuery的口號,而且名副其實。使用它的高級selector,開發者只需編寫幾行代碼就能實現令人驚奇的效果。開發者無需過於擔憂瀏覽器差異,它除了還完全支持Ajax,而且擁有許多提高開發者編程效率的其它抽象概念。jQuery把JavaScript帶到了一個更高的層次。以下是一個非常簡單的示例:
代碼如下:
$("p.neat").addClass("ohmy").show("slow");
通過以上簡短的代碼,開發者可以遍歷“neat”類中所有的
元素,然後向其增加“ohmy”類,同時以動畫效果緩緩顯示每一個段落。開發者無需檢查客戶端瀏覽器類型,無需編寫循環代碼,無需編寫複雜的動畫函數,僅僅通過一行代碼就能實現上述效果。
3、性能
在大型JavaScript框架中,jQuery對性能的理解最好。儘管不同版本擁有衆多新功能,其最精簡版本只有18KB大小,這個數字已經很難再減少。jQuery的每一個版本都有重大性能提高。本篇文章講的是jQuery未經過任何優化的原始速度。如果將其與新一代具有更快 JavaScript引擎的瀏覽器(如火狐3和谷歌Chrome)配合使用,開發者在創建富體驗Web應用時將擁有全新速度優勢。
4、它是一個“標準”
之所以使用引號,是以爲jQuery並非一個官方標準。但是業內對jQuery的支持已經非常廣泛。谷歌不但自己使用它,還提供給用戶使用。另外戴爾、新聞聚合網站Digg、WordPress、Mozilla和許多其它廠商也在使用它。微軟甚至將它整合到Visual Studio中。如此多的重量級廠商支持該框架,用戶大可以對其未來放心,大膽的對其投入時間。
5、插件
基於jQuery開發的插件目前已經有大約數千個。開發者可使用插件來進行表單確認、圖表種類、字段提示、動畫、進度條等任務。jQuery社區已經成長爲一個生態系統。這一點進一步證明了上一條理由,它是一個安全的選擇。而且,jQuery正在主動與“競爭對手”合作,例如Prototype。它們似乎在推進JavaScript的整體發展,而不僅僅是在圖謀一己之私。
6、節省開發者學習時間
當然要想真正學習jQuery,開發者還是需要投入一點時間,尤其是如果你要編寫大量代碼或自主插件的話,更是如此。但是,開發者可以採取“各個擊破”的方式,而且jQuery提供了大量示例代碼,入門是一件非常容易的事情。我建議開發者在自己編寫某類代碼前,首先看一下是否有類似插件,然後看一下實際的插件代碼,瞭解一下其工作原理。簡而言之,學習jQuery不需要開發者投入太多,就能夠迅速開始開發工作,然後逐漸提高技巧。
7、讓JavaScript編程變得有趣
bootstrap:應用視覺效果一致性. 這個其實是很很難的,你希望你的鏈接、按鈕、提醒都有統一的視覺效果,你可以爲不同級別的提醒使用不同的顏色
通過多個瀏覽器測試. 市面上主流的瀏覽器支持都沒問題
完整的框架解決方案. 這是一個框架,你只需使用它而無需重新制作,這個框架專爲 Web 應用設計,所有的元素都可以非常完美的在一起工作,可快速開發。
jQuery EasyUI 框架幫助我們輕鬆建立站點:
easyui是一個基於jquery的集成了各種用戶界面的插件。
使用easyui你不需要寫太多javascript代碼,一般情況下你只需要使用一些html標記來定義用戶接口。
easyui非常簡單,但是功能非常強大。
jQuery EasyUI
優點:輕量,組件較爲豐富,效果還可以,版本已經趨於穩定,官方有專人維護與技術支持。
this對象的理解
在JavaScript中this變量是一個令人難以摸清的關鍵字,this可謂是非常強大,充分了解this的相關知識有助於我們在編寫面向對象的JavaScript程序時能夠遊刃有餘。
- 一般用處
對於this變量最要的是能夠理清this所引用的對象到底是哪一個,也許很多資料上都有自己的解釋,但有些概念講的偏繁雜。而我的理解是:首先分析this所在的函數是當做哪個對象的方法調用的,則該對象就是this所引用的對象。 - this.x 與 apply()、call()
通過call和apply可以重新定義函數的執行環境,即this的指向,這對於一些應用當中是十分常用的。
以上可以歸納爲:“this所指的就是直至包含this指針的上層對象”。
更具體的描述如下:
調用形式 this指向
普通函數 全局對象window
對象的方法 該對象
構造函數 新構造的對象
情況一:純粹的函數調用
這是函數的最通常用法,屬於全局性調用,因此this就代表全局對象Global。
情況二:作爲對象方法的調用
函數還可以作爲某個對象的方法調用,這時this就指這個上級對象。
情況三 作爲構造函數調用
所謂構造函數,就是通過這個函數生成一個新對象(object)。這時,this就指這個新對象。
情況四 apply調用
apply()是函數對象的一個方法,它的作用是改變函數的調用對象,它的第一個參數就表示改變後的調用這個函數的對象。因此,this指的就是這第一個參數。
CSS選擇符,可繼承的屬性,優先算法如何計算。
* id選擇器( # myid)
* 類選擇器(.myclassname)
* 標籤選擇器(div, h1, p)
* 相鄰選擇器(h1 + p)
* 子選擇器(ul > li)
* 後代選擇器(li a)
* 通配符選擇器( * )
* 屬性選擇器(a[rel = "external"])
* 僞類選擇器(a: hover, li: nth - child)
可繼承的樣式: font-size font-family color, UL LI DL DD DT ;
不可繼承的樣式:border padding margin width height ;
CSS優先級:是由四個級別和各級別的出現次數決定的。
四個級別分別爲:行內選擇符、ID選擇符、類別選擇符、元素選擇符。
優先級的算法:
每個規則對應一個初始”四位數”:0、0、0、0
若是 行內選擇符,則加1、0、0、0
若是 ID選擇符,則加0、1、0、0
若是 類選擇符/屬性選擇符/僞類選擇符,則分別加0、0、1、0
若是 元素選擇符/僞元素選擇符,則分別加0、0、0、1
算法:將每條規則中,選擇符對應的數相加後得到的”四位數“,從左到右進行比較,大的優先級越高。
需注意的是:
①、!important的優先級是最高的,但出現衝突時則需比較”四位數“;
②、優先級相同時,則採用就近原則;
③、繼承得來的屬性,其優先級最低;
寫js方法。設計一個Animal的類,擁有一個color屬性,一個walk函數表示可以行走。
var Animal=function(c){
this.color=c;
this.walk=function(){
alert("i am walk");
}
}
var dog=new Animal("red");
console.log(dog.color);
dog.walk();