前端開發中的一些框架,插件,git使用真的很重要麼?

交代下背景:在家自學前端,40多天了,自我感覺進度還是算快了,雖比不上培訓的進度,但好歹隨便丟個頁面給我都能寫出,簡單二級目錄,下拉菜單和JS的簡單交互能寫,js主要是看DOM編程藝術和高級程序這兩本書。

不久前報了趣編程,目的是為了有寫項目的經驗,更加系統去了解前端開發的一個流程。那麼問題就來了,寫項目的過程中,被要求用到很多一時半會無法理解的東西,比如「搭建開發環境,伺服器知識。第一個項目的時候安裝了node.js,設置cnpm鏡像,安裝全局依賴,難度不是很大,勉勉強強在指導下完成。」於是接到第二個任務,(這個可能才是真正意義上寫項目),這期間學會phpstorm,和git,下載項目到本地,然後切換分支,新建資料庫,又安裝了composer,mysql.中途又要去了解laravel, Angular。由於有readme文檔提示,就是照著命令打開DOS鍵入,說真的,知其然不知其所以然!

我覺得學習前端,好比就是去一個很遠的地方。當我學習了html我就能步行上路,但敢時間,我學會css,js,就有自行車。在路上聽說還有JQ,ajax,就好比是汽車。後來又知道有nodejs,wnpm,各種框架。它們就好比高鐵,飛機,很有用,但目前我真的用不上啊,每次DOS一個命令,我都要去查Google了解他的意義,各個軟體對於開發起什麼作用,nodejs下載一次做完第一個項目再也沒有用過。

我感覺走錯了方向,是不是應該騎好我的自行車啊?因為要去了解這些JS進度變慢了,另外我也不急著找工作,準備學到明年2月份吧,時間比較充裕,家裡也比較支持,每天6--10個小時學習。所以我想知道接下來改如何學。


說真的,40天的學習能夠接觸到這麼多東西,已經說明你具有超強的理解能力了。對於一個初學者來說,你所掌握的知識已經是一個非常好的開始了。

首先,跟其他領域的計算機技術相比,Web前端看上去確實比較「混亂」:沒有像C#或者java這樣設計嚴謹的全能型語言,也沒有Microsoft/Sun這樣的巨頭,能以一己之力定義新的行業發展方向。各個技術側重點不同,各自為戰(但沒有任何一項技術能夠cover全局);新的開源語言/框架/library層出不窮,水平也良莠不齊(但這也造就了前端技術成為互聯網發展最快的領域之一)。

雖說摩天大樓拔地起,但望向地基時,看到的仍然是Web前端萬年不變的三大基石:HTML,JavaScript,CSS。這三門技術之所以能成為整個行業的基石,並不是因為他們有多優秀(個人認為CSS是門非常糟糕的語言),而是因為他們分別代表了web中的三個必要元素:內容,業務邏輯 和 樣式,並且分別在這三個分支中最先提供了全覆蓋(但不那麼優美)的解決方案。這當中,JavaScript可以說是最龐雜的一門語言,值得好好學習。

在這之上,任何新的框架/library都是對這三者的補充和完善。你現在之所以糾結,我猜是因為不知道到底為什麼要用這些技術(我用JavaScript明明可以實現我要的所有功能啊),或者說沒有親身體驗過「飛機」到底比「汽車」快多少。

但是相信我,當你:

試圖記住XMLHttpRequest()冗長用法的時候,會發現jQuery的ajax()是多麼地簡潔;

當你的css selector長到一行都放不下的時候,會發現less的嵌套結構定義是多麼地優美;

當你被無休無止的@media調試搞得焦頭爛額的時候,會想知道Bootstrap如何快速地幫你構建一個responsive頁面;

當你的JavaScript里充滿了諸如getelementbyid().innerHTML等更新UI的代碼,你會發現Angular/Handlebars的數據綁定簡直就是上帝派給前端程序員的福音,直接減少一半的代碼量。。。

我想說的是,等你有了實際的需求,真真切切感受到了痛點,再去按需學習這些技術,絕對能夠事半功倍。被經驗豐富的人強行灌輸一定要用某個你聽都沒聽說過的技術,必定學得一頭霧水,也心不甘情不願。

對於一個初學者來說,JavaScript的重要性再怎麼強調都不為過。當下的library都是用原生JavaScript寫成。日後當你試圖深入理解這些lib的工作方式,閱讀他們的源代碼時,你會發現如果JavaScript不過關,這些源代碼簡直變成天書,連一行都看不懂。JavaScript比較深入的概念包括但不限於: (奇怪的)面向對象、繼承、作用域、閉包、還有一些語法糖(比如函數的定義立即執行)。如果不能理解這些概念,以後遇到稍複雜的代碼,可能就會四處碰壁(看似簡單的問題一天都搞不定)。我也是在這裡走了不少彎路,當初貪快扔下JS去看一些Library看得眼花繚亂,結果才發現不會走就要跑一定要摔跟頭。在了解了JS的基本語法後,推薦閱讀《JavaScript: The Good Parts》。這本書對JS中一些難以理解的概念進行了深入的解釋。

另外如果還有精力(請注意是業餘精力),可以大概了解下ECMAScript6(JavaScript的下一代標準),TypeScript等技術。這些標準都試圖將JavaScript向JAVA等語言靠攏,讓它變得更嚴格,具有更良好的構架,毫無疑問是JavaScript以後的發展方向。同時,也能讓你從側面了解JavaScript目前的缺陷。

至於NodeJs,顯然不是初學者需要全面掌握的技術。Node的出現,是因為前端的工具/lib多數也是由前端程序員開發的(自己才知道自己的痛嘛),所以他們更傾向於使用熟悉的JavaScript進行編程,而NodeJS就為這些工具提供了桌面的編譯運行環境。在一些公司中,NodeJs/Gulp/Grunt運行環境已然成為了前端工程師的標配,使得他們能夠運行各種各樣的CSS/JS預編譯器,但大多數也僅僅限於部署環境而已。至於使用NodeJs做伺服器端的開發,個人認為離大規模推廣還有相當的距離,在時間有限的情況下不建議學習。


你說的這些都是重要的東西,慢慢學吧


你提到的那些東西里我只熟悉git,所以說下git。一般開發人員偏向於使用git的gui軟體或者插件,畢竟命令行不是那麼容易用的,雖然命令行可以做的事比gui多很多。如果真的很有興趣和精力的話,熟練使用git命令行不會吃虧的。如果只能用gui的話,需要把常見應用場景的操作都弄熟,最好要了解下git的內部原理。

如果進一家公司進行團隊合作開發的話,熟練使用各種工具是非常有必要的。一個項目開展的過程中,修改代碼雖然很重要很基本,但只是其中一個環節。雖然公司開發團隊的開發環境中需要用到git,但我見過很多工程師不願意花時間學習git,在不得不使用命令行的時候,就是單純的複製命令粘貼命令。代碼雖然寫得好,但是沒有正確地提交,導致最終編譯出來的版本有問題。或者由於使用不熟練,捷徑在眼前沒法走,只能繞遠路,雖然結果一樣,但花的時間多很多。當然,這不能說完全就是那一個工程師的責任,但是最終的結果是不好的,會浪費很多人的時間。我給很多工程師培訓過git相關的知識和操作,肯花心思的人慢慢用熟練了得心應手,有些工作流程可以改進得很靈活高效。不肯花的還是只會複製粘貼,一個命令能搞定的事他可能還是要手動去花很多時間做,還不能保證質量。


題主問題中提到的 3 個關鍵詞依次說下:

1. 框架:框架可以理解社區中在業務開發中沉浸多年的人總結、沉澱、設計出來的開發模式,包括各種分層、規範、性能、可擴展性,有了框架,你能夠更好的支持業務,畢竟在大多數公司,技術人員的存在是為了支撐業務,初入門的同學如果不學一個框架,要自己去搭建個也是可以的,但是前提是你在其他語言有相當的經驗,比如 Angular 就是這樣一個典型,框架和庫的區別一定要區分;

2. 插件:題主說的插件可能概念比較廣,可能是某些框架的插件,某些工具的插件,如果你的框架選取得當,那麼他一定是支持開發者用插件去擴展其功能的,比如 express、gulp、webpack 等等;

3. 工具:工欲善其事必先利其器,這裡有篇文章:為什麼優秀的程序員喜歡命令行? 為什麼我會提這個,因為在我看來,命令行是所有工具中開發者必須掌握的工具,尤其是 Node.js 的蓬勃發展,產生了大量的命令行工具。git 屬於軟體工程裡面非常經典的管理工具,沒有版本管理概念的程序員算不上是合格的程序員。


40天學這多。欠下的遲早要還的。


1. 不會這些你就不專業,不工程。

2. 慢慢來,不想要一口吃成胖子,不然只會適得其反

現在你體現不出來,等你以後做過項目,慢慢就能體現這些的好處了,就像知乎某個答主說的,人類總會將他們認識的複雜的東西抽象化,使之更容易理解,例如銷售複雜了,出了《十個你要懂的銷售技巧》《銷售指南》等。同理代碼複雜了,管理就成了一個非常大的問題,例如框架的組件化讓你寫代碼更加得心應手,只需要關注每個組件怎麼實現最後拼裝起來就好。總之這一切都是讓開發變得更加有效率。當然伴隨的學習成本會讓一些人排斥它,不過沒關係,你慢慢來,慢慢接觸,總會知道和了解的,無非就是時間的洗禮。所以不要怕。

以前當兵打鬼子,啥槍不一樣能打死鬼子就行了,漢陽造就漢陽造。可隨著時間的流逝,你發現這漢陽造真心不行,麻煩多多,等你接觸了美國的連發步槍,瞬間感覺這槍真的好好,漢陽造就是辣雞。程序員的鄙視鏈就是這麼產生的,傷害都是對比出來的。你達到一定層級自然就想要追求更高層級的東西,不然就無聊的原地打轉了不是。

至於用這些工具好處有多好?

媽的!早該這麼幹了!

…………補充個例子…………

當初我接觸伺服器方面知識時候,每次修改完網頁提交伺服器(當時用的還是windows伺服器),都是通過遠程後複製黏貼的,有時候東西多點,黏貼不僅久還會提示有名字相同的文件是否覆蓋,你得不停不停的點擊"是!",麻煩極了。。後來我實在受不了,硬是網上看文章搭建了svn,從此一鍵提交還能有版本控制,那個時候心情真的特別好,覺得自己離"正規軍"又近了一步~


不邀自答一下,這個主要還是看你以後的方向吧,現在前端分支比較多,已經不單單是之前的html,css,js三架馬車就可以玩的轉的了,前端可以做的東西越來越多,所以需要工程化,需要分離,需要更好的管理項目,需要協同開發,那就不可避免的需要用更好的工具去完善整個流程,git用來管理項目代碼,gulp.webpack用來實現工程化和模塊化,方便開發。很多前端框架的思想也是從後端延伸過來。所以這些東西不是說必須學的,但是如果你去工作肯定是要用的到的。


推薦閱讀:

如何在docker里部署nodejs?
Node.js新手在哪兒找小項目練手?
前端小白迷茫,求指導?
PHP和Node.js哪個更爽?
Node.js被高估了嗎?

TAG:前端開發 | 程序員 | Git | Nodejs |