作為前后端都從事過的老鳥,我來講下自己的看法,希望能給迷茫的你一點思路:
前端是什么?你可以這樣理解,前端是通過界面完成人機交互,是離用戶最近的一個崗位。這個崗位在最近幾年已經發(fā)生了天翻地覆的變化,但趨勢是越來越規(guī)范、強大。
工作重心的區(qū)別前端更側重于界面實現(xiàn)、交互邏輯、用戶體驗。
后端更側重于性能、拓展性。
說一下具體技術吧:
前端必備技能有:
HTML、CSS、JavaScript、ES6+、VUE(REACT、Angular只有精通一門)、Webpack、以及數不勝數的UI框架,甚至現(xiàn)在流行的大前端將Andriod、IOS也列入了前端的范疇。
后端必備技能:Java(PHP、Python等至少精通一門)、Mysql(Oracle、SQLServcer等)、Linux基本使用、Readis、Docker等。
怎么選擇俗話說男怕入錯行,女怕嫁錯郎,選擇很重要。可以從下面幾點考慮:
就業(yè)情況
技術崗位目前都是緊缺崗位,當然這里講的是具備一定能力的開發(fā)者,濫竽充數的我相信哪個行業(yè)都不好呆。非要比較話,前端相對就業(yè)率高些,后端由于之前的基數,相對飽和,但如果你是高端人才,完全可以忽略。
薪資情況
目前就一二線城市來看,兩個行業(yè)基本持平,并長期會保持這種狀態(tài)。
難易程度
前端門檻相對于后端要低,但兩者深入都需要花很大的功夫。
所以要靜下心來想想自己這兩個方向更喜歡哪個。
換崗的困惑如果從事行業(yè)3年內發(fā)現(xiàn)更喜歡前端或后端甚至測試,我覺得可以大膽去換,前一份工作會是你的一份財富,因為編程本身思想很重要,這個不會隨著你換崗而丟失。
但如果從事很久后端或前端,再轉行,則先對劣勢了,畢竟招聘者希望入職員工是直接能帶來收益的。
總結耐住寂寞,方得始終!
編程這條路就是一個不斷學習,不斷否定的路,在路上會有各種各樣的誘惑。堅持很難,放棄很簡單,但往往堅持下來的人,終將能收貨自己所期。
加油~
JavaScript開發(fā)的web最快。
但是這個問題又分為幾個方面:
1、下載數據量方面:
網頁種只有三個大分支:HTML、CSS、JavaScript。
其中 HTML 是必要的,不可或缺的。剩下兩個實際上完全刪除都是 OK 的。(很多交互邏輯是不需要 JavaScript 的)
但是不能一味追求速度,網站還是要基本好看的,所以 CSS 要加進來。雖說 HTML + CSS 能實現(xiàn)大多數的交互邏輯,但是 JavaScript 有時能簡化這些邏輯,使得代碼量減少,或者有些復雜交互邏輯只能使用 JavaScript 來實現(xiàn),所以按需使用 JavaScript 也是有必要的。
要使網頁的訪問速度提高,一個首要條件是下載的數據量降低。一個總大小 1MB 的網頁和一個總大小 1KB 的網頁誰的加載速度快,這很容易理解。
所以盡可能精簡 HTML 文件體積,盡可能精簡 CSS,盡可能精簡 JavaScript,可以非常有效、肉眼可見地提升網頁的加載速度。
精簡 HTML、CSS、JavaScript 可以在很多方面入手,最輕松的方式是盡可能的使用新特性,比如 HTML5、CSS3 和 JavaScript ES6。在不考慮古代瀏覽器兼容性(以 3~5 年內主流瀏覽器兼容為標準最佳)的情況下,建議盡可能【不要】使用 babel 之類的工具進行轉碼,可以不降低代碼的執(zhí)行效率,并且不增大文件體積。
還有就是盡量不使用第三方類庫,原生 JavaScript 現(xiàn)在已經非常好用了,在沒有必要的情況下,盡可能全部交互邏輯使用原生實現(xiàn)。或是使用一些可拆分的精簡類庫(對于特別復雜的情況)。或者對于開源類庫,在遵守開源協(xié)議的前提下截取關鍵代碼來使用。
然后使用各種壓縮工具將 HTML、CSS、JavaScript 文件中不需要的空格、標記符全部刪除,最后使用 Brotli 或是 GZip 對文件進行壓縮。
數據量少了,訪問速度就上來了。
2、資源方面:
對于網頁種用到的第三方資源,比如圖片之類,盡可能壓縮(在不損失質量的情況下),并嘗試使用 WebP 等新格式。視頻也是類似。對于 CSS、JavaScript 等資源盡可能內聯(lián)到文件中,避免單獨下載,最好是啟用 HTTP/2,對資源使用 Server Push。
3、服務端方面
對于靜態(tài)類型頁面(純靜態(tài),或是使用 API 加載頁面數據類型的網站),可以開啟 HTTP/2,可以預先將文件使用 Brotli 和 Gzip 分別壓縮好存儲起來。
對于動態(tài)類型頁面(模板頁面,內容通過服務端代碼運算后填充),建議不要等所有數據全部計算完再向前端返回數據,可以考慮邊算邊輸出(減少 TTFB 時間)。如果服務端計算很慢的話,可以先返回 HTML 的 <head> 部分,讓瀏覽器先去下載外部資源(CSS、JavaScript 之類),還可以做一些 Prefetch 之類,讓瀏覽器不要閑著等數據。對于需要用到 DOM 元素的 JavaScript,可以靈活使用 defer 屬性以減少代碼量、下載數據量。
要使網頁的訪問速度最快,用什么語言開發(fā)最好?
前端:原生 JavaScript ES6,這是唯一選擇。盡量不要使用大型的前端框架(動不動給你打包一個 1M 的 bundle 是很嚇人的。而且頁面變化不復雜的話,這些框架的虛擬 DOM 帶來的性能提升還彌補不了大量代碼帶來的性能損失,得不償失。所以請在絕對必要的情況下再去使用這些東西。)
后端:看你具體的業(yè)務場景了,各種語言應對各種不同的場景,沒有一家獨大一說(不然讓其他語言怎么活)。Java、Go、Python、C#.Net、Node.JS、Ruby、PHP……或者使用 C/C++ 來寫后端也是完全可以的,靈活實現(xiàn)不同場景[手動滑稽]。(你要愿意,直接寫匯編都可以)
總的來說,常規(guī)優(yōu)化做好了,根據實際業(yè)務場景來選擇語言技術棧,才是提升訪問速度的關鍵辦法。
(或者能給廣大用戶提一下物理網絡速度也好)
前端和后端指的是網站建設當中的分工,之所以分前端和后端是因為網站建設要不同的人分工合作,主要分為前端和后端,下面說一下什么是前端和后端。
1、網站前端
網站前端就是網站的頁面設計或者是靜態(tài)的網頁設計,簡單的說我們訪問一個網站看到的所有頁面網頁上的內容和版式樣式都屬于網站前端,網站前端工作就是設計網站的靜態(tài)頁面,所謂的靜態(tài)頁面就是網站前端不包括后端,簡單的例子說一下,靜態(tài)頁面就像一張報紙,上面有文字圖片和內容,并排好版,之所以稱之為靜態(tài)是因為這些內容不能動態(tài)的改變,也就是所有人看到的靜態(tài)頁面都是一模一樣的,沒有任何區(qū)別,這是因為這個頁面是靜態(tài)的,不會改變。總之,網站前端就是指的網站的靜態(tài)頁面設計,網站前端工作使用的是html、css、js等技術設計網站頁面的樣式和排版布局,這就是網站前端。
2、網站后端
網站后端也叫網站后臺技術或者動態(tài)網站技術,上面我們也說了靜態(tài)頁面的缺點就是不能動態(tài)的改變頁面上的內容和實現(xiàn)一些代碼邏輯,比如我們要實現(xiàn)用戶的注冊登錄驗證、或者購物結算等,這些都是要代碼邏輯來實現(xiàn)的,還有我們需要一個后臺來往我們的網頁添加一些消息新聞通知等,因為不是每一個網站的使用者都懂前端技術來來改變頁面內容,而且這樣也太不方便了,所以需要網站后臺來實現(xiàn)這些功能,這些東西都是需要網站后臺技術來實現(xiàn)的。常見的網站后端開發(fā)語言有asp、asp.net、jsp、php等。同時網站后臺技術還包括數據庫如MySQL、sqlserver等,數據庫是用來存儲后臺數據的。
3、再說一下為什么要分前端和后端。
現(xiàn)在大家明白了,網站前端和后臺的工作是完全不同的,前端的工作是設計靜態(tài)頁面,后臺是結合數據庫實現(xiàn)一些代碼的邏輯如驗證用戶登錄等,后臺更加偏重與邏輯思維。總之網站只所以分前端和后臺是為了使不同的人干不同的事情,前端的專業(yè)做前端后端專業(yè)的做后臺,這樣分工就不用一個既懂前端技術又懂后端技術。