亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

給自己挖個(gè)坑,開始去開發(fā)javascript富應(yīng)用框架

lidashuang / 2167人閱讀

摘要:是目前項(xiàng)目中正在用的框架?,F(xiàn)在前端這塊再次到了這樣的瓶頸,所以決定自己開始開發(fā)和維護(hù)自己的一個(gè)框架。不強(qiáng)制綁定,但是會(huì)制定其他規(guī)則來避免用戶手動(dòng)請(qǐng)求。項(xiàng)目目前完成板塊事件綁定及觸法地址處理以及路由處理。

為什么要框架

隨著電腦運(yùn)算能力的不斷提升,越來越多的網(wǎng)站開始將一些數(shù)據(jù)處理,簡(jiǎn)單的業(yè)務(wù)邏輯交予前端。于是前端,特別是所謂的 Webapp 中,出現(xiàn)了大量的數(shù)據(jù)處理以及業(yè)務(wù)邏輯,前端的javascript代碼已經(jīng)不再是簡(jiǎn)單的判斷用戶輸入那么簡(jiǎn)單。和后端開發(fā)一樣,當(dāng)人們不能容忍php一個(gè)頁(yè)面里面寫下所有的業(yè)務(wù)邏輯和HTML代碼的時(shí)候,他們便會(huì)去找一款MVC的框架。前端現(xiàn)在也需要。

我理解的富應(yīng)用有兩個(gè)好處,首先會(huì)完全將前端和服務(wù)器端的開發(fā)獨(dú)立開來,即將服務(wù)器端的V完全交予前端人員開發(fā),于是便可以在前期規(guī)劃完API后進(jìn)行獨(dú)立開發(fā)。再者就是用戶體驗(yàn),不會(huì)出現(xiàn)傳統(tǒng)網(wǎng)頁(yè)上面的頁(yè)面全局刷新跳轉(zhuǎn)的情況,這樣就更像軟件的體驗(yàn)(如果需要使用 webkit 打包便可以成為某種意義上的軟件)。

現(xiàn)有的框架

自身接觸過的框架有 BackboneJS,EmberJS,AngularJS,三個(gè)都是不錯(cuò)的框架。

BackboneJS 是三個(gè)里面唯一一個(gè)已經(jīng)認(rèn)真讀完源碼的框架,代碼寫的很不錯(cuò),而且這個(gè)框架也被國(guó)內(nèi)包括豆瓣,百度模仿了。他側(cè)重點(diǎn)是寫了一套不錯(cuò)的Event的機(jī)制,當(dāng)你定義的Model變化的時(shí)候,會(huì)觸發(fā)相應(yīng)的事件,問題就是那些"會(huì)觸發(fā)的事件“都要你自己去定義,因此你需要手動(dòng)更新DOM,會(huì)去寫很多代碼。

EmberJS 使用的第一感覺就是他的雙向綁定很舒服,不需要再像BackboneJS一樣去手寫很多代碼。但是EmberJS實(shí)在是太大了,而且寫代碼前總要不斷去設(shè)計(jì)Model,給我自身的感覺就是不夠的自由。而且當(dāng)你的后臺(tái)不能滿足 restful 的時(shí)候,自己寫請(qǐng)求然后處理的時(shí)候,會(huì)發(fā)現(xiàn)很麻煩。

AngularJS 是目前項(xiàng)目中正在用的框架。使用的時(shí)候感覺很特別,你可以通過directive去定義很多自己的HTML元素屬性。開發(fā)的時(shí)候你不需要去過多的關(guān)注Dom如何變化,你只需專注的處理你的數(shù)據(jù)。但是 AngularJS 里面運(yùn)用了太多的新東西,特別是Form處理的時(shí)候,數(shù)據(jù)的處理完全依靠HTML5的內(nèi)容。Angularjs 里面大量的用了 ng-xxx 的屬性,在HTML5里面自定義屬性推薦為 data-xx 的格式。還有就是 AngularJS 的速度和性能都不很理想。

以上都是個(gè)人觀點(diǎn),不足以成為大家不去嘗試的理由。當(dāng)然還有一些很不錯(cuò)的框架,例如 Knockout。

我為什么要挖一個(gè)坑

作為一個(gè)前端的新人,希望能夠去給自己挖一個(gè)持久的坑。在剛剛開始學(xué)編程(剛剛開始是PHP)的時(shí)候,一個(gè)長(zhǎng)輩就和我說我的PHP只是處在入門的級(jí)別,想要繼續(xù)提升建議去自己維護(hù)一個(gè)框架。但是這個(gè)框架一定是要自己持續(xù)在用的,要不然你維護(hù)不好?,F(xiàn)在前端這塊再次到了這樣的瓶頸,所以決定自己開始開發(fā)和維護(hù)自己的一個(gè)框架。

現(xiàn)有的開源更多是代碼的開源,然后鼓勵(lì)大家一起去提供代碼。我想,除了挖一個(gè)代碼的坑以外,在這里持續(xù)的更新項(xiàng)目正在寫或者剛剛寫完的模塊的想法。有問題歡迎指出討論,在代碼還在設(shè)計(jì)的時(shí)候可以得到改正。

我想挖的坑的大概樣子

雙向綁定:雖然有人說這個(gè)不太好,但是這個(gè)的確可以減少很多代碼。

同時(shí)支持占位符和正則的路由。

支持用戶登錄權(quán)限認(rèn)證,相應(yīng)url需要登錄時(shí)將會(huì)統(tǒng)一跳轉(zhuǎn)。

支持自定義html屬性添加,方便插件模塊化。

promise 風(fēng)格的支持。

簡(jiǎn)單的模板語言支持,主要以自定義屬性的形式來處理模板。

Form 表單的統(tǒng)一驗(yàn)證處理。

不強(qiáng)制綁定restful,但是會(huì)制定其他規(guī)則來避免用戶手動(dòng)請(qǐng)求。

內(nèi)建類似 BackboneJS 的Model,Collection,根據(jù)服務(wù)器返回內(nèi)容自定建立,并綁定到模板。

讓前端工作能夠只需要關(guān)注模板和數(shù)據(jù)管理,其他盡量都自動(dòng)完成。

項(xiàng)目目前完成板塊:事件綁定及觸法、地址處理以及路由處理。今后會(huì)逐一更新。(截止至2013年9月24日)

項(xiàng)目目前地址: https://github.com/HaiyiYun/VintJS

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/77922.html

相關(guān)文章

  • 應(yīng)用中 URL 管理以及 Javascript 測(cè)試

    摘要:一個(gè)是使用錨鏈接,即的方式實(shí)現(xiàn)。做程序的人大多了解測(cè)試。傳統(tǒng)的測(cè)試方法就是在完成后手動(dòng)去觸發(fā)事件,然后手動(dòng)輸入來檢測(cè)是否得到預(yù)期的效果。引入了測(cè)試框架后工作簡(jiǎn)單了很多。前篇傳送門給自己挖個(gè)坑,開始去開發(fā)富應(yīng)用框架從的源碼開始說事件模型 URL 存在的意義在于使用者可以使用一段字符串就可以找到對(duì)應(yīng)的資源。富應(yīng)用中的內(nèi)容改變都是通過 Javascript 去改變文檔內(nèi)容,某種角度上來說整個(gè)...

    kid143 評(píng)論0 收藏0
  • 個(gè)坑。。用 React 來做個(gè)iPhone?

    摘要:三月轉(zhuǎn)眼就過去了。。學(xué)的時(shí)候突然想到能不能做個(gè)手機(jī),琢磨著鼓搗鼓搗還真鼓搗出了一兩個(gè)頁(yè)面。。先慢慢做做吧。。爭(zhēng)取月末前能做一兩個(gè)上去,然后把攢到的經(jīng)驗(yàn)好好總結(jié)一下,也希望能得到一些寶貴的建議地址演示地址鎖屏密碼是,截個(gè)動(dòng)圖展示一下 三月轉(zhuǎn)眼就過去了。。一想到月末就能回學(xué)校了心里還是有點(diǎn)小激動(dòng)的,深感工作之后就沒什么玩的時(shí)間了,學(xué)生生涯還剩兩個(gè)月,抓緊時(shí)間好好享受最后的大學(xué)時(shí)光吧。 最近...

    Blackjun 評(píng)論0 收藏0
  • 解密 JavaScript 執(zhí)行上下文

    摘要:閉包就好像從中分離出來的一個(gè)充滿神秘色彩的未開化世界,只有最勇敢的人才能到達(dá)那里。興奮地趕緊自測(cè)咔咔咔連點(diǎn)三下。結(jié)果當(dāng)時(shí)內(nèi)心表情大概就像上面這個(gè)哥們。但還是在工位上故作鎮(zhèn)定地趕緊百度了下。 ? 閉包就好像從JavaScript中分離出來的一個(gè)充滿神秘色彩的未開化世界,只有最勇敢的人才能到達(dá)那里?!赌悴恢赖腏avaScript 上卷》 1、起源 js閉包很長(zhǎng)一...

    khlbat 評(píng)論0 收藏0
  • JavaScript 私有成員

    摘要:為什么虛函數(shù)中如果在祖先和子孫類中定義了相同的名稱的方法,默認(rèn)會(huì)調(diào)用子孫類中的這個(gè)方法。然而,這跟私有成員又有什么關(guān)系呢因?yàn)樗接泻瘮?shù)肯定不是虛函數(shù),所以在中,如果將定義為私有,那調(diào)用的就一定是。虛函數(shù)的概念有點(diǎn)小復(fù)雜。 Class field declarations for JavaScript(JavaScript 類的字段聲明)目前已經(jīng)進(jìn)入了 stage-3,其中包含一項(xiàng) OOP...

    lakeside 評(píng)論0 收藏0
  • 解決多場(chǎng)景/多端的頁(yè)面滾動(dòng)縮放組件-ScrollerJS

    摘要:使用方法首先看一下簡(jiǎn)易第一步,實(shí)例化滾動(dòng)對(duì)象代碼其實(shí)還是蠻簡(jiǎn)單的,首先我們初始化一個(gè)滾動(dòng)的實(shí)例,構(gòu)造函數(shù)擁有兩個(gè)參數(shù),第一個(gè)是一個(gè)負(fù)責(zé)管理頁(yè)面滾動(dòng)時(shí)需要處理事務(wù)的函數(shù),這個(gè)函數(shù)接受三個(gè)參數(shù),分別表示當(dāng)前頁(yè)面左移,向上移,縮放比信息。 ScrollerJS是什么 ScrollerJS是用于純邏輯的滾動(dòng)縮放組件,它獨(dú)立于任何指定的渲染或者事件系統(tǒng)。上面是官方定義的,我再說一下我對(duì)這個(gè)庫(kù)的理...

    fuyi501 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

lidashuang

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<