大家好,我是Echa。
最近這段時間收到了一些粉絲們的私信,問小編這個技術要不要學,某個技術要不要學,還想找這方面的工作。由于白天還要上班比較忙,一直沒抽出時間去回答這類問題。現(xiàn)在好了,利用這夜深人靜的時候,盤點一下那些不再流行的Web 開發(fā)技術,以及對應現(xiàn)代化替換方案。
近幾年,Web 開發(fā)技術可謂是飛速發(fā)展,不斷有新的技術涌現(xiàn)。比如說火爆的前端技術框架Astro,前端運行時Bun,構建工具Vite等都給前端提供了強大動力。再說說流行的后端大數(shù)據(jù)采集器Python, 處理高并發(fā)的Golang,微服務架構的Spring Cloud和Netflix OSS。再繼續(xù)高端大氣一點就是云原生開發(fā)Docker和Kubernetes,以及Serverless架構。還有最近一兩年特火的人工智能(AI)和機器學習(ML)。
當然,也有很多前端后端技術隨著技術的發(fā)展不再需要使用,有了更好的替代方案。
借此機會,小編給大家詳細說說別再學那些落后的Web 開發(fā)技術了,希望對準備踏入程序員道路的和初學者有所幫助,看了本篇文章讓你少走彎路。
本文提到的技術不代表不能再使用了,其仍存在一些適用場景,并且很多遺留老項目可能是使用這些技術實現(xiàn)的,需要進行維護。只是在新項目技術選型時,應盡可能考慮使用更為現(xiàn)代化的前后端技術。
JQuery 官網(wǎng)
jQuery由美國人John Resig(約翰·萊西格)于2006年創(chuàng)建。至今為止,仍然是一個很流行的 JavaScript 庫,其生態(tài)系統(tǒng)中有超百萬個插件。并沒有統(tǒng)一規(guī)范管理,但這是一個技術上的歷史遺留問題,并不是真的很流行,只是很多老網(wǎng)站仍然使用。根據(jù)網(wǎng)上數(shù)據(jù)統(tǒng)計,排名前100W的網(wǎng)站中就有80%還是已JQuery 方式實現(xiàn),大部分網(wǎng)站都用了WordPress 前端代碼用的是JQuery,而且直接位置還有繼續(xù)用WordPress 創(chuàng)建。
小編的建議是:不要在學老。雖然 jQuery 依然被廣泛使用,但它已經不再是前端開發(fā)中的必須技術。現(xiàn)在有很多前端框架,都已經把JQuery 能實現(xiàn)的功能封裝的更好了,包括性能、兼容、響應式布局等等都不用過多的考慮,前端框架本身就全部幫你搞定了。可以選擇當下流行的前端框架,如 Vue、React、Nuxt.js、Next.js 等。
Bootstrap 官網(wǎng)
Bootstrap是美國Twitter公司的設計師Mark Otto和Jacob Thornton合作基于HTML、CSS、JavaScript 開發(fā)的簡潔、直觀、強悍的前端開發(fā)框架,使得 Web 開發(fā)更加快捷。Bootstrap提供了優(yōu)雅的HTML和CSS規(guī)范,它即是由動態(tài)CSS語言Less寫成。Bootstrap一經推出后頗受歡迎,一直是GitHub上的熱門開源項目,包括NASA的MSNBC(微軟全國廣播公司)的Breaking News都使用了該項目。 國內一些移動開發(fā)者較為熟悉的框架,如WeX5前端開源框架等,也是基于Bootstrap源碼進行性能優(yōu)化而來。
Bootstrap 是一個流行的 CSS 框架,它提供了預定義的CSS樣式、網(wǎng)格系統(tǒng)、JavaScript插件以及許多可重用的組件,如導航欄、按鈕、表單等。在七八年前,很多網(wǎng)站都使用 Bootstrap 來編寫,當時他們聲稱自己是“世界上最先進的響應式前端框架”。但是,現(xiàn)在來看,Bootstrap 的樣式并不是很美觀,還存在包體積大,難以自定義,實現(xiàn)落后,開發(fā)體驗不好等問題。
小編的建議是:不要再學了。可以用目前很多優(yōu)秀的方案代替它。
比如:
Ajax即Asynchronous Javascript And XML(異步JavaScript和XML)在 2005年被Jesse James Garrett提出的新術語,用來描述一種使用現(xiàn)有技術集合的‘新’方法,包括: HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要的XMLHttpRequest。使用Ajax技術網(wǎng)頁應用能夠快速地將增量更新呈現(xiàn)在用戶界面上,而不需要重載(刷新)整個頁面,這使得程序能夠更快地回應用戶的操作。
小編的建議是:不要再學了。Ajax 的功能簡單,使用起來有很多局限性,推薦使用功能更全面的第三方數(shù)據(jù)請求庫來處理數(shù)據(jù)請求,比如 Axios,它們的功能更加全面,使用起來也更方便,或者更現(xiàn)代化的前端請求 API:fetch。
AngularJS誕生于2009年,由Misko Hevery 等人創(chuàng)建,是一款構建用戶界面的前端框架,后為Google所收購。 AngularJS是一個應用設計框架與開發(fā)平臺,用于創(chuàng)建高效、復雜、精致的單頁面應用,通過新的屬性和表達式擴展了 HTML,實現(xiàn)一套框架,多種平臺,移動端和桌面端。 AngularJS有著諸多特性,最為核心的是:MVVM、模塊化、自動化雙向數(shù)據(jù)綁定、語義化標簽、依賴注入等等。
2016 年,我們今天所熟知的 Angular 發(fā)布了。注意,不要把 AngularJS 和 Angular 混淆了。AngularJS 從版本 2 開始就被 Angular 取代了,目前已經不再被 Google 官方支持和維護。
Angular 是一個用 TypeScript 編寫的現(xiàn)代化前端框架,是對 AngularJS 的改進和升級。它采用了組件化編程方式、模塊化體系結構,并提供了更好的性能、可擴展性和可測試性。Angular 又被稱為 "Angular 2+" 或 "Angular Next"。
小編的建議是:不要再學AngularJS了。對于新的項目,可以選擇使用 Angular 來開發(fā),但是更推薦使用更受歡迎的 Vue 和 React 來開發(fā),因為在國內這兩個框架使用的更多,生態(tài)更加完善,社區(qū)比較活躍,這也意味著遇到問題時更容易解決。
Django 是一個由 Python 編寫的一個開放源代碼的 Web 應用框架。
Django 借鑒了經典的 MVC 模式,它也將交互的過程分為了 3 個層次,也就是 MTV 設計模式;M全拼為Model,與MVC中的M功能相同,負責和數(shù)據(jù)庫交互,進行數(shù)據(jù)處理。數(shù)據(jù)存儲層,處理所有數(shù)據(jù)相關的業(yè)務,和數(shù)據(jù)庫進行交互,并提供數(shù)據(jù)的增刪改查;T全拼為Template,與MVC中的V功能相同,負責封裝構造要返回的html。模板層(也叫表現(xiàn)層)具體來處理頁面的顯示;V全拼為View,與MVC中的C功能相同,接收請求,進行業(yè)務處理,返回應答。業(yè)務邏輯層,處理具體的業(yè)務邏輯,它的作用是連通Model 層和 Template 。除了以上三層之外,還有一個URL分發(fā)器,它的作用是將一個個URL的頁面請求分發(fā)給不同的View處理,View再調用相應的Model和Template
小編的建議是:不要再學Django了。由于現(xiàn)代前端技術如 React、Angular 和 Vue 的興起,Django 已經不再是前端開發(fā)中的必須技術。Django 相對于現(xiàn)代前端框架來說,生態(tài)系統(tǒng)不完善,開發(fā)難度更大,并且不符合現(xiàn)代開發(fā)的前后端分離的理念。可以選用現(xiàn)在更為流行的前端框架,比如 React、Vue等。
Grunt 和 Gulp 都是前端自動化構建工具。
Grunt 是一套前端自動化工具,一個基于nodeJs的命令行工具,一般用于:① 壓縮文件② 合并文件③ 簡單語法檢查
Gulp 是基于node.js的一個前端自動化構建工具,開發(fā)者可以使用它構建自動化工作流程(前端集成開發(fā)環(huán)境)。使用gulp你可以簡化工作量,讓你把重點放在功能的開發(fā)上,從而提高你的開發(fā)效率和工作質量。
Gulp 特性:
使用方便通過代碼優(yōu)于配置的策略,Gulp可以讓簡單的任務簡單,復雜的任務更可管理。
構建快速通過流式操作,減少頻繁的 IO 操作,更快地構建項目。
插件高質有嚴格的插件指導策略,確保插件能簡單高質的工作。
易于學習少量的API,掌握Gulp可以毫不費力。構建就像流管道一樣,輕松加愉快。
小編的建議是:不要再學Grunt 和 Gulp了。 雖然這兩個工具都很強大,目前還有一些使用場景。但是隨著前端的快速發(fā)展,出現(xiàn)了很多更為現(xiàn)代化工具,比如 Webpack、Vite 等,這些工具使用更簡單,效率更高,推薦使用這些現(xiàn)代化的構建工具。
使用組件的方式進行編程,可以提高開發(fā)效率,提高組件的復用性、提高代碼的可維護性和可擴展性
React定義組件的方式有兩種:
小編的建議是:不要再學React16.8之前版本了,直接從React16.8之后開始學。v16.8 版本引入了 Hooks,得以讓我們更方便的使用函數(shù)組件,函數(shù)組件的代碼也更加清晰易懂。
因此,理解類組件是如何工作的以及生命周期方法仍然是很好的。但如果正在編寫新的 React 組件,建議使用帶有 React Hook 的函數(shù)組件。
IE瀏覽器,是美國微軟公司很早前就推出的一款網(wǎng)頁瀏覽器。隨著技術的發(fā)展,IE瀏覽器經歷了很多次升級。在IE 6以前,我們稱之為Microsoft Internet Explorer;IE 7到IE 11版本稱為Windows Internet Explorer,簡稱為IE瀏覽器。相較于其他瀏覽器,IE瀏覽器有著更加簡潔的外觀和更為簡單的操作模式,這使得瀏覽器的運行速度更快;但是相應的,在功能拓展部分就比較欠缺,而且容易中病毒,安全性不高。
2022 年 6 月 16 日,IE 瀏覽器正式退役,之后將由 Edge 瀏覽器接棒繼續(xù)提供服務。許多網(wǎng)站和程序要求兼容 IE,IE6 對 W3C 標準支持不夠友好,這可能是很多前端開發(fā)的噩夢了,IE6 的普及導致之后的 20 年間,不斷有開發(fā)者因為適配需要適配 IE6 而焦頭爛額。
小編的建議是:IE兼容技術不要再做兼容了。如果產品和運營人員還這么要求,直接拿出40米大刀擺在眼前,讓他們去體會。如今,IE 瀏覽器,由現(xiàn)代瀏覽器 Edge 繼續(xù)提供服務,Edge 緊跟最近的技術,快速更新和維護。開發(fā)者也不再需要學習那些令人頭疼的兼容 IE 的技術了,喜大普奔!
雪碧圖,英文原名叫 CSS sprites。sprite 指的是精靈。我們喝的雪碧,它的英文也是 sprite,應該直譯為 “精靈” 的。但要符合中國市場,因為你不能說我喝的飲料叫“精靈”,那特別怪。于是就走音譯的路線,翻譯成 “雪碧” 了。
雪碧圖的主要作用是減少 HTTP 請求數(shù)量。
假如你有 100 張小圖片,你要發(fā)起 100 個請求。如果你合并成一個大圖片,那你只需要發(fā)一個請求。
這在 HTTP/1 上是有不錯的優(yōu)化效果的,因為 HTTP/1 下不能充分利用 TCP 帶寬,一個 TCP 同時只能有一個請求,請求太多就要排隊,導致嚴重的阻塞。
到了 HTTP/2 因為多路復用特性的緣故,則沒有太大必要了,所有的請求都是通過流的方式打散發(fā)送的,充分利用 TCP 的帶寬。
另一個作用是 提前加載好需要用到的圖片。
假設我們的一個按鈕是用圖片做的,hover 時會替換圖片。如果分成獨立的兩個圖片,hover 就會出現(xiàn)閃爍的效果。
這是因為圖片還沒有下載好,在圖片完成下載前,顯示的是空白,直到圖片下載完成才替換上圖片。
如果我們將按鈕的所有狀態(tài)都放到雪碧圖了,就不會有這個問題了。當然還有一種方式就是通過 JS 手動做其他狀態(tài)小圖片的緩存。
小編的建議是:不要再學雪碧圖了。現(xiàn)在前端技術快速發(fā)展,出現(xiàn)了更多實用的技術,比如 SVG、iconfont,這些技術提供了更多靈活性和便利性,很多情況下可以取代雪碧圖。HTTP 2 的出現(xiàn)使得一次可以請求多個文件,雪碧圖存在的意義就不大了。并且,由于雪碧圖使用復雜,不易維護,一張圖崩了整個網(wǎng)頁的圖標就都崩了,圖標位置確定后就不好再修改等問題,不再需要雪碧圖這種形式。
小編從2008到現(xiàn)在2023年,見證了許多 Java 技術變遷,包括:JavaEE 框架,從百家混戰(zhàn)到現(xiàn)在 Spring 基本一統(tǒng)天下。Web 開發(fā),從標配的 SSH 到現(xiàn)在 SpirngMVC + MyBatis 組合。IDE,從當年如火如荼的 JBuilder 到 Eclipse,再到更好用的 IDEA。
JSP(全稱Java Server Pages)是由Sun Microsystems公司主導創(chuàng)建的一種動態(tài)網(wǎng)頁技術標準。JSP部署于網(wǎng)絡服務器上,可以響應客戶端發(fā)送的請求,并根據(jù)請求內容動態(tài)地生成HTML、XML或其他格式文檔的Web網(wǎng)頁,然后返回給請求者。JSP技術以Java語言作為腳本語言,為用戶的HTTP請求提供服務,并能與服務器上的其它Java程序共同處理復雜的業(yè)務需求。
JSP 作為頁面模板,在后端通過 MVC 框架渲染成 HMTL,然后再發(fā)送到客戶端(例如瀏覽器)來呈現(xiàn)。這也就是我們常說的“前后端不分離”,“混合式”開發(fā)。
而當前,包括我所在的公司,以及大部分互聯(lián)網(wǎng)公司。要么已經拋棄這種模式,要么正在拋棄的路上,而轉向徹底的“前后端分離”。
在“前后端分離”模式下,后端只負責提供服務接口(例如 REST),而前端(例如 HTML5)通過接口發(fā)送/獲取,呈現(xiàn)數(shù)據(jù)(例如 JSON 格式)。
這樣,在后端,原來的 MVC 框架,某種意義上已經演變?yōu)?MC 框架。因此,與 V(View)相關的一切模板技術都失去了學習的必要,其中當然也包括 JSP。
小編的建議是:可以完全放棄再學JSP了。可以學Spring Boot + MyBatis Plus + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權限、多租戶、數(shù)據(jù)權限、工作流、三方登錄、支付、短信、商城等功能
Struts是Apache軟件基金會(ASF)贊助的一個開源項目。它最初是Jakarta項目中的一個子項目,并在2004年3月成為ASF的頂級項目。它通過采用Java Servlet/JSP技術,實現(xiàn)了基于Java EE Web應用的Model-View-Controller(MVC)設計模式的應用框架,是MVC經典設計模式中的一個經典產品。
在 Java 后端開發(fā)中,MVC 模型還是主流。而 Struts 作為一個 MVC 框架,單從技術上來說,還是很優(yōu)秀的。
但是,現(xiàn)在 Spring 實在是太強勢了,越來越成為 Java 開發(fā)中的“一站式”工具包,其中的一個利器就是 Spring MVC。
望名知意,Spring MVC 也是一個 MVC 框架。而且因為它是 Spring 的親兒子,自然和 Spring 契合的非常完美。
同時,在設計之初,Spring MVC 就參照了其他 MVC 框架的優(yōu)缺點(包括 Struts),所以用起來非常爽。因此,在 MVC 框架領域,Spring MVC 大有一統(tǒng)天下的趨勢。
小編的建議是:可以完全放棄學Struts了,從 Spring MVC 開始。可以這樣組合Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權限、多租戶、數(shù)據(jù)權限、工作流、三方登錄、支付、短信、商城等功能
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數(shù)據(jù)庫表建立映射關系,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執(zhí)行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的JavaEE架構中取代CMP,完成數(shù)據(jù)持久化的重任。
Hibernate 作為老牌的 OR 映射框架,功能非常強大,涵蓋面非常廣。但這既是它的優(yōu)點,同時也成為它的“負擔”,是開發(fā)人員“不能承受之重”。
Hibernate 的設計初衷,是為了最大程度的解放程序員,完全隔離數(shù)據(jù)庫,實現(xiàn)徹底的 OR 映射。程序員甚至可以不寫一行 SQL 語句,單通過配置就能實現(xiàn)對數(shù)據(jù)庫的操作。
當然,為了實現(xiàn)這個目標,Hibernate 也設計的非常復雜、非常精巧。就不可避免的帶來以下副作用:
前兩點不難理解,單說“調優(yōu)困難”。
因為 Hibernate 的設計目標是徹底的 OR 映射,徹底的隔離 SQL 語句。但必然會帶來一定的性能損失。大部分情況下,應用如果對性能不敏感,Hibernate 也沒問題。但應用一旦對性能敏感,有 SQL 級別調優(yōu)的需求,Hibernate 的優(yōu)點反而成為缺點。
小編的建議是:可以完全放棄學Hibernate了。在實際開發(fā)中,Hibernate 使用的越來越少了。大家更偏愛 MyBatis 這種輕量級框架。所以,對后來學習者,學 MyBatis 就夠了。
Servlet(Server Applet)是 Java Servlet 的簡稱,稱為小服務程序或服務連接器,用 Java 編寫的服務器端程序,具有獨立于平臺和協(xié)議的特性,主要功能在于交互式地瀏覽和生成數(shù)據(jù),生成動態(tài) Web 內容。
Java Servlet 是運行在 Web 服務器或應用服務器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數(shù)據(jù)庫或應用程序之間的中間層。
狹義的 Servlet 是指 Java 語言實現(xiàn)的一個接口,廣義的 Servlet 是指任何實現(xiàn)了這個 Servlet 接口的類,一般情況下,人們將 Servlet 理解為后者。Servlet 運行于支持 Java 的應用服務器中。從原理上講,Servlet 可以響應任何類型的請求,但絕大多數(shù)情況下 Servlet 只用來擴展基于 HTTP 協(xié)議的 Web 服務器。
小編的建議是:Servlet 不僅要學,而且要學深,學透。當前,Servlet 雖然不再是一個主流 web 開發(fā)技術,但依然是 Java Web 開發(fā)技術的基礎,是 Java Web 容器的基石,是行業(yè)標準。而現(xiàn)在流行的各種 MVC 框架(包括 SpringMVC),在最底層,還是以 Servlet 為基礎的。
所以,如果你想要徹底掌握某個 MVC 框架,則必須徹底理解 Servlet。
而且,Servlet 作為一個基礎設施。精通它,不僅有助于理解各種 MVC 框架。即使 Servlet 本身,也有很多實用價值。
目前在國內,Java 更多是作為 web 后端技術出現(xiàn)的。因此在實際學習中,很多技術就不符合“國情”,學習的現(xiàn)實意義不大。下面我就簡單列舉下。
作為頁面插件技術,不用多說,連 flash 都快被淘汰了,更無論從未流行的 applet。
作為桌面 UI 框架。且不說本身設計的咋樣。現(xiàn)實開發(fā)中,我接觸的桌面應用,要么用 C++(例如 MFC),要么用 C#(Winform、WPF)。所以,Swing 就沒有學習的必要了。
作為較底層的數(shù)據(jù)庫基礎設施,JDBC 被很多框架(例如 MyBatis)支持。但在實際開發(fā)中,程序員即使不了解也無大礙。因此,雖然我不能建議你放棄 JDBC 學習,但如果你時間有限,完全可以把它的優(yōu)先級排低一點。
XML 現(xiàn)在還在廣泛應用。但作為一個 web 數(shù)據(jù)傳輸格式,正在逐漸被 JSON 替代。所以,對 Java 后端學習來說,XML 簡單了解即可。至于龐雜的 XML 操作 API(例如 XPath),完全不必學習。將來真要用到,再查也不遲。
文章內容描述和建議只是小編一家之言,肯定沒有考慮全面,有武斷之處,見諒,勿噴!
一行代碼,可能會創(chuàng)造出下一個讓人驚嘆的產品;一個創(chuàng)新,可能會開啟一個全新的科技時代;一份初心,可能會影響到無數(shù)人的生活;無論是在大公司工作,還是在小團隊奮斗;無論是資深的程序員,還是剛剛入行的新手;每個人的代碼,都有力量改變世界。
本文鏈接:http://www.tebozhan.com/showinfo-26-15224-0.html別再學那些落后的 Web 開發(fā)技術了 !
聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: JavaScript中閉包的四個有用技巧