最近幾年比較火的前端js框架extjs 算是其中的佼佼者。統一的UI設計,強悍的組件及豐富的插件,對瀏覽器良好的兼容性等優點使得許多公司使用Extjs,同時也使得無數程序猿開始研究這個玩意也包括我在內。廢話不多說,我們來看看extjs和extnet 是什么東東。
用過的extjs 的程序猿,恐怕都有五味雜陳的感受。有時為了一個特殊的功能,不知耗費多少心血。甚至一不小心少寫了括號找了半天,讓人抓狂。當然這里排除那些代碼天才。平心而論extjs開發是有難度的。要用好它,要學的東西真不少。CSS,html,js,服務器腳本語言(php,java,asp.net)。不要以為有js框架就不用關注那些css,html了,等哪天老板說”我要這種功能,這種效果。“ 哈哈,就懂了。那么問題來了,怎樣降低這個開發難度呢?就有這個公司搞了個Ext.Net ,再extjs 上狠狠的封裝了一下。有多狠,Ext.net(2.5).dll,居然有125MB。 讓無數開發者仿佛一下子回到了asp.net 拖控件的時代。歷史就是這樣,重復着造輪子。。。
在Extjs窗口這樣寫的:
Ext.create('Ext.window.Window', { title: 'Hello', height: 200, width: 400, layout: 'fit', items: { // Let's put an empty grid in just to illustrate fit layout xtype: 'grid', border: false, columns: [{header: 'World'}], // One header just for show. There's no data, store: Ext.create('Ext.data.ArrayStore', {}) // A dummy empty data store } }).show();
ext.net 是這樣寫的:
<ext:Window ID="Window1" runat="server" Title="Hello World" Icon="Application" Height="185" Width="350" BodyStyle="background-color: #fff;" BodyPadding="5" Modal="true"> <Content> This is my first <a target="_blank" href="http://www.ext.net/"> Ext.NET</a> Window. </Content> </ext:Window>
在寫代碼上,使用vsIED開發環境Ext.net 有智能提示(通過設置extjs也可以),但是你要是把ext.net屬性設置錯了或者其他錯, 編譯時直接給你個報個錯。不改正確都不行。從這點上來說對程序員來說確實是個福音。
下面來看下注冊事件的區別:extjs 這么寫
Ext.create('Ext.Button', { text: 'Click me', renderTo: Ext.getBody(), handler: function() {//看這里! alert('You clicked the button!'); } });
還可用”on()“ 方法注冊事件。Ext.Net 長什么樣呢,如下所示:
<ext:ImageButton runat="server" ImageUrl="button.gif" OverImageUrl="overButton.gif" DisabledImageUrl="disabled.gif" PressedImageUrl="pressed.gif"> <DirectEvents> //這里hock 后台事件 <Click OnEvent="Button_Click" /> </DirectEvents> <Listeners> <Click Handler="*這里你可以寫js代碼處理*"/> </Listeners> </ext:ImageButton>
這里是后台代碼
<script runat="server"> protected void Button_Click(object sender, DirectEventArgs e) { X.Msg.Alert("Server Time", DateTime.Now.ToLongTimeString()).Show(); } </script>
事件就簡單到這里,下面說兩者的性能差異。整體上來說,extnet是包裝過的性能肯定有所下降。據自己開發時體會,Ext.net事件交互上本質是使用extjs的DirectEvent,大量的事件交互,導致了許多不必要的服務器請求。這是導致性能不佳一個很重要的原因。而extjs許多處理直接通過前台js代碼控制,規避了這類問題。
再來介紹下大家比較關心的東西,收不收費? extjs 是開源的,需要遵守GNU協議的。而extnet用於商業盈利需要收費的。具體的細節的看下他們的說明。
好了簡單介紹到這里吧。具體選擇哪種組件開發,需要結合實際情況慎重考慮。
新的一年,給廣大程序猿一個福利。在開發extjs或者extnet時都不免查看api文檔。查看官方網站時,會發現只要在從天朝訪問外國網站都比較卡,有時還無法訪問。為此博主決定改變一下。查看在線api文檔請點擊這里: http://api.movivi.cn。為了程序員更好寫代碼,我也是蠻拼的,希望這能夠幫助到你。