為什么說Vue.js是如此的有趣?
我想告訴你,我開始享受使用Vue.js和進(jìn)行前端開發(fā)的故事。這不應(yīng)該被理解為一篇關(guān)于為什么Vue.js可能比React,Angular或任何你正在考慮的其他Web框架更好的文章。Vuejs是令人驚嘆的,但我們生活在一個(gè)作為前端開發(fā)人員同樣令人驚嘆的時(shí)代。
如果你幾年前和我交談過,我會(huì)把自己定位為一個(gè)后端開發(fā)人員,掌握服務(wù)器和數(shù)據(jù)庫管理。面向?qū)ο蟮恼Z言,java和c #,我想找到一種自己需要交付程序時(shí)使用的唯一的開發(fā)語言,我逐漸了解到更多關(guān)于.NET和SQL服務(wù)器的堆棧技術(shù)。當(dāng)時(shí)我有這樣一個(gè)概念,前端開發(fā)者只是使用右腦的附庸風(fēng)雅的人,并不是“真正的”編程。
但是,在我最后一次求職,選擇很少。特別是工作面試,我看到了自己是如何失敗的。那次失敗非常令人沮喪,但我從中吸取了不少教訓(xùn)。我獲得了一個(gè)職位,利用了我在SharePoint的經(jīng)驗(yàn)。我在SharePoint的經(jīng)驗(yàn)并不特別:用GUI、工作流等設(shè)計(jì)頁面這個(gè)不是我理想中的工作,而是為了生活不得不做的工作。
當(dāng)我剛開始的時(shí)候,我接觸過像我過去做過的任何類似的項(xiàng)目。我依靠GUI設(shè)計(jì)用戶界面。幸運(yùn)的是,使用數(shù)據(jù)庫的經(jīng)驗(yàn)使我能夠以規(guī)范化的方式設(shè)計(jì)列表,但似乎缺乏用戶界面方面的功能。在SharePoint設(shè)計(jì)器中,即使修改了底層ASP,某些效果也很難實(shí)現(xiàn)。
我和一個(gè)很棒的開發(fā)人員進(jìn)行了討論,這真的觸動(dòng)了我,于是我開始了進(jìn)入前端框架的旅程。她說:“你知道…SharePoint支持REST服務(wù)。”啊,是的!我可以在SharePoint上使用Ajax,并根據(jù)響應(yīng)情況建立我的HTML。這將是超級(jí)有趣的!
我們的第一次迭代的一個(gè)特定的應(yīng)用**xmlhttprequests,**通過JavaScript函數(shù)構(gòu)建HTML。這種方法的連接如此之多以至于我們的函數(shù)和字符串變得越來越難維護(hù)。所以,我想知道這個(gè)問題是否有一個(gè)更好的通用的解決方案。
當(dāng)然有!歡迎閱讀“Why you should use framework X”的視頻和博客。在做了教程和觀看關(guān)于這個(gè)主題的辯論之后,我拒絕使用框架。畢竟,使用一個(gè)框架意味著每個(gè)人都必須變得聰明起來。然而,研究框架的過程中,我碰到Handlebars,模板引擎使用的Ember。
所以,我們做了任何明智的團(tuán)隊(duì)都會(huì)做的事。我們重寫了項(xiàng)目使用該模板引擎。除了顯式調(diào)用編譯函數(shù)之外,這是一次不錯(cuò)的體驗(yàn)。最初的渲染完全沒有問題。不過,我們需要添加在項(xiàng)目列表中折疊/展開某些項(xiàng)的能力。我的這個(gè)問題的第一種方法是給我的對(duì)象設(shè)置一個(gè)“visible”的屬性,當(dāng)屬性的值發(fā)生了變化那么就重新編譯模版。這意味著數(shù)百個(gè)元素必須根據(jù)變化重新渲染。我們利用jQuery來應(yīng)用處理程序,它可以基于某些選擇器顯示/隱藏元素。
我覺得這很混亂。最終產(chǎn)品是功能性的,但是我能在一個(gè)月內(nèi)完成代碼并維護(hù)它嗎?可能需要一年?如果不費(fèi)力氣的話。請(qǐng)?jiān)试S我借此機(jī)會(huì)說,可維護(hù)的代碼寫了大量使用jQuery和Handlebars。在這一點(diǎn)上,我沒有能力把它搞到位。
所以,我就想回去研究一下可用的框架。有這么多好的框架可選,但我們有一個(gè)獨(dú)特的環(huán)境。我們不能使用node。沒有NPM,沒有工具被大量使用在每一個(gè)框架。我們得出的結(jié)論是,在瀏覽器中運(yùn)行Babel也會(huì)降低性能??紤]到這些條件,React、Ember和Angular2 +是不可行的選項(xiàng)。
我們沒有認(rèn)真考慮AngularJS(1)。我已經(jīng)用它實(shí)現(xiàn)了另一個(gè)項(xiàng)目,但它已不被官方支持了,并且vue.js剛剛發(fā)布了V2版本和一個(gè)清晰的在瀏覽器使用的路徑。它會(huì)繼續(xù)受到歡迎,并且有可用的工具。所以,如果我們不失時(shí)機(jī)的使用它,包括一個(gè)它提供的工具時(shí),我們也就決定支持它了。
為什么是Vue.js,好玩嗎?
許多我所給的原因可以歸因于Vue的替代品。
模板
最初使我對(duì)vue.js感興趣的是模板。使用一些花括號(hào),我可以根據(jù)JavaScript訪問的變量將值插入到提交內(nèi)容中。通過模板的使用等于提供了一個(gè)路徑,Vue.js DOM和組件模板更容易被使用。另外,沒有太關(guān)注在IE9 +使用vue.js,而IE不支持模板。
響應(yīng)性
事實(shí)上,我可以對(duì)我們的模型進(jìn)行更改,它會(huì)自動(dòng)更新頁面上的內(nèi)容,這也是為什么讓我覺得angular.js好用的原因。類似的原來“ng-model”模型,vue.js提供了一個(gè)“V”的指令可以很容易的把輸入內(nèi)容顯示出來。使用watchers,這種響應(yīng)擴(kuò)展到執(zhí)行操作不一定與頁面上發(fā)生的事情相關(guān)。
組件
雖然你不使用組件也可以利用Vue的響應(yīng)和模板,但組件化的體系結(jié)構(gòu)的實(shí)現(xiàn)是真的很有趣。學(xué)習(xí)如何將行為封裝到組件中是很有趣的,它使我能夠高效地分割代碼。類似于生活在C #世界在哪里類需要做的太多了,我意識(shí)到當(dāng)一個(gè)組件可能做的太多了。這種做法在某種程度上激發(fā)了智力,刺激了編程時(shí)的感覺。
為什么覺得前端這么有趣?
作為一個(gè)孩子,我的夢(mèng)想就是編程。確切地說是什么?桌面應(yīng)用程序和游戲。當(dāng)我開始從事真正的編程工作時(shí),我真的很想從事那種我的工作使別人很受益的。我不知道你,但直到最近,我有一個(gè)先入為主的概念“真正的程序員”層次結(jié)構(gòu),看起來像是這樣。
- 真正的程序員
- 操作系統(tǒng)/內(nèi)核程序員
- 桌面應(yīng)用程序
- 游戲程序員
- 后端網(wǎng)絡(luò)程序員
- 前端網(wǎng)絡(luò)程序員
- SharePoint /銷售人員/其他平臺(tái)程序員
- 微軟Office(Access / Excel)程序員
- 不是真正的程序員
這種想法真的讓我覺得自己是個(gè)做后臺(tái)的人,更不用說前端了。在很長(zhǎng)很長(zhǎng)的一段時(shí)間里,甚至在許多地方,前端和后臺(tái)兩者都是同一個(gè)人來做。這導(dǎo)致了對(duì)前端較少關(guān)注,導(dǎo)致產(chǎn)生了很多低質(zhì)量的站點(diǎn)。隨后,公司開始雇用前端的人,以美元為單位得到他們的費(fèi)用。這份工作名聲不太好,我不想和那個(gè)名聲有任何關(guān)系。
然而,如前所述,我發(fā)現(xiàn)自己處于一個(gè)需要依靠前端滿足需求的尷尬位置。令我驚訝的是,瀏覽器的編程不僅有趣,而且功能齊全。
瀏覽器的能力
我總是驚訝于瀏覽器能處理什么。即使是可憐的老Internet Explorer,也可以在不調(diào)用服務(wù)器的情況下處理讀取、解析和創(chuàng)建Excel文件。畫布和SVG給我們兩個(gè)超級(jí)有用的方法來創(chuàng)造美麗和動(dòng)態(tài)的圖像/動(dòng)畫。使用Ajax,我們可以創(chuàng)建周期性地、無縫地向用戶更新的動(dòng)態(tài)內(nèi)容。
分享就是快樂
在客戶端開發(fā)時(shí)如果沒有隱藏你的源代碼。它在那里讓世界都可以看到。所以,也不震驚,JavaScript的項(xiàng)目在很大程度體現(xiàn)在GitHub上。此外,許多項(xiàng)目是麻省理工學(xué)院,Apache,或其他許可非常友好。**Score!**來自令人敬畏的人的貢獻(xiàn)幫助我以更快、更有意義的方式為我的公司做出貢獻(xiàn)。
即時(shí)滿足
與桌面應(yīng)用程序開發(fā)類似,我們常常以可視化的方式看到代碼的影響。我們可以使用CSS和視覺上有吸引力的站點(diǎn)的一點(diǎn)天賦,來改善我們作為開發(fā)者在我們的老板和用戶中的印象。再加上一個(gè)視覺框架Twitter的Bootstrap或者Bulma,我們真的可以減少時(shí)間而增加一些吸引力。
Write Once Run Everywhere
舊的java web開發(fā)說跑起來比java本身要更真實(shí)。使代碼兼容多個(gè)瀏覽器和針對(duì)不同屏幕大小的布局同樣面臨挑戰(zhàn)。這些挑戰(zhàn)本身很有趣,因?yàn)檫@讓我們了解了各種平臺(tái)。
JavaScript
JavaScript繼續(xù)以極快的速度發(fā)展,但它是一種非常有趣的語言。從“= =”和“= = =”差異中體會(huì)函數(shù)處理類原型繼承功能的編程方法,學(xué)習(xí)這種語言已經(jīng)超好玩。能夠?qū)⑿碌墓δ蹷abel到我的網(wǎng)站(項(xiàng)目)就更是屌爆了一樣。
總結(jié)一下
作為前端Web開發(fā)人員,我可以與職場(chǎng)中的優(yōu)秀人員一起工作,并在更大的開發(fā)人員社區(qū)中獲得對(duì)我想法的反饋。你為什么喜歡前端開發(fā)?你覺得Vue.js怎么樣?
感謝閱讀!