摘要:是目前項目中正在用的框架?,F(xiàn)在前端這塊再次到了這樣的瓶頸,所以決定自己開始開發(fā)和維護(hù)自己的一個框架。不強(qiáng)制綁定,但是會制定其他規(guī)則來避免用戶手動請求。項目目前完成板塊事件綁定及觸法地址處理以及路由處理。
為什么要框架
隨著電腦運(yùn)算能力的不斷提升,越來越多的網(wǎng)站開始將一些數(shù)據(jù)處理,簡單的業(yè)務(wù)邏輯交予前端。于是前端,特別是所謂的 Webapp 中,出現(xiàn)了大量的數(shù)據(jù)處理以及業(yè)務(wù)邏輯,前端的javascript代碼已經(jīng)不再是簡單的判斷用戶輸入那么簡單。和后端開發(fā)一樣,當(dāng)人們不能容忍php一個頁面里面寫下所有的業(yè)務(wù)邏輯和HTML代碼的時候,他們便會去找一款MVC的框架。前端現(xiàn)在也需要。
我理解的富應(yīng)用有兩個好處,首先會完全將前端和服務(wù)器端的開發(fā)獨立開來,即將服務(wù)器端的V完全交予前端人員開發(fā),于是便可以在前期規(guī)劃完API后進(jìn)行獨立開發(fā)。再者就是用戶體驗,不會出現(xiàn)傳統(tǒng)網(wǎng)頁上面的頁面全局刷新跳轉(zhuǎn)的情況,這樣就更像軟件的體驗(如果需要使用 webkit 打包便可以成為某種意義上的軟件)。
現(xiàn)有的框架自身接觸過的框架有 BackboneJS,EmberJS,AngularJS,三個都是不錯的框架。
BackboneJS 是三個里面唯一一個已經(jīng)認(rèn)真讀完源碼的框架,代碼寫的很不錯,而且這個框架也被國內(nèi)包括豆瓣,百度模仿了。他側(cè)重點是寫了一套不錯的Event的機(jī)制,當(dāng)你定義的Model變化的時候,會觸發(fā)相應(yīng)的事件,問題就是那些"會觸發(fā)的事件“都要你自己去定義,因此你需要手動更新DOM,會去寫很多代碼。
EmberJS 使用的第一感覺就是他的雙向綁定很舒服,不需要再像BackboneJS一樣去手寫很多代碼。但是EmberJS實在是太大了,而且寫代碼前總要不斷去設(shè)計Model,給我自身的感覺就是不夠的自由。而且當(dāng)你的后臺不能滿足 restful 的時候,自己寫請求然后處理的時候,會發(fā)現(xiàn)很麻煩。
AngularJS 是目前項目中正在用的框架。使用的時候感覺很特別,你可以通過directive去定義很多自己的HTML元素屬性。開發(fā)的時候你不需要去過多的關(guān)注Dom如何變化,你只需專注的處理你的數(shù)據(jù)。但是 AngularJS 里面運(yùn)用了太多的新東西,特別是Form處理的時候,數(shù)據(jù)的處理完全依靠HTML5的內(nèi)容。Angularjs 里面大量的用了 ng-xxx 的屬性,在HTML5里面自定義屬性推薦為 data-xx 的格式。還有就是 AngularJS 的速度和性能都不很理想。
以上都是個人觀點,不足以成為大家不去嘗試的理由。當(dāng)然還有一些很不錯的框架,例如 Knockout。
我為什么要挖一個坑作為一個前端的新人,希望能夠去給自己挖一個持久的坑。在剛剛開始學(xué)編程(剛剛開始是PHP)的時候,一個長輩就和我說我的PHP只是處在入門的級別,想要繼續(xù)提升建議去自己維護(hù)一個框架。但是這個框架一定是要自己持續(xù)在用的,要不然你維護(hù)不好。現(xiàn)在前端這塊再次到了這樣的瓶頸,所以決定自己開始開發(fā)和維護(hù)自己的一個框架。
現(xiàn)有的開源更多是代碼的開源,然后鼓勵大家一起去提供代碼。我想,除了挖一個代碼的坑以外,在這里持續(xù)的更新項目正在寫或者剛剛寫完的模塊的想法。有問題歡迎指出討論,在代碼還在設(shè)計的時候可以得到改正。
我想挖的坑的大概樣子雙向綁定:雖然有人說這個不太好,但是這個的確可以減少很多代碼。
同時支持占位符和正則的路由。
支持用戶登錄權(quán)限認(rèn)證,相應(yīng)url需要登錄時將會統(tǒng)一跳轉(zhuǎn)。
支持自定義html屬性添加,方便插件模塊化。
promise 風(fēng)格的支持。
簡單的模板語言支持,主要以自定義屬性的形式來處理模板。
Form 表單的統(tǒng)一驗證處理。
不強(qiáng)制綁定restful,但是會制定其他規(guī)則來避免用戶手動請求。
內(nèi)建類似 BackboneJS 的Model,Collection,根據(jù)服務(wù)器返回內(nèi)容自定建立,并綁定到模板。
讓前端工作能夠只需要關(guān)注模板和數(shù)據(jù)管理,其他盡量都自動完成。
項目目前完成板塊:事件綁定及觸法、地址處理以及路由處理。今后會逐一更新。(截止至2013年9月24日)
項目目前地址: https://github.com/HaiyiYun/VintJS
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/77922.html
摘要:一個是使用錨鏈接,即的方式實現(xiàn)。做程序的人大多了解測試。傳統(tǒng)的測試方法就是在完成后手動去觸發(fā)事件,然后手動輸入來檢測是否得到預(yù)期的效果。引入了測試框架后工作簡單了很多。前篇傳送門給自己挖個坑,開始去開發(fā)富應(yīng)用框架從的源碼開始說事件模型 URL 存在的意義在于使用者可以使用一段字符串就可以找到對應(yīng)的資源。富應(yīng)用中的內(nèi)容改變都是通過 Javascript 去改變文檔內(nèi)容,某種角度上來說整個...
摘要:三月轉(zhuǎn)眼就過去了。。學(xué)的時候突然想到能不能做個手機(jī),琢磨著鼓搗鼓搗還真鼓搗出了一兩個頁面。。先慢慢做做吧。。爭取月末前能做一兩個上去,然后把攢到的經(jīng)驗好好總結(jié)一下,也希望能得到一些寶貴的建議地址演示地址鎖屏密碼是,截個動圖展示一下 三月轉(zhuǎn)眼就過去了。。一想到月末就能回學(xué)校了心里還是有點小激動的,深感工作之后就沒什么玩的時間了,學(xué)生生涯還剩兩個月,抓緊時間好好享受最后的大學(xué)時光吧。 最近...
摘要:閉包就好像從中分離出來的一個充滿神秘色彩的未開化世界,只有最勇敢的人才能到達(dá)那里。興奮地趕緊自測咔咔咔連點三下。結(jié)果當(dāng)時內(nèi)心表情大概就像上面這個哥們。但還是在工位上故作鎮(zhèn)定地趕緊百度了下。 ? 閉包就好像從JavaScript中分離出來的一個充滿神秘色彩的未開化世界,只有最勇敢的人才能到達(dá)那里。——《你不知道的JavaScript 上卷》 1、起源 js閉包很長一...
摘要:為什么虛函數(shù)中如果在祖先和子孫類中定義了相同的名稱的方法,默認(rèn)會調(diào)用子孫類中的這個方法。然而,這跟私有成員又有什么關(guān)系呢因為私有函數(shù)肯定不是虛函數(shù),所以在中,如果將定義為私有,那調(diào)用的就一定是。虛函數(shù)的概念有點小復(fù)雜。 Class field declarations for JavaScript(JavaScript 類的字段聲明)目前已經(jīng)進(jìn)入了 stage-3,其中包含一項 OOP...
摘要:使用方法首先看一下簡易第一步,實例化滾動對象代碼其實還是蠻簡單的,首先我們初始化一個滾動的實例,構(gòu)造函數(shù)擁有兩個參數(shù),第一個是一個負(fù)責(zé)管理頁面滾動時需要處理事務(wù)的函數(shù),這個函數(shù)接受三個參數(shù),分別表示當(dāng)前頁面左移,向上移,縮放比信息。 ScrollerJS是什么 ScrollerJS是用于純邏輯的滾動縮放組件,它獨立于任何指定的渲染或者事件系統(tǒng)。上面是官方定義的,我再說一下我對這個庫的理...
閱讀 2765·2023-04-25 14:15
閱讀 2708·2021-11-04 16:11
閱讀 3399·2021-10-14 09:42
閱讀 448·2019-08-30 15:52
閱讀 2830·2019-08-30 14:03
閱讀 3550·2019-08-30 13:00
閱讀 2117·2019-08-26 11:40
閱讀 3312·2019-08-26 10:25