熱炒的前端什麼時候能冷靜下來?

到底什麼是好的頁面?什麼是好的前端工程師?為何如此多的前端概念?我已經被砸暈了!!


知乎上不是有好多程序員嗎,現在排名第一的是什麼鬼。看不下去了,指點你們一下。
在三線城市的一家互聯網公司當技術總監,不是那種三五個人十幾條槍那種,正兒八經的重視技術、錢掰成兩半花的創業公司。
第一,前端熱,但不需要冷靜,如果可能的話,我希望更熱鬧一點;
第二,目前的狀態下,頁面很難寫好,純css和js擼出來的頁面測試和維護成本都很高,用框架也有用框架的問題;
第三,前端技術棧非常複雜,根據應用場景的不同千差萬別,在足夠快的載入速度、足夠好的兼容性的前提下,保證代碼的可測試性和可維護性,是好的頁面和好的前端程序員的方向;
第四,新技術都有其應用場景,我們用Angular換掉jQuery的場景中,生產力提高了7-8倍,但是我們的Angular僅限於單頁面應用。

我們使用web的地方包括公司官網、手機嵌入簡單的頁面、學工系統、內部管理端等,需要面對的是有限的資源、不太強的技術實力、永遠不充足的人手、緊迫的工期等常見問題。
我們的學工系統是典型的單頁面應用,之前使用ExtJS,目前在往Angular遷移,互聯網產品,追求用戶體驗嘛。使用的前後端分離,後台用Golang寫的,總體性能還不錯,寫了半年,已有subview接近200個,只有一個前端在做(是的,你沒看錯),如果用jQuery的話,程序員估計已經瘋了。另外完成後subview可能近千個,我們需要高度的自動化測試,不可能每次發布版本人工測試一遍,用jQuery做這個並不容易,以我們的水平,妥妥的寫不出來。
內部的各種管理端全是Angular寫的,套的bootstrap,並沒有嚴格的測試,也是前後端分離的,這樣的話可以App和網頁共用一個後台,一些圖表控制項我們封裝了ECharts,基本上誰有空誰寫一點,用jQuery的話,維護沒有這麼容易,寫起來也沒這麼快。
我們的手機嵌入的一些數據填寫、統計信息什麼的,也沒有用jQuery,用CSS3的選擇器和原生的HttpXMLRequest挺好的,載入速度也比較快,用戶體驗嘛。這一部分基本上一人寫一個界面,維護挺麻煩的。
公司的官網,大多數是靜態的,因為要SEO,我們也沒有人手去做一套內容管理的東西。有些很漂亮的特效是CSS3做的,一樣沒有用jQuery。
後續一些活動可能使用WebGL之類的一系列技術,如果吃力的話我們還是繼續CSS動畫。我們有一些界面設計器準備往React遷移。

以上就是我們的應用情況,可以看到根據應用場景的不同,技術棧的差異蠻大的。

我們面臨的問題有

人員確實貴,互聯網行業人力成本確實是黑洞,引入新的技術既可能增加成本,有可能降低成本。在一個三線城市,新技術的代價很高,實際上除了我們很少有別家用Angular,我們堅持用了之後,開發速度提高了7-8倍,對比每個人薪資百分之二十左右的增幅很划算。
另外,人確實難招,學校里不專門講,很多人覺得很簡單,但是水平多數停在百度代碼實現動畫效果的水平。沒有框架的情況下,學工系統這麼複雜的東西都寫不了。

技術上面
首先,我對jQuery沒有成見,我們的Angular的很多插件還是封裝了jQuery的,但是距離目前排名第一的包打天下還差一點;
第二,js不好用,ES6還沒普及,普及了會好一點,用不起TypeScript,當然了,也有它爹是微軟的原因,很多團隊成員不喜歡它;
第三,css不好用,項目大了難以維護,我們試著往sass上面遷移,但是失敗了,成本過高,也可能是我們的設計師對響應式設計理解不好,很難項目一開始規劃好各種組件,Sass沒有大幅度的降低工作量,年後會再試一次。

未來前端應該還會持續演進,讓我們的開發成本再低一點點,日子再好過一點點,當然了,這意味著它會繼續熱下去,直到ES 6普及,我們有類和模塊可以用(實際上我們招聘不到搞得懂js原型繼承和閉包的程序員),設計師的工具能更好的跟程序員合作的那一天(每天應對不同的解析度,心情並不好)。

也就是五年之內,都不會「冷靜」下來了,好好學新技術,好好招人吧。


之前看過一篇文章,寫的是作者十幾年前開始寫前端,到如今卻發現前端新出的技術都看不懂了。三十好幾的人卻要跟十幾歲的小屁孩站在同一起跑線上重新再來,如何能競爭得過?
雖然只是入坑兩年多,我對此還是感觸頗深,前端的技術變化太快了。比如構建工具,13年還是用的ant,14年初grunt火了,14年底是gulp,15年則是webpack。單頁面應用,13年是Backbone,14年是angular,15年是React。以上每個工具框架的使用雖然入門耗時不高,但累積起來所花費的學習成本就很可觀了。更何況前端這幾年產生的輪子還遠遠不止上面所提到的。
這兩年我為學習這些新玩具付出了很多的時間和精力,到頭來卻發現自己還是當年自己眼中的三流程序猿,沒有什麼長進,這是很令人沮喪的一件事情。
對於前端中的新技術,沒必要每樣都親自去試驗。每周掃掃《JavaScript Weekly》,仔細看一兩篇自己感興趣的就夠了。等到平時工作中遇到了相同的場景,再去仔細研究下相應的新技術是否能夠解決問題,提升工作效率。
前端也是程序員,在掌握好HTML,CSS,JS的前提下,把時間花在演算法數據結構,提升代碼可維護性等方面上才是比較有意義的。


熱得正好,熱比冷好,越熱越好,工具多選擇多,這難道不是好事嗎?

跟不上而抱怨迭代快,不會挑而抱怨選擇多,不看場景而盲目追新,我怎麼感覺這都是怎麼選擇的問題,不是選項太多的問題。

簡單的頁面你就簡單做,複雜的應用您就試下熱門的 mvvm/react 啥的,或者您繼續用 jQuery 堆砌,這都沒有問題,慢慢踩坑,慢慢補經驗。

但是實踐出乾貨,空談白費勁,省下爭論的功夫,多寫兩行代碼吧哪怕只是 todomvc。

=============

目測一下這個問題其實是匿名用戶自問自答吧?

「jQuery、requirejs、seajs、grunt、underscorejs、hightchar、moment、bootstrap、zepto、handlebars」

只用過這些,不就是 jQuery + 插件嗎?根本還不知道別人在做什麼,用在什麼場景,要解決什麼問題呢,用過,踩過,跌倒過,站起來再抱怨吧。想得太多,做得太少,有此一惑,也是難怪。


別人瞎跟風對自己是好事。
精力是有限的,他去跟風,今天搞這個明天搞那個,你靜靜的提高你的代碼水平和工程水平。當互聯網寒冬來的時候,刷掉這一批用框架找工作的孩子,底子紮實的孩子出頭之日就到了~

注意,我說的是瞎跟風,如果你的業務需求有更好的解決方案但是你又不知道,這就叫沒有跟上技術發展,而不是不瞎跟風~


##2016-1-22更新

今天又仔細看了那個排名第一的內容,我發現了一些算是正確的內容,比如新人應該先打好基礎。

但我不會改變反對的立場,因為他對於新技術消極的態度是沒有正能量的,同時他對於node生態圈的貶低也主要在於沒弄清楚node出現的意義。

所以我對他的猜測如下:他是一個主做後端(如java)的,但是對於前端有一定了解,並沒有經歷過大型web應用的構建,又以為現在的前端還是兩年前那個樣子。

我想對前端新手和後端轉前端的說幾句,現在入前端的坑不能算是一個好時機,因為發展速度太快導致脫節會非常嚴重。新手入門之後的普遍反應是不知道我接下去該學什麼。這個問題不好解決,因為對不同的項目有不同的技術原型,並沒有一個類似於spring對於java web一樣具有標杆性質的項目。

那新手該怎麼辦?最簡單的答案就是「做項目!」找中大型項目做,按照你目前的知識體系去做,做完總結問題,想辦法解決問題,問題解決完想辦法優化,發張優化不了進行新的技術原型然後重構。一定要想辦法做到最好,這樣你才會發現,這些新的框架新的工具出現的意義,以及會給你帶來什麼幫助。

現在的前端市場,牛逼的人繼續牛逼,但是菜逼的人卻很難變得牛逼,這不是時間能解決的問題了,而是市場決定的結果,在這個大環境下,你必須要學學學,不進步就是退步。共勉~

---------------------以下為原答案

排名第一的那個匿名回答我表示完全無法理解這麼多的贊是誰點的?

先不說angular是不是已經被react替代,就angular帶來的開發效率提升用過的人都清楚吧?那人說用angular等框架會踩坑,我去你用jquery實現angular實現的複雜功能寫的代碼多一倍你能保證你沒坑?

那哥們說自己很菜,我覺得這是通篇說的最正確的一句話。他應該沒做過架構吧?他做的一般都是類似企業站這樣沒什麼前端功能需求的網站吧?但凡來個稍微複雜點的表格處理到時候你是自己寫還是用jquery table插件?那個插件源碼也有幾十k,你確定沒坑?

一旦項目複雜起來了勢必涉及到設計模式和架構。你用jquery給我實現個好的設計模式我看看?

那些點贊的和評論區支持的人:

如果是剛入門的看到前端百花齊放的技術不知道如何選擇,那麼我建議你找個大一點的項目一個個實現一次。

如果是做了前端幾年的了,那麼我建議你換個職業。

如果是後端人員幾年前寫過一點前端,那麼我建議你好好寫你的後端代碼,你早就跟不上前端的節奏了。


針對頂在第一位的答案,實在不能苟同。前端的開發歷史相比於c類語言要短很多,w3c的標準到現在都還在不斷的跟進完善,這麼一來公司在面試時當然會問與時俱進的問題,一個程序員如果跟進技術動態的意識不夠,想必在工作中也不會有出彩的表現。
再者,javascript作為一門圖靈完備語言,本身就具有很好的擴展性,react 和angular之類的框架出現也是順應開發需求,javascript的設計模式,prototype那一套一直都沒變,市面上有優秀的框架可供選擇,這是一種繁榮的代碼生態,挺好。再說nodejs,它底層是用c++寫的,再配合暴露給外界用的js介面,在高並發的場景下,性能不輸給c類強類型語言,最重要的commonjs的規範在前端面試中也必不可少,至少能夠了解候選人對模塊載入多種方式的了解。市面上漸漸流行的react-native在構建native app方面的性能和開發效率甚至有超過純原生的編寫方式。所以作為一個前端程序員應該以廣義的角度看前端,對js的基礎原理和新的html標準及時跟進,才能比較好的適應前端發展的節奏,更不能有學會了個框架就一勞永逸的觀點


湊個熱鬧。

所有的互聯網項目都有用戶界面,而用戶界面的實現方法就只有ios/android/web。隨著互聯網項目的增多,這三種用戶界面技術都變得很火。也許在很遠的將來,當整個互聯網都變慢的時候,web前端自然會變得不溫不火

相對於ios和android都是由一家公司控制技術的局面,web前端沒有一家公司控制技術,所以出現了百花齊放。給web前端一段時間,好的東西自然會脫穎而出,例如react,而不好的東西自然就被時代拋棄。我們這些從業者,唯一能做的就是努力學習,跟上時代,否則就會被淘汰

在這個過程中,要記得記得一切的辛苦都是為了解決用戶的問題,要記得相信數據和邏輯,而不是相信所謂的大神或者潮流

最後用俗套的話給所有從業者自勉,『這是最好的時代 也是最壞的時代』


作為一個在jquery誕生前就入行的前端,一路走來看到一個又一個框架誕生和消亡,有大量的探索性的嘗試被過早的追捧,也看過一次次折騰留下來的歷史包袱。

JS本身是一門非常簡單的語言,但互聯網發展得太快了,這門相當原始的語言已經不能滿足「人的需要」:讓複雜度高的事物通過工程化、自動化的方式分解為相對簡單並易於管理維護的小顆粒。
在這個內在動力的驅動下誕生了一系列改變代碼組織方式的框架和規範。

由於JS同時期的一些技術一直被保留下來,它們同樣存在不能適應當前需要的問題,所以聰明的前端們想出了各種各樣的優化手段,瘋狂的優化結果是人工維護容易出錯,所以引入了大量的自動化處理,node火熱前是php。

當互聯網企業遍地開花時,人們忽然發現前端人數太少,靠譜的前端太少了,所以很多「後端"程序員被迫的要做一些前端工作,當他們帶著原有的思維去體驗JS時,他們發現了這門語言驚人的簡陋,所以他們熱衷於把一個又一個特性移植到JS中。與之同時,一些前端的從業者發現經過3-5年的工作,他們已經遇到發展的瓶頸,希望通過擴大職責來保持上升,於是紛紛嘗試從前往後走,他們從另外一個方向發現了同一片新大陸,「後端」語言中原來已經有大量成熟的工程化體系,他們也投入到這場火熱的移植特性的活動中。由於能力參差不齊,探索性的作品缺少維護,為後來者留下了無數的大坑。

近年來業務帶來的技術難題並不多,真要說有就是無線端h5頁面的性能,而瘋狂造輪子活動帶來的人為門檻卻越來越高,一部分人患得患失,一部分人沾沾自喜。


大家都不上網的時候,前端就嗝屁了。

大家什麼時候都不上網呢?不太可能。


2014年的TOIBE,programming language of the year是Javascript,15年是python,所以可以認為那一年是社區的頂峰。


你們再拿那些基礎很差卻只會點新東西皮毛的菜鳥程序員來說事,也改變不了新技術在一定程度上代表了先進生產力的事實。

一些還沒使用過框架的就不要站出來以「我從來不用xxx」來顯示優越感了。

我初學前端時還拒絕使用任何庫呢。後來用現成輪子了也不是因為水平倒退,用原生寫不了了,而是沒空浪費時間在大量業務代碼上。追求效率也不代表寫的東西比裸寫更簡單了,因為生產力的進步,大家可以抽出時間去實現更複雜的業務和滿足更好的用戶體驗。為自己的業務量身定製輪子也變的更加方便。

最終的結果是,上進的程序員依然上進,jquery時期只會簡單使用第三方庫的用了框架也是使用最簡單功能,無法理解和運用最佳實踐。

沒錯,MVVM讓很多複雜功能的實現變得非常簡單,但不代表用MVVM的就是基礎薄弱水平差。一起工作的同事也是10年老程序員了,照樣用angular,區別只在於通讀了angular源碼,能指著源碼說明白為什麼controller裡面應該用$applyAsync()而不是$apply().而他最近也在弄react native,瞧這心態多好啊。

不要因為發展迅速讓人不安就把新輪子新標準一棒子打死。阿Q心態不能真正解決問題。


這篇文章誤人子弟,我決定刪了。

原答案內容:http://www.360doc.com/content/16/0125/15/30281360_530456999.shtml

之前的答案我保留用數據說話這個觀點。

很久了,自己也不太願意回顧了。

為何決定駁回自己原來觀點。算是成長中看到過去自己的不足吧。

其實很早我就想改了這個回答。但是近一年多來,實在不太願意在知乎評論些什麼,回答些什麼? 「空談誤國,實業興邦」。


為何今天突然想改了這個答案?

講個故事先,最近剛換個工作,也是一個新的老大。新老大工作好多好多年了,老大的背景我就略過去了。當然我們前端組主要負責的是B端項目。具體我們的業務我就不說了,總之就是好多B端系統。我來了之後,老大跟我講了下他的思路,用jQuery封裝組件,然後告訴後台開發怎麼用。我們的B端項目沒有設計師的,全憑前端的感覺和審美。我問老大:「為何不用市面上那些MV**,還有配套的組件庫」,老大說他不喜歡。原因嘛,jQuery我就能幹活,幹嘛用那些複雜的方式,又要構建工具,又要分離工作,又要學習好多好多。狀態管理層,增強視圖層,單項數據流,雙向綁定,還有什麼各種npm包,各種腳手架。

其實老大說完這些,我也是無所謂的。反正我也不打算繼續做深了前端。

可是老大最後來了一句:「有兩個項目RD現在用的react來做,你接下來去跟。」

我心裡想:「我次奧,這可太好了,我可不用jQuery來擼了。否則我不退回到8年前開發方式了嗎?」

然後跟老大說:「好的,老大。放心交給我。」

可惜我高興太早了,老大最後說出一句意味深長的話,直到現在我也未能平靜下來。

老大:「你用jQuery把那兩個項目給重構過來!」


菜鳥一枚,說說自己的理解吧。被層出不窮的技術晃暈了是正常的,我之前就是這感覺。關注了很多所謂的大牛,但是真正能獲取的乾貨,真的不多。那些熱炒的框架,每年肯定都會出幾個,真的追在別人屁股後面跑,肯定是沒有意義的。原理性的東西,研究清楚,es最新的語法,弄清楚,w3c標準,沒事關注一下,就夠了。這些都是基礎的東西,不會過時。出了再炫的東西,花時間看看源碼,難道能看不懂不成?(真看不懂,還是得鞏固基礎啊)真正的成本是什麼?時間。沒事給自己寫點能用的小框架,工具庫,哪怕完善一下個人的common.js,都是很有意義的。技術是服務於自身的,退一步說,是服務於產品的。你能滿足產品經理的需求,然後在技術總監的各種性能要求下過關,就夠了。不會的,不懂的,花時間學唄。如果不需要的技術,學了也沒意義,看懂核心思想,創新點,不就夠了么?學無止境,注意工作生活的平衡。


先回答你的兩個問題,
一、什麼是好的頁面:很簡單,滿足用戶的需求,符合大多數用戶的審美,能為用戶提供良好的體驗;工程化,模塊化,可以快速根據產品需求做出改變;良好的SEO,能讓現有的搜索引擎較好的抓取,提升網頁的可搜索性。這是一個好的頁面所要求具備的。當然有些webapp不需要有良好的SEO。
二、什麼是好的工程師:這個不好說,當然你懂的越多是越好的。第一,你必須能具備完成做好當前公司的業務,不要會很多框架,卻做不好事。第二,必須具備能跟上潮流的能力,這裡是說,要求你學習新的框架時,能快速上手,不會拖團隊後腿。第三,一個優秀的工程師應該有能和團隊合作的意識和能力,你一個人再厲害,也不能做完一個大的業務,而且你是處在商業性的公司,只顧自己寫代碼,必然導致工程完成不理想。
最後說一下前端熱,很多行業大牛都說,前端需求大,是針對優秀前端工程師來說的。只會jQuery的,固守老的一塊不進取的,不能很好的完成業務的,是團隊所不需要的。
還有一點其實前端是有點過熱的,很多技術很差的,只是會css和jQuery的(這裡會jQuery指只是單單會用,搞得出很多花樣的人不算)月薪也能拿到10k以上,只會使這個行業越來越糟,使大學生越來越浮躁。看那麼幾個月就可以拿到這個高的工資,大學何必在學習,天天玩就好。這不僅對其他人不公平,足夠也害了自己,因為這樣的人多了,自然你就沒價值了。大學請好好對待自己吧,不要只是為了拿高工資而去上大學,大學做學渣沒事,但要真正的去過,學點自己人生中最需要的東西,不懂戀愛的去戀愛,不懂學習的去學習,太浮躁的去打籃球,打累了好好想想人生。
還有,很多大公司要用一個框架的時候,會有人去測試,做技術調研,然後再去做,你認為jQuery就能做完很多東西,這是對的,因為很多人造了很多輪子,你方便用,而且前人經驗足。不停的學東西,是程序員跑不了的。你有家庭,沒時間,這也是沒辦法的,你選擇了高薪,選擇了前端就得跟上節奏。盡量照顧好家人,然後抽出一點平時自己玩電腦,玩知乎的時間,去學習。不然過幾年你被後來人拍死了,又上哪裡哭呢。還有我贊同框架要根據業務的需求來用,而且我也討厭那些動不動就說用react就是為了不用jQuery,你這麼牛逼,怎麼不說不用DOM操作啊,可能嗎?你這麼看不起jQuery,看不起DOM操作,是不對的,要根據業務來使用框架,這明明是個小學生都知道的因材施教啊。
前端熱什麼時候停下來,大概是市場成熟起來,前端成熟起來,大家不會因為用什麼框架撕逼的時候,大概就停下來了。
回應第一的,一項東西在發展的時候,可以盡量說他不如哪個哪個,但他會發展,你所要求的靜止,不存在。現在發展js的很多能力,大家是為了以後能用js高性能的寫本地應用,簡化工程量和成本。怎麼可能靜止,怎麼可能只發展DOM。前端並不是只寫前端!
如果你是前端,別指望前端陪你活一輩子,請靜下心,去了解市場,別被熱潮遮蔽了眼。也許你是技術大牛,也一樣可能失業,世界終究被利益驅動,因為大家都是人,而技術人只是其中一部分。


學過java的人就沒搞明白,為什麼一些天經地義的東西,放在前端就那麼高大上,框架還一堆。實際用起來又一堆坑需要自己看源碼(node.js說你呢)


匿名來黑
先黑前端,前端門檻低,有水準的少,確實如排名第一的答案所言,現在爆髮式發展的各種技術的都是別人玩爛的,諸位前端同仁需要努力提高自己啊
再黑 「熱炒的前端什麼時候能冷靜下來?」問題本身,在碼農界群嘲代碼寫的好不如ppt做的好的年代,前端熱顯然是必然的嘛,並且還會熱下去,明顯是某些自以為在鄙視鏈上端的人需要冷靜啊


我是不是可以把樓主說的「熱炒」理解為名過其實呢?
那麼,來看一下前端是什麼吧
個人理解的前端,本質上就是 UI + UE,再本質一點,是用戶的直接感受
前端不會真正的消失,只會從一種客戶端轉移到另一種客戶端
這還需要熱炒嗎?這還能冷卻嗎?
如今的前端,名過其實了嗎?
我看沒有,還差的遠


我理解的好頁面是:
大部分個人開發的博客,都是好頁面。
我理解的好前端是:
面對滾滾而來的需求,淡定處理。

前端只能說好玩,還沒iOS熱。大神說webpack好用,大神說 React好用,我工作場景,用的是FIS ,vue 。我生活寫代碼反而退化,愛寫原生js ,用用vim。雖然寫的不好^﹏^

至於什麼時候會結束前端熱,我現在能說的是,什麼時候前端規則明確定下來,熱就消退了,在一個不知道規則的行業里混,是麻煩的,是喧鬧的。有了規則,大家都知道怎麼玩了,也就回歸正常了。

在這個百家爭鳴的年代,看看就好。


小弟不才,斗膽來打一打!
前端熱嗎,當然,工資最少也5K以上。前端是熱,但是要根據公司的業務來學習技術,盲目學習,只會造成自己的煩惱,我目前的工作在公司寫頁面,就是你們口中的切圖仔,不涉及任何邏輯交互。大部分的公司前端都是些頁面的,我覺得要把基礎打好,框架學不學其實無所謂,重要的是處理問題的邏輯,比如,最近想寫一個京東眾籌頁面的手風琴功能,怎麼都處理不了,不知道怎麼解決,到現在也不知道怎麼解決,看別人的js代碼,簡直就是天書,京東實現手風琴的方法是利用left絕對定位,我實現不了,各位幫幫忙,看看怎麼實現?這個例子說明邏輯的重要性,有了清晰的邏輯,Js語言就是我們手中的工具。
根據業務寫js!
根據業務寫js!
根據業務寫js!


一時半會冷靜不下來,最近幾年互聯網行業中各項指標「前端」全部第一,現在前端「架構師」的價格已經非常非常高,未來幾年會更高,理由如下:

  1. 混合應用會越來越多,代替一部分 native app;
  2. 所謂「H5」;
  3. 前端能處理的事情更多,前端邏輯豐富,會取代一部分後端的工作;(舉個例子,有些事情前後端都可以做,以前大部分都是後端來做邏輯,前端只考慮展示,但現在更多的後端只提供內容,前端來實現邏輯)
  4. 還有不可描述的情況;

推薦閱讀:

若想學 HTML,應從何入手?
如何幫助前端新人入門和提高?
前端工程師和 UI 設計師該如何選擇?
前端大牛們都學過哪些?
學web前端開發,培訓還是自學靠譜?

TAG:前端開發 | CSS | JavaScript | HTML5 | 前端工程師 |