js是不是在自我分化,演變成一個個不相兼容的技術棧?

草根6年前端,學會js原生+jq+各種插件+工具類+幾套UI框架,再次擇業發現這些已不再是市場的技術棧,

不會angular,vue,react就沒辦法進大牛團隊,但其實這三個也彼此不兼容,大牛之間也分化出圈子,有人因此不適合入職,有人因此離職,這樣下去會不會把js分化出像net,java,php一樣的格局,一人一種規則,不是不去學習,但用戶體驗不管你用什麼技術棧,其實也都能達到一樣的效果,畢竟最後還是會在編譯成原生的html css js,但是一定要用這些「高級彙編的js」嗎,不知道新人一開始就用這些API去開發,往後再回去寫原生html和事件綁定會是什麼感受,這樣對未來好嗎,現在也會過早地結束一些前端js程序員的編程生涯。

補充:

謝謝大家的回答,

首先6年不是一直在切圖,而是做了完全符合前端標準的全流程,切圖靜態化,調兼容,做移動版,寫腳本功能,抽離公用組件,寫插件,開源項目,中間四年php,2年nodejs,一線前端,每天除了開發就是學習。

然後我覺得樓下的回答,還是對我有幫助的,從方向上讓我理解了現在的困惑:

  1. js現在的發展就是前端語言的後端化,真的是 應用框架 了,像java或php很多應用框架我沒用過甚至都不了解,不會覺得它們會影響到我的前端,但由於js天生屬於前端,這種混亂界限和如何使用已經超出現有「三駕馬車」的範圍,最重要的是它們對某個功能的實現是完全的充分條件,而不是完全的必要條件。
  2. 上面的理解,減輕了我的困惑,作為一種應用框架,就有了選擇性,我可以選它們,而不是必須得學它們,這跟原生標準有本質的區別,就像ES6/7標準必須得去學,這些是沒得商量的。
  3. 堅持原生會不會能走的更遠,畢竟除了數據視圖綁定這些可以後端化,還有其他touch事件、svg/canvas, webGL, file等領域還是需要傳統庫整合的方式,還有未來原生html.css js也一樣能實現頁面功能,堅持原生會不會能走的更好更遠。


用菜刀切土豆塊、用菜刀砍大骨頭、用菜刀拍黃瓜也算不相容的技術棧咯?畢竟它們用法不一樣誒:)

這段時間知乎上這種同類型的問題太多了,核心思想大概都是「前端技術日新月異,這樣真的好嗎」這種。

但講真,這些問題里所謂的「新技術」一般都是一些新框架啊一些新名詞啊,或者JS新的語言特性啊什麼的。

這些東西的學習成本對於一個合格的工程師來說有多高呢?讀讀文檔和相關的文章,看看別人的經驗,差不多幾天內就能了解個大概,一兩周就能開始用到生產環境里,比大學裡日夜爆肝複習期末考試簡單多了呀。

既然想當前端的老司機,就去努力拿A1的駕照,但現實就是很多人都是拿著C2的駕照,只會開自動擋的轎車,反而問「為什麼前端的世界裡每天都有這麼多新車型出現?這樣真的好嗎?」


你先去看看java下、php下有多少應用框架再來無病呻吟。


WEB棧統一六國中有點內部紛爭而已。


截至回答時的問題為:

那麼,問題是,這幾個技術棧真的不兼容么?隨手寫了一個 ng + react + vue 的嵌套計數器(http://embed.plnkr.co/K0KEFvf2uPMCcRkRmOfl/),至少證明這幾個庫的兼容性是不成問題的,題目本身並不成立。。

(當然如果都上全家桶的話,可能需要填的坑會更多,但原理上幾乎仍然不會出現無法兼容的情況)

不排除真有不兼容的 js 庫存在,但 ng、react、vue 這些都是非侵入式設計的,不論是平行還是嵌套都沒什麼大問題。。也從側面證明了組件確實一個比較好的封裝和抽象方式。。

那我們平常開發為什麼不這麼做呢?多半是學習成本、可維護性、運行時依賴大小等方面的考慮。。

那麼既然這些技術棧本身沒有不兼容,那所謂 「不兼容」 的地方到底在哪裡呢?

  1. 社區的不兼容性。可能在一些社區中存在明顯的相互鄙視狀態,一個人很難同時活躍於多個 「敵對」 的社區中;
  2. 學習成本的不兼容性。在學習了一個技術棧之後,如果換成另一個技術棧,可能主觀上會認為浪費了學習時間,得不償失;
  3. 業務邏輯的不兼容性。當你已經又一個基於技術棧 A 的業務邏輯實現,需要換成基於技術棧 B 的時候,產生基於技術棧 A 的業務邏輯和基於技術棧 B 的業務邏輯不相互兼容的情況。(這和技術棧 A 與技術棧 B 不相互兼容是兩回事);

所以最靠譜的解決方案是什麼呢?都學咯(認真臉 T_T)。.

別人在浪費時間吵架爭情懷的時候,就默默比別人多學一點,這樣自己的競爭力就提高了;然後學習到一定深度的時候,就可以融會貫通很多原理共性了,把總體的學習成本大大降低;接著不論是要遷移已有項目,還是新項目中要使用新技術棧,都能很快上手,這樣核心價值就體現出來了,可以選擇的機會當然也就更多了。。-_-||


我覺得如果找工作的話,不能太清高,就得面向jd編程,要不你找不到對口工作啊

但對於自己個人學習成長來說,原理,運行機制,優化,數據結構,演算法,設計模式等等需要掌握和實踐的東西很多


你要把百家爭鳴理解成文化割裂那我也沒辦法,反正我是很喜歡這種分化的環境。

用一個比喻來講,前端好似一個青年。雖然不夠成熟,但是激情洋溢,思維活躍,每一天都能給你帶來新鮮感。(ps 這麼說Java是個大叔了)

等到哪天不怎麼分化了,那前端也就失去了這種獨特的魅力。


vue處理數據綁定還是很好用的,用的是es5的defineProperty(遞歸),使用起來感覺還是很方便的,入手也很簡單,不明白你在悲傷什麼!


一個好的前端工程師,首先是一名好的軟體工程師。

前端框架是多,這是因為在過去的很多年裡,JS 都是活在刀耕火種的時代,只是最近幾年快速發展,用短短几年的時間走過了其他領域十幾年甚至幾十年的歷程。

但是眼花繚亂的前端框架中,幾乎很多是沒有創新的東西,至少我是沒發現絕對意義上的創新。

或多或少都可以在其他領域的開發中找到影子。不信,你了解過 elm 再看看 Redux,你了解 WPF 之類的 GUI 開發再看看 MVVM,什麼組件化,模塊化就更不用說了。

所以前端真的在分化嗎?可能是很多人接觸的軟體開發只限於前端這個小池塘罷了。


題主說得沒錯啊,為什麼大家都在冷嘲熱諷?現在沒js基礎的單純只學react也能做出像模像樣的頁面來。javascript彙編化絕對是未來趨勢之一,各框架對js的透明度會越來越高。


這是切了六年頁面么

上邊的話沒有嘲諷的意思,只是好奇做了六年前端,就算線上產品沒用到這些東西,好歹也應該有些好奇心去把玩一下吧


其實是最近幾年,突然變化太快太多有點讓人適應不過來,而且確實有很多人和公司是為技術而技術


樓主好自為之。在知乎。不。在整個高端前端界。

你可以為使用哪個技術棧而吵。但是你不能說你不使用技術棧。

尤其是一些「老舊」的庫和框架。你必須堅決的嗤之以鼻。

否則你就是政治不正確。否則你就是個沒有前途沒有上進心的前端。

-------

框架也是解決問題的一種思路。可以選擇。可以不選擇。

如果要融入一個使用框架的團隊。還是有必要學習的。

理解原生js和後端的一些概念。學習成本還是不算太高。

另外。會用這些框架的時候再就業工資會高一些的喲。!


我就喜歡前端吵架!


擁抱變化,百家爭鳴


這個圈子越來越浮躁,會幾個流行的框架就覺得牛逼得不行,同為六年的前端,前段時間有同樣的困惑,技術棧兩三年一換,以前一直用jQuery,後來公司要求用ExtJs,當年還是3.0,現在已經到6.0了,在ext上花了不少精力,讀了不少源碼,不敢說多牛逼,Ext上問題還沒有遇到搞不定的,尤其Ext3到4有很大不同引入MVC之類,寫法也大不相同。

12年左右開始興起Angular,Node,Backbone,knockout之類的框架,前端開始大量使用MVC,面試前端職位,必定問及Angular,也花了不少時間研究,雖然學習曲線不算很陡,也花了我不少精力,總算Angular 1沒有問題了,也算個合格的AngularJs開發了。

15年又開始了React熱,跟Vue熱,甚至有前端團隊招聘要求明確擯棄一些老的技術棧,同時又開始了Angular2,思想上跟Angular1有很大的不同。

就不說中間各種其他類似於Q.js,RequireJs之類的,不過但凡這些框架能做的,總有一個類似的輪子。

Node火了一陣,現在基本上淪落為前端構建工具了,我還記得當時有大牛要用Node做Node OS。

我不是說技術棧發展不好,新的技術發展,面對題主的困惑,我可以理解,冷嘲熱諷的人,你們真的就是大牛嗎?你們真的經歷過這些

我不是大牛,對於這種技術棧,兩年一輪換的速度確實感覺困惑,那些冷嘲熱諷的人,你們還是太年輕。

過兩年,等你成家,有了孩子,沒有大把的時間可以支配,面對持續變化的技術棧,你也會有題主今天的困惑的。

以上


你不能因為自己沒時間學習就阻止別人開發新的輪子啊。實際上 Vue 跟 React 的思想已經很接近了,至於 NG,不用就是了。有啥不兼容?


分頁阅读: 1 2