為什麼總說要注重前端基礎?
前端萌新一枚,大家都強調前端基本功的重要性,可是入職發現直接使用框架搬磚...沒感覺到基礎太多的運用,更別說數據結構和演算法加上計算機網路之類的了。 難道說是要從高級抽象的框架向內部學習才是正確的選擇嗎?
----------------------------------------------分割線----------------------------------------------------
2017.08.09
當初發這個問題的時候沒想到這麼多人能能回答,首先感謝各位大大的經驗傳授。
當初問問題的時候是在剛入職很迷茫,這半個月也在不斷的學習和反思,我目前的認知是首先把業務熟悉工作在不斷的深入中再根據需要進行不斷的學習。否則尬看真的是沒什麼效率。
看了爝大的live之後收益很多,也有了前進的思路和方向,接下來我會找個時間根據答案和自身的理解寫一篇反思並且不斷更新,希望可以以我的經歷給各位學弟學妹們一點經驗分享。
最後,再一次真誠的感謝各位大大們的回答和關注,謝謝大家。
2017.09.02
醞(tuo)釀(le)一個月終於寫出來了一份對於一年學習歷程的總結,嘔心瀝血,乾貨滿滿。主要寫了我對前端學習的理解和一些自學路上的坑,希望可以讓想要基礎紮實的童鞋們少走一些彎路。
附上鏈接:如何優雅的自學前端
2017.10.15
再次更新答案,前段時間和 @最深的藍 (從業8年的資深前端大佬)交流,其中有一句話一陣見血,故決定把它作為本題的終結語:
只依賴框架和套路做業務很快就會遇到瓶頸無法提升,只有紮實的基礎和持續學習才能不斷提升自己水平的天花板。
希望可以幫助到前端的萌新們~ 祝大家早日變成前端大佬。
在此感謝深藍大佬和各位答主大佬對本問題的貢獻和支持,也謝謝大家的關注和收藏~
作為我的第一個提問,就這樣完美結束了~
基礎就好比練馬步,師傅總是讓你練個馬步練五年,不教你招式,不教你套路。為的不是花拳繡腿,而是紮實底盤,習得拳拳到肉的真功夫。
前端基礎也好計算機基礎也好也是一樣的,基本功不好的話,也只會抄抄別人的代碼,自己東湊湊西拼拼,真的上了檯面,讓基本功不紮實的童鞋去寫千萬級別訪問量的網站,最後的結果就是慘不仍睹,上不了檯面。
所以說你如果想更上一層樓,馬步要紮好,基礎要打好,沒有一個工程大師靠的是空中樓閣。
當然這個世界不都是大師,活出自己。
其實不只是前端工程師,多少開發者也就是常規的CRUD工程師?業務做多了,技術套路也就那麼兩下子。
很多時候,企業重視的是開發效率和規範,用框架能迎合這一需求。而對於程序員來講,天生會有一種不安全感,擔心自己學得不夠、被淘汰。然後還有一種情況:1%的難題需要用深度知識點來解決的概率是99%。所以,所謂的「台上一分鐘,台下十年功」。
開發者需要在工作中及工作之外勤于思考、善於學習與總結。這是一個必備技能。切不能「今朝有酒今朝醉」。要知道,關鍵時刻用得上,才是你的價值所在,不然你終究碌碌無為。但是關鍵時刻又不是天天都會出現的。
對於JS,本身是一門比較奇特的語言,其內部機制容易讓人犯迷糊,比如作用域、閉包及原型繼承。也許用框架你沒什麼問題,但如果有一天你想深入框架甚至寫自己的框架,這些知識點就是繞不過的了。所以,是否想做一個基礎紮實的程序員,主要還是看自己「心」有多大。
因為前段工程師不應該滿足於拼湊出可以工作的網頁,要精益求精就必須要了解基礎知識。
說虛的沒意思,就舉幾個前端工程師最好要了解的知識吧。
- 跨站請求偽造(CSRF)的原理是什麼?怎麼避免這樣的安全漏洞?
- 怎麼寫出對於代碼縮小器(minifier)友好的代碼?為什麼?
- Promise是什麼意思?有什麼優勢?
其實要懂得還有很多,千萬滿足於搬磚拼湊出東西就以為完事了。
基礎好,思路廣,潛力大,代碼好,bug少。
因為在IT界,有如下幾個現象。
1. 一部分知識是常用的,另一部分知識是不常用的。
如果是這樣,還不夠。而且:
2. 不常用的知識可以推導出常用的知識。(比如你理解了範式那一套,學習任何編程語言應該都不成問題。)
所以如果一個人懂不常用的知識,他必然懂常用的知識。
3. 不常用的知識變化慢但是不能直接起作用,常用的知識變化快但是能直接起作用。(比如前端工具鏈每兩年就得淘汰一半,而數據結構演算法卻是常青樹。)
所以這個世界上必然有大部分人只掌握常用知識。少部分人有精力去研究不常用的知識。
最重要的是:
4. 物以稀為貴。
當行業飽和的時候,只懂得常用知識的人不可能有什麼大的發展。由於懂不常用知識的人比較少,他的優勢就比較明顯。這些不常用的知識在現實中有個名稱,就是天花板或者瓶頸。基礎好對於接觸新知識、了解框架原理能起到很大的作用,框架只是幫助我們對底層的操作做了封裝,更方便使用,事實上在寫業務代碼的時候如果基礎不好,寫出的代碼不僅冗餘而且容易出 bug。我見過別人寫 promise 還拿 callback 的思維去寫,一層層嵌套,完全沒發揮 promise 的鏈式調用的優勢,歸根到底還是不懂原理,生搬硬套。現在前端知識日新月異,唯有以不變應萬變,打好基礎,方能面對各種新東西。
之前在一APP的前端大咖有提到:
DNS優化
1、設置DNS多級緩存:瀏覽器緩存,系統緩存,路由器緩存,IPS伺服器緩存,根域名伺服器緩存,頂級域名伺服器緩存,主域名伺服器緩存。
2、DNS負載均衡(DNS重定向):使用CDN(Content Delivery Network)內容分發網路,返回一個離用戶最近的IP地址。
HTTP
減少HTTP請求:頁面內的圖片,或者引入的CSS文件和JS文件等都是一個請求,都等重複上面的過程,減少請求的次數自然就提高了訪問頁面的速度。
方法:
1、合併CSS文件:一個CSS文件請求一次,多個就請求多次,當然合併了就請求一次
2、合併JS文件
3、雪碧圖:將一些小圖片製作成雪碧圖,只會請求一次
4、緩存:將一些CSS文件或者JS文件緩存下來自然速度就快上去了
5、減少cookie中不必要的信息:因為每個請求都會把cookie帶上,內容少自然就快;其實也可以使用H5的web存儲,用來代替cookie。
親幾天碰巧遇到這個問題,通過一個客戶問及的一個看似既簡單的JS問題,而引發的感觸。都是Javascript的作用域惹得禍
基礎能讓你腳步更穩,踏出更加堅實的步伐,在前端的道路上(其他也一樣)行走的更穩、更快、更遠。不說了,繼續打基礎ing
程序員--&>前端程序員--&>web前端程序員 然後我覺得不管哪種程序員基礎都很重要。
不單單是前端基礎。前端也是編程,計算機基礎也是必不可少的。如果既不是設計師也不是程序員,那這樣的前端是什麼?你用的那些框架都是別人寫的,而且層出不窮,你也不知道哪天就淘汰了。而且你不了解原理,可能都讀不懂源碼。一個Web工程師不懂網路,不懂Web安全,這能叫工程師嗎?當然這也是要看積累的。總而言之就是看你的目標了。
因為你始終要相信
自己寫下的代碼一定存在更優解
如果不會數據結構算髮,計算機網路,操作系統。那叫切圖崽或者碼農,會了並且基礎好的才叫前端工程師
推薦閱讀: