自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為何轉(zhuǎn)向Spine.js的十個(gè)理由

開發(fā) 前端
開始學(xué)習(xí) Spine.js ,我花了一個(gè)晚上通讀了用戶手冊(cè)以及試驗(yàn)它的示例app,我看到的一切看起來(lái)都挺好。那一晚,我是帶著燦爛睡覺的,即使我真的很難入眠,因?yàn)槲业炔患毕胧褂盟恕J裁醋屛胰绱伺d奮呢?

在過去的幾年里,我逐漸將興趣由桌面轉(zhuǎn)移到web上。我對(duì)于能在任何設(shè)備上用瀏覽器訪問的app的這種方式很是著迷。我有用過HTML,CSS,Flash和PHP的經(jīng)驗(yàn),所以我很熟悉這一領(lǐng)域–但是我只曾做過網(wǎng)站,而不是web app。我開始深入了解Rails,并立刻愛上了它,我所熟知的Flash的快速反應(yīng)被替換成了頁(yè)面加載。因此,我轉(zhuǎn)向了Javascript。

就像學(xué)校新來(lái)的小孩,關(guān)于框架我分不清誰(shuí)是誰(shuí)。我尋找著,發(fā)覺 Backbone.js 幾乎在每個(gè)地方都能見著,于是我便假定他是個(gè)標(biāo)準(zhǔn)。幾個(gè)月后,我發(fā)現(xiàn)它不是為我準(zhǔn)備的–Backbone.js 缺乏清晰的使用方向。每個(gè)我閱讀過的教程都使用著不同的結(jié)構(gòu),這感覺太容易忽視常規(guī)有效的設(shè)計(jì)模式。

開始學(xué)習(xí) Spine.js ,我花了一個(gè)晚上通讀了用戶手冊(cè)以及試驗(yàn)它的示例app,我看到的一切看起來(lái)都挺好。那一晚,我是帶著燦爛睡覺的,即使我真的很難入眠,因?yàn)槲业炔患毕胧褂盟?。什么讓我如此興奮呢?就是下面的這是個(gè)理由:

1、清晰的結(jié)構(gòu)

Spine.js 遵循MVC模式,我寫的所有應(yīng)用都遵循著MVC架構(gòu),所以我很快就知道該怎么用Spine.js組織我的應(yīng)用結(jié)構(gòu)。這種似曾相識(shí)的感覺太棒了。這使得哪個(gè)類在干什么,哪個(gè)類是激活的清晰明了。

2、模型就是模型

Backbone.js也有模型,但是它很笨拙,因?yàn)橛行┘?ndash;本質(zhì)上是模型數(shù)組,它們能查詢API并用結(jié)果給自己賦值。Spine.js模型跟Rails模型非常相似。一個(gè)模型能夠被實(shí)例化用來(lái)呈現(xiàn)記錄,但是它也擁有類級(jí)別的方法從API中取出結(jié)果。這些方法返回結(jié)果而不是產(chǎn)生一個(gè)數(shù)組,所以我們不需要考慮類在何處活躍。因?yàn)榧鲜菍?shí)例,我看到過的許多示例中都把它們看作單例。結(jié)果,那些學(xué)習(xí)Backbone.js并跟隨著那些示例的人也學(xué)會(huì)了寫著不可測(cè)的代碼。

3、Spine.app

當(dāng)使用Backbone.js時(shí),我發(fā)現(xiàn)每次創(chuàng)建新類時(shí)我都會(huì)拷貝/粘貼代碼,我開始想念在Rails時(shí)我習(xí)慣的生成器了。只需一條命令,我就能基于模版生成一個(gè)帶有spec的新類,這為我節(jié)約了了幾年開發(fā)的生命。“開發(fā)Backbone.js生成器”持續(xù)停留在我的todo列表,但是我從未著手于此。

Spine.app 生成文件,只需一行,我就創(chuàng)建了一個(gè)新類并帶有spec,就像Rails一樣。

4、動(dòng)態(tài)記錄

這個(gè)就想瘋狂的黑魔法一樣,但是它解決了一個(gè)我在Backbone.js遇到的問題。假設(shè)你應(yīng)用的一個(gè)視圖獲得了一條記錄。然后你在不同的視圖獲取并更新了同一條記錄。在 Spine.js 中,兩條記錄都將同時(shí)更新。你不用擔(dān)心保持他們同步。當(dāng)我讀到這一條時(shí),我便為之感動(dòng)了。

5、元素Hash

使用Backbone.js時(shí),我總是發(fā)現(xiàn)我手動(dòng)地分配變量用來(lái)在每個(gè)視圖的渲染方法中嵌入元素,為每個(gè)元素重復(fù)相同的代碼–有很多的樣板文件。在Spine.js中,它擁有元素hash,key是選擇器,值則是變量名,正如Backbone.js事件hash一樣,你所有的元素都會(huì)被映射,這樣清晰而簡(jiǎn)潔。

6、方法更新

在我使用Flash的日子,優(yōu)化是生存的關(guān)鍵。如果我忘記移除某個(gè)事件監(jiān)聽器,我的app將會(huì)內(nèi)存溢出,就像一個(gè)少于維護(hù)的應(yīng)用。就因?yàn)檫@個(gè),我在每個(gè)類中都包含了一個(gè)方法用來(lái)注銷和移除所有的事件監(jiān)聽器。而Spine.js內(nèi)建有這個(gè)功能。

7、控制器中的路由

Spine.js中沒有Router類,這個(gè)功能屬于控制器類的一部分。在任何控制器中,我能導(dǎo)航至新的位置,并對(duì)新位置做出反應(yīng)。其他的控制器也同樣能對(duì)這個(gè)新位置作出反應(yīng)。現(xiàn)在就沒必要?jiǎng)?chuàng)建一個(gè)路由單例了。

8、模型適配器

默認(rèn)情況下,Spine.js 把模型保存在內(nèi)存中,但是有兩個(gè)適配器可以被應(yīng)用到任何的模型類上–Ajax和Local。只需簡(jiǎn)單的繼承這些適配器,你的數(shù)據(jù)將可以在遠(yuǎn)端數(shù)據(jù)庫(kù)存留或者是使用HTML5本地存儲(chǔ)API。所有這些功能僅需一行代碼。

9、從HTML元素中獲取模型

這是我在Backbone.js遇到的另一個(gè)問題,我會(huì)實(shí)例化一個(gè)視圖并綁定到一個(gè)模型,當(dāng)我需要不通過訪問視圖實(shí)例來(lái)引用數(shù)據(jù)時(shí),我就沒那么幸運(yùn)了。Spine.js提供了一個(gè)jQuery插件來(lái)訪問元素的模型。僅需在元素上調(diào)用data方法你變獲取了對(duì)應(yīng)模型。

10、日志

Spine.js 生來(lái)就具備著一個(gè)輕量級(jí)的方便日志模塊。你可以在任何控制器中調(diào)用log方法,它將會(huì)加上一系列前綴并輸出到console。

原文鏈接:http://www.mhtml5.com/2012/07/5222.html

【編輯推薦】

  1. 如何優(yōu)化你的JS代碼
  2. 另一款有意思的JS圖片放大鏡
  3. 大部分人沒用過的JS頁(yè)面模板化
  4. 能說(shuō)明你的JS技術(shù)很爛的五個(gè)原因
  5. 想不到的將JS文件壓縮成PNG圖像存儲(chǔ)方法
責(zé)任編輯:張偉 來(lái)源: HTML5研究小組
相關(guān)推薦

2011-03-18 10:37:27

2009-04-30 08:58:39

微軟操作系統(tǒng)Windows 7

2011-07-06 09:29:17

程序員

2022-08-26 12:10:49

MSS服務(wù)網(wǎng)絡(luò)安全

2012-11-21 10:01:35

RubyWeb

2022-07-13 13:33:39

企業(yè)開源開發(fā)

2010-08-02 10:36:05

Exchange 20

2009-08-28 17:35:37

2013-08-20 09:59:25

Windows 8.1微軟操作系統(tǒng)

2013-03-21 09:34:30

2011-09-05 09:19:35

虛擬化基礎(chǔ)架構(gòu)

2019-12-30 12:03:59

戴爾

2019-09-26 14:20:27

JavaScript代碼編程語(yǔ)言

2010-03-25 16:20:40

2017-01-22 12:41:02

CinnamonLinux桌面

2012-11-07 09:53:50

2023-02-17 09:52:26

2016-08-03 11:48:59

2018-05-23 14:10:15

程序員技能溝通

2012-09-18 09:20:06

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)