前端不容你褻瀆

大家好,我是若川,點此加我微信進源碼群,一起學習源碼。同時可以進群免費看Vue專場直播,有尤雨溪分享「Vue3 生態現狀以及展望

背景

最近我在公眾號的后臺收到一條留言:

ea7f9c6898be6bd8f9b8907108195d11.png

言語里充滿了對前端的不屑和鄙夷,但仔細看看這條留言,里面的觀點是一點都經不起推敲。

按理說這種毫無道理的噴我是不用搭理的,但考慮到有這種想法的人可能不止他一個,而我又是一個講道理的人,因此今兒我就把這事兒放到明面上說說。

逐條反駁

  1. 前端搞模塊化、構建工具是為了刷存在感?

隨著前端的開發日益復雜,傳統的手寫 HTML、JS、CSS 的方式已經不能滿足需求,在這種背景下,才誕生出前端 MVVM 框架,組件化、模塊化開發的開發方式以及前端構建工具。

分而治之是軟件工程中的重要思想,是復雜系統開發和維護的基石,這點放在前端開發中同樣適用。而組件化,模塊化的開發方式目前是前端最流行的分治手段。

前端 MVVM 框架,比如 Vue、React、Angular,就提供了組件化的開發方式。

而構建工具的出現,是讓模塊化的開發方式得以落地。比如 Webpack 就支持了 JS 的模塊化開發方式;借助于 Loader,你甚至可以在 JS 中加載 CSS、圖片等資源。

除此之外,代碼的校驗、測試、打包、壓縮等步驟都可以通過構建工具完成,再接入 jenkins 這樣的平臺,就很好的實現了前端項目的可持續集成和代碼部署。

因此,前端做這些事情,是為了提升研發效率和代碼的可維護性。前端的重要性已經隨著需求的復雜而自然得到了提升,需要刷什么存在感?

  1. 從事前端的人總是用各種東西在證明自己很厲害,自己不簡單?

這話說的毫無邏輯。前端這些年確實發展的不錯,隨著瀏覽器和 HTML 標準的發展,前端在前端框架、構建工具、可視化、跨端框架、復雜應用開發等方面均有建樹。

但做這些事情是因為有需求才會去做,而不是要證明什么,也不需要證明什么。

  1. 只要你從事了后端,就代表你是一個敢于接受困難的人,敢于從事困難工作的人。

這話就很搞笑了。無論后端還是前端,都是寫代碼的,只不過是工作分配的內容和方向不同。工作中或多或少都會遇到困難,敢不敢于接受困難和挑戰,和人有關,和做什么工作無關。

  1. 前端的悲劇就是,要通過各種東西來證明自己的地位?

前端并不悲劇,說這話的人挺悲劇的。其實越是厲害的人越謙虛,越是覺得自己渺小,對自己不了解的領域會有敬畏心。而那些井底之蛙往往都是半桶水亂晃之人,無知而無畏。

最后,他還來了句“拋掉技術能力強弱的,僅僅從前后端職業,社會的普遍認知來說的”。

Excuse me? 這還是社會普遍認知嗎?我都被氣笑了。噴子下結論往往都是特別主觀,缺少論據。

前端的發展方向

反駁完了,我們再來聊點有用的。

最近參與了幾場校招面試,問了候選人為什么會選擇做前端,很多人回答說喜歡前端更容易得到反饋,能快速看到自己做的作品,也喜歡酷炫的交互和動畫。

他們可能不知道,前端開發除了切圖外,整個知識結構還是非常豐富的。

b584e3cf9468a0736a0b989a9fa6d41e.png

這張圖相信大部分前端并不陌生,它是多年前的一張老圖,大致描述了前端工程師的知識圖譜。隨著時間的遷移,雖然里面一些技術點發生了改變,但它仍然具有非常不錯的指導意義。

結合這個知識圖譜,和我多年工作經驗,我認為前端大致有以下幾個發展方向:

  • 復雜應用開發

大部分前端工程師做的都是業務開發工作,這是很正常的現象。對于企業而言,尤其是 C 端的業務,對前端開發的需求量是很大。

對于開發者而言,能做公司的核心業務開發是非常幸運的,因為你的工作給企業帶來最直接的收益,你也能得到不錯的鍛煉和成長。

有些人可能會覺得做應用開發技術含量不大,那是因為接觸到的業務還不夠復雜。如果去開發 web im、web doc、proceeson、figma 這些重前端交互的產品,對前端的技能要求也是很高的。

因此千萬不要看不起開發業務的前端,他們能給公司帶來最直接的價值,甚至有些公司的業務還是前端主導的。

做復雜應用開發可能是大部分前端開發的發展方向。

  • 前端框架開發

這里說的前端框架主要分為兩類,一種是比較通用前端開發框架,比如 Vue、React、Angular。大部分公司會依賴這些開源框架做業務開發,也有部分公司會 fork 它們做一些符合自己公司使用場景的魔改(比如我司)。

當然,還有一部分人力充裕的大公司會自研前端 MVVM 框架,比如百度的 san。

另一種是跨端框架的開發。很多公司都有跨端需求,write once,run everywhere。早期的跨端需求是一份代碼跑 iOS 和 Android 端,代表作有 React Native、Weex、Flutter。

隨著小程序的興起,一些跨小程序開發框架也隨之而來,代表作有 mpvue、wepy、mpx。甚至后面還出現了跨小程序、Web 和 App 的框架,代表作有 Taro、uni-app、Chameleon。

這些框架的主要思路都是把同一份源碼編譯成不同平臺的目標代碼。雖然看上去實現了 write once,run everywhere,提升了業務的研發效率。但由于不同平臺的差異,可能某些地方出錯,就要 debug everywhere 了,跨端框架本身的維護成本也很高。

跨端框架目前是一個百花齊放的狀態,各大公司基本都有自研的框架,它也確實是一個值得研究的方向。

  • 前端工程化

前端工程化主要指的是用工程化的方式解決前端項目的初始化、開發、測試、編譯構建、上線部署等一系列問題。

通常我們會借助一些工具,如 webpack 來輔助我們實現一些前端工程中比較基礎的部分,比如腳手架、模塊化開發、自動化測試、編譯打包等。

但是前端工程是沒有銀彈的,沒有一套前端工程化方案適應于所有的業務。我們可能需要編寫一些 webpack 插件、loader 來滿足于業務開發。

現在炒的比較火的微前端,也并不是萬金油,大部分場景你可能都用不到。

如果是一個大型復雜的項目,我們還需要考慮到項目管理,是采用 multiple repo、還是 monorepo 的方式。

另外,前端工程化還包括性能優化,通過工程化的手段來解決前端性能優化的問題。

因此,對于做這部分工作的工程師,一定要從業務的角度來思考,來給團隊搭建一套合適的工程化方案。這確實也是值得研究的方向。

  • 可視化開發

可視化開發也是前端一個垂直的領域,什么是可視化,引用月影大佬的話:

可視化是將數據組織成易于為人所理解和認知的結構,然后用圖形的方式形象地呈現出來的理論、方法和技術。實現可視化有兩個關鍵要素,一個是數據,另一個是圖形。如果要考慮在計算機上呈現,那還要加上交互。

可視化底層的技術主要是 SVG、Canvas2D 和 WebGL。

可視化領域的工具主要有四類;專業呈現各種類型圖表的圖表庫;專業處理地圖、地理位置的可視化地理庫;專業處理視覺呈現的渲染庫;以及處理數據的數據驅動框架。

可視化也是前端的一個值得發展和深耕的領域。

  • 游戲

游戲開發也是前端一個垂直的領域,可以利用 DOM 或者是 Canvas2D 做一些 2d 小游戲,也可以基于 WebGL 做一些 3d 小游戲。

做游戲通常會一些基于框架比如 createJS、cocos2d,egret 等開發。而且隨著一些游戲框架和瀏覽器渲染引擎的深度合作,性能方面也得到了相當大的優化。

如果對開發游戲感興趣,也可以嘗試往這個領域發展。

  • 其它

還有一些相對冷門的方向,比如做前端相關的工具鏈,開發 web IDE,編譯器等。如果有機會和興趣,也都是可以發展的方向。

因此針對上述前端深入發展的方向,我的建議是選擇一條深入下去,任何一個方向達到技術專家的級別,不管到哪里都有口飯吃。

全棧開發

有粉絲問我,對全棧開發怎么看?

誠然,這樣的人才很吃香,但是在國內,擁有真正全棧開發能力的人并不多,而且大部分大公司前后端分工明確,也沒有多少機會做全棧開發。

Facebook 的確實有一批頂尖的全棧工程師,但是你要想想,有多少人的能力能達到這家公司的入門門檻?

在我看來,想成為全棧開發人才要比成為領域的專家難的多,有些人前后端都做,最后只是成為了全干工程師。因此大部分公司還是明確了前后端開發方向,把專業的事情交給專業的人士去做。

如果你想往全棧的方向發展,我并不反對,但需要下非常大的功夫且有不錯的機會在工作中鍛煉。

總結

因此在我看來,前后端開發只是分工不同。雖然在大公司內部,后端的高 P 確實比前端多,但也不要忘了,后端開發的人也比前端多的多。

真正厲害的人,無論是做前端還是后端,都會對對方做的工作有足夠多的敬畏和尊重。

前端人有時候會自嘲自己就是個“切圖仔”,后端人有時候會調侃自己就是個 CURD 工程師。自嘲可以,嘲諷別人就不行。

如果某些別有用心的人非要挑釁,想要引戰,建議在嘲諷別人前,先掂掂自己有幾斤幾兩吧。

最后預告福利:掃下方二維碼加我微信 ruochuan12,可以拉你進群免費觀看10月23日的前端早早聊?Vue 專場直播,大咖云集?,更有「尤雨溪」分享「Vue3 生態現狀以及展望」。?另外還可以送50個錄播視頻和PPT~

788b9c2e8d002ef738d26192914ce6b3.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275314.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275314.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275314.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用jquery阻止事件起泡

jquery使用過程中阻止事件起泡實例 1、通過返回false來取消默認的行為并阻止事件起泡。jQuery 代碼:$("form").bind("submit", function() { return false; })2、通過使用 preventDefault() 方法只取消默認的行為。jQuery 代碼:$("form").bind(…

利益相關者軟件工程_如何向利益相關者解釋用戶體驗的重要性

利益相關者軟件工程With the ever increasing popularity of user experience (UX) design there is a growing need for good designers. However, there’s a problem for designers here as well. How can you show the importance of UX to your stakeholders and convince…

云棲大會上,阿里巴巴重磅發布前端知識圖譜!

大家好,我是若川,點此加我微信進源碼群,一起學習源碼。同時可以進群免費看Vue專場直播,有尤雨溪分享「Vue3 生態現狀以及展望」阿里巴巴前端知識圖譜,由大阿里眾多前端技術專家團歷經1年時間精心整理,從 初…

Linux下“/”和“~”的區別

在linux中,”/“代表根目錄,”~“是代表目錄。Linux存儲是以掛載的方式,相當于是樹狀的,源頭就是”/“,也就是根目錄。 而每個用戶都有”家“目錄,也就是用戶的個人目錄,比如root用戶的”家“目…

在當今移動互聯網時代_誰在提供當今最好的電子郵件體驗?

在當今移動互聯網時代Hey, a new email service from the makers of Basecamp was recently launched. The Verge calls it a “genuinely original take on messaging”, and it indeed features some refreshing ideas for the sometimes painful exercise we call inbox man…

插件式開發小記

在做插件開發時,小記一下,用來備忘: 1.DEV8.2的XtraTabControl控件如何獲得當前打開的子窗體:XtraForm frm (XtraForm)xtraTabControl1.SelectedTabPage.Controls[0];2.插件開發的底層標準最好是抽象類,這樣擴展性好。…

linux運維工程師學習路線

一、學習路線: 1.青銅: 1、Linux基礎知識、基本命令(起源、組成、常用命令如cp、ls、file、mkdir等常見操作命令) 2、Linux用戶及權限基礎 3、Linux系統進程管理進階 4、linux高效文本、文件處理命令(vim、grep、sed、…

React 全新文檔上線!

大家好,我是若川,點此加我微信進源碼群,一起學習源碼。同時可以進群免費看明天的Vue專場直播,有尤雨溪分享「Vue3 生態現狀以及展望」,還可以領取50場錄播視頻和PPT。React 官方文檔改版耗時 1 年,今天已完…

POJ2392

題意:奶牛們要用K個不同類型的石頭建太空電梯.每一種石頭的高度為Hi,數量為Ci,且不能放在高于Ai的地方,求最高能建多高的太空電梯. 分析:多重背包,數組標記.顯然將ai小的放在下面會更優.所以先排序. code: const maxh41000; var cnt:array[0..maxh] of longint;h,…

網絡低俗詞_從“低俗小說”中汲取7堂課,以創建有影響力的作品集

網絡低俗詞重點 (Top highlight)Design portfolios and blockbuster movies had become more and more generic. On the design side, I blame all the portfolio reviews and articles shared by “experienced” designers that repeat the same pieces of advice regardless…

Vue多個組件映射到同一個組件,頁面不刷新?

問題 在做項目的過程中,有這么一個場景:多個組件通過配置路由,都跳轉到同一個組件,他們之間的區別就是,傳入的參數不同.請看router對象: userCenterLike: {name: user-center,params: {index: 0}},userCenterHistory: {name: user-center,params: {index…

尤雨溪寫的100多行的“玩具 vite”,十分有助于理解 vite 原理

1. 前言大家好,我是若川。最近組織了源碼共讀活動,感興趣的可以加我微信 ruochuan12想學源碼,極力推薦之前我寫的《學習源碼整體架構系列》jQuery、underscore、lodash、vuex、sentry、axios、redux、koa、vue-devtools、vuex4、koa-compose、…

webflow如何使用_我如何使用Webflow構建輔助項目以幫助設計人員進行連接

webflow如何使用I launched Designer Slack Communities a while ago, aiming to help designers to connect with likeminded people. By sharing my website with the world, I’ve connected with so many designers. The whole experience is a first time for me, so I wa…

atmega8 例程:T1定時器 CTC模式 方波輸出

/******************************************************************* * 函數庫說明:ATMEGA8 T1定時器 CTC模式 方波輸出 * 版本: v1.00 * 修改: 龐輝 蕪湖聯大飛思卡爾工作室…

antd的table進行列篩選時,更新dataSource,為什么table顯示暫無數據?

我想當然地認為只要dataSource改變&#xff0c;那么<Table>組件就會重新渲染&#xff0c;但是有一種特殊情況例外&#xff1a;在onFilter()中不寫篩選條件&#xff0c;在調用filterDropdown進行列篩選的時候&#xff0c;通過handleSearch改變/保存dataSource的狀態&#…

重新構想原子化 CSS

感謝印記中文的 QC-L[1] 對本文進行翻譯&#xff0c;英文原文: English Version[2]。本文會比往期文章相對長些。這是我個人的一個重大的工具發布&#xff0c;有許多內容我想談論。如果你能花些時間讀完&#xff0c;不勝感激&#xff0c;希望能對你有所幫助 :)推薦訪問 https:/…

cv::mat 顏色空間_網站設計基礎:負空間

cv::mat 顏色空間Let’s start off by answering this question: What is negative space? It is the “empty” space between and around the subjects of an image. In the context of web design, your “subjects” are the pictures, videos, text, buttons and other e…

MVC3 上傳文件

前臺引擎采用Razor 上傳頁View&#xff1a; model System.Web.HttpContextBase{ ViewBag.Title "上傳文件";}<h2>上傳文件</h2><br /><br />*new { enctype "multipart/form-data" }比不可少&#xff0c;否則上傳文件不會成功…

Day07 - Ruby比一比:Symbol符號與String字串

前情提要&#xff1a; 第六天我們透過Ruby代碼練習public&#xff0c;protected和privatemethod時&#xff0c;發現冒號在前面的參數&#xff0c;&#xff1a;mydraft&#xff0c;&#xff1a;myspace&#xff0c;這些就是符號Symbol。在今天&#xff0c;我們就來解釋Symbol吧&…

[知乎回答] 前端是否要學習 Node.js?

大家好&#xff0c;我是若川。最近組織了源碼共讀活動&#xff0c;感興趣的可以加我微信 ruochuan12很多小伙伴都表示收獲頗豐。一起學的大多數200行左右的Node.js源碼。今天推薦這篇文章。&#xff08;剛剛在寫明天掘金要發的文章&#xff0c;差點忘記今天還沒發文。在知乎上看…