我們?yōu)楹芜x擇vue.js
幾周之前我和一位面試者暢談了關(guān)于我們應(yīng)該如何選擇js框架。他指出當(dāng)大廠開(kāi)始公開(kāi)它們的獨(dú)家秘方,是多么令人興奮。開(kāi)發(fā)者內(nèi)心獨(dú)白:“這些大廠書(shū)寫(xiě)的js與我的不同,他們卓越且成功。他們組織js的方式比我好?我要接受它?”
他們的秘密武器應(yīng)該是優(yōu)秀的,但不要因?yàn)槠渌说募で槎ゼ僭O(shè)它的優(yōu)異性。在未理解之前,你不會(huì)從StackOverflow 上復(fù)制黏貼答案,所以為何你要復(fù)制黏貼一個(gè)框架?
這讓我想到了當(dāng)初我們決定在GitLab上使用 vue
更簡(jiǎn)單更易用
讓我們投向Vue.js的主要原因在于:它能讓團(tuán)隊(duì)書(shū)寫(xiě)用js更容易并且簡(jiǎn)化了js。上手Vue.js是相當(dāng)容易的。它的源碼有著很高的可讀性,如果你需要僅用他的文檔便可入門(mén)。你不必使用任何額外的庫(kù)。如果需要可以和jQuery協(xié)同工作。他有許多的插件,但并非必須。我個(gè)人很喜歡優(yōu)雅的Vue.js。用Vue.js配合已存在代碼是十分簡(jiǎn)單的。Vue.js并不神秘,他的底層僅僅是一個(gè)對(duì)象。
我與許多js開(kāi)發(fā)者討論過(guò)后發(fā)現(xiàn)一個(gè)有趣的現(xiàn)象:那些花費(fèi)主要時(shí)間在Angular上的開(kāi)發(fā)者對(duì)js的理解并沒(méi)有多深。我并不想這樣的情形出現(xiàn)在我和我的伙伴身上。為何我們要書(shū)寫(xiě)“非js”?
這讓我想到了當(dāng)初使用Backbone的情形,我需要盡可能保持DRY(don`t repeat yourself),因?yàn)檫@玩意就是張白紙隨你書(shū)寫(xiě)。Vue.js并未對(duì)其他東西做過(guò)多工作,它只關(guān)注數(shù)據(jù)。
但Vue.js在你要做的與他能做的之間達(dá)到了***的平衡。如果Backbone 是無(wú)政府狀態(tài)(無(wú)人負(fù)責(zé))那么Angular就是獨(dú)裁者(Angular團(tuán)隊(duì)負(fù)責(zé)所有)。我覺(jué)得Vue.js像是共產(chǎn)主義:項(xiàng)目由你負(fù)責(zé),但Vue.js為你鋪設(shè)了一張可延展,健壯并且有彈性的安全網(wǎng)來(lái)幫助你更加有效地編程,并且規(guī)避dom帶來(lái)的影響。
為了讓你理解我的想法,請(qǐng)看代碼點(diǎn)擊預(yù)覽
- <div id="journal">
- <input type="text" v-model="message">
- <div>{{message}}</div>
- </div>
- var journal = new Vue({
- el: '#journal',
- data: {
- message: 'Your first entry'
- }
- });
如果你曾看過(guò)一些js庫(kù),那么在不依賴(lài)文檔的情況下,看懂上述例子中的代碼并不困難。通常在其他框架中,此處需要簡(jiǎn)單暫停一下。當(dāng)你執(zhí)行“入門(mén)”級(jí)別的例子時(shí),你感到滿(mǎn)意。但當(dāng)你想要在框架上獲得花費(fèi)成本的價(jià)值時(shí),事情變的復(fù)雜起來(lái)。這并不會(huì)發(fā)生在Vue.js上,實(shí)際應(yīng)用就與文檔例子一樣簡(jiǎn)單。
Vue.js + GitLab意味著更少的代碼
那么這為GitLab解決了哪些問(wèn)題?我加入之時(shí),所有的代碼使用JQuery書(shū)寫(xiě),這并非有什么錯(cuò)誤,不過(guò)這花費(fèi)了更多的代碼來(lái)解決每個(gè)問(wèn)題。我們知道自己可以做的更好。一旦我們開(kāi)始使用Vue.js,我們使用更少的代碼便能夠迅速且連續(xù)地解決復(fù)雜的問(wèn)題。
舉一個(gè)我們項(xiàng)目使用過(guò)程中簡(jiǎn)單且實(shí)際的例子:在GitLab Issue中,issue的狀態(tài)是在closed 與open 間切換的。這個(gè)值經(jīng)常需要變化,并且應(yīng)用在許多的個(gè)view中。使用JQuery你需要30行左右的代碼來(lái)實(shí)現(xiàn)該功能。
在Vue.js中,我們僅需要一行的js代碼。其他代碼我們加在HTML 中添加一些額外的屬性。
尤雨溪甚至做一個(gè)碉堡的框架并不僅僅是書(shū)寫(xiě)優(yōu)秀的代碼。你需要一個(gè)優(yōu)異的文檔,一個(gè)幫組每一個(gè)人學(xué)習(xí)的強(qiáng)大社區(qū),一個(gè)配套庫(kù)的支持,大量插件幫組使用者解決困難,一個(gè)基于用戶(hù)用戶(hù)反饋并保證框架關(guān)聯(lián)性的反饋循環(huán)。Vue.js是所有這些的集合體,并非僅僅只有優(yōu)秀的代碼。這就是我使用它的原因,那么你呢?