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