主頁 > 企業開發 > 一個前端大佬的十年回顧 | 漫畫前端的前世今生

一個前端大佬的十年回顧 | 漫畫前端的前世今生

2023-04-11 08:14:14 企業開發

作者:京東科技 胡駿

引言

歲月如梭,十載流年

前端技術,蓬勃向前

HTML,CSS,JavaScript

演繹出璀璨奪目的技識訓卷


回到十年前,前端技術就像一名戴著厚重眼鏡的書呆子,總是小心翼翼,被各種各樣的瀏覽器兼容性問題欺負(就像在小學被欺負一樣),

但隨著時間的推移,這個書呆子開始鍛煉,變得越來越強壯,終于能夠對抗那些討厭的兼容性問題

進入中學時期,前端技術遇到了那個改變它一生的朋友——jQuery,在jQuery的幫助下,前端技術變得更加自信,能夠在各種瀏覽器之間輕松穿梭(就像找到了武林秘籍,功力大增),

隨后,前端技術開始追求更高的境界,它遇到了三位美麗的姑娘:Angular、React和Vue,這三位姑娘帶給了前端技術無盡的魅力,讓它迅速崛起,成為了技術江湖中的一股新興力量,

如今,前端技術已經變得越來越強大,像一個熟練掌握各種武功的高手,它的發展速度之快,令人瞠目結舌,仿佛在短短十年內成為了武林盟主,它帶領著一群忠誠的拜金黨(程式員),在技術江湖中闖蕩,創造了一個又一個的傳奇,

而現在,前端技術正在為未來的挑戰做準備,它還能帶給我們多少驚喜,以及如何抵抗那些不斷涌現的挑戰者?讓我們一起拭目以待,看這場武林大戲如何演繹,

一、歷程

前端技術開發在過去的十年里經歷了從HTML、CSS到JavaScript的演變,在這個歷程中,前端工程師的角色也發生了變化,他們不再只是單純的代碼開發者,還需要與設計師、產品經理、運營人員等其他團隊成員協作,共同完成網站的開發,

? _2010年以前,_前端工程師主要負責網站的靜態頁面開發,如網頁設計、圖片處理等,在這個階段,前端工程師的技能主要包括HTML、CSS和JavaScript等基本技術,

? _2010年,_JavaScript成為了前端開發的主要語言,隨著JavaScript的普及和發展,越來越多的前端工程師開始關注JavaScript的應用和開發,

? _2011年,_jQuery成為了前端開發的主流庫,并且HTML5和CSS3開始受到重視,這也是前端開發變得更加動態和互動性的開始,

? _2012年,_回應式設計和移動設備優先的設計理念開始流行,前端開發在移動端上嶄露頭角,

? _2013年,_Angular引入了模塊化和資料系結的概念,Bootstrap實作了回應式框架,前端開發變得更加簡單和高效,

? _2014年,_React發布,革新出組件化的思想,前端開發變得更加靈活和可維護,

? _2015年,_ES6發布,帶來了諸如箭頭函式、模板字串和解構賦值等語言的改進,使JavaScript變得更加易用和現代化,同年,Vue的發布迅速獲得了廣泛應用,

? _2016年,_前端工具鏈的發展得到了加速,例如Webpack和Babel等工具的普及使得前端工程化得到了廣泛推廣,

? _2017年,_JavaScript庫和框架更加多樣,Angular、React和Vue等都在不斷地演進和優化,PWA技術的普及使得網頁更接近原生應用的用戶體驗,

? _2018年,_JavaScript框架的選擇更加復雜,同時CSS前處理器(例如Sass和Less)和CSS-in-JS的技術也逐漸成熟,

? _2019年,_前端技術繼續保持快速發展的趨勢,更加注重用戶體驗和開發效率,例如,React Hooks和Vue 3等技術的推出使得前端代碼更簡潔并可維護,

? _2020年,_因新冠疫情影響,居家辦公及遠程作業成為新趨勢,虛擬會議和在線教育等普及推動了前端技術的發展,也更加重視了訪問性和用戶體驗,

? _2021年,_新技術和工具不斷推陳出新,Web Assembly使得前端代碼獲得更高的效率,而預渲染和靜態站點生成等技術讓前端應用可以獲得更快的加載速度,

? _2022年,_VR(虛擬現實)和AR(增強現實)技術的不斷發展,前端開發者需要開發出更加適合VR/AR場景的應用程式,

? _2023年至今,_AI(人工智能)技術的突破性進展,前端技術將在AI 技術的加持下得到更廣泛的應用,從而帶來更智能和更高效的前端開發體驗,

二、HTML5和CSS3的普及

HTML5和CSS3,這兩個神秘代碼世界的統治者,它們的名字聽起來像是一對科學家的昵稱,但它們的影響力卻是無與倫比的:讓我們的網頁從普通變得絢麗多彩,

作為一名網頁開發者,我們經常需要面對一些令人頭疼的問題:瀏覽器兼容性、頁面加載速度緩慢等,但是,當HTML5和CSS3出現在我們的視野中時,一切都變得不一樣了,

HTML5是一種用于網頁開發的語言,它具有更強的多媒體功能,比如說可以輕松地嵌入音頻和視頻,它還具有更強的語意,使我們可以更容易地描述頁面內容,

而CSS3則是一種用于美化網頁的語言,它提供了更多的樣式選項,比如說可以實作圓角、陰影等效果,它還支持回應式設計,可以讓我們的網頁在不同的設備上都能得到最佳的展示效果,

用HTML5和CSS3開發的網頁不僅美觀,而且更快,我們不再需要使用大量的JavaScript代碼來實作一些簡單的功能,因為HTML5和CSS3已經幫我們完成了這些作業,

不僅如此,HTML5和CSS3還使得網頁開發變得更有趣,我們可以創造出各種各樣的影片效果,比如說滾動、旋轉等,而不需要依賴任何第三方工具,這不僅讓我們的網頁更具吸引力,也使我們的用戶更容易理解和使用,

HTML5就像一個網頁的“建造師”,它負責把網頁的框架建造出來,而CSS3則是一個“裝飾師”,它負責把網頁的外觀和感覺打造出來,這對搭檔攜手合作,把一棟美麗的大廈(網站)拔地而起,

三、JavaScript框架的崛起

JavaScript框架,從這個詞語中我們就能感受到它的強大和威力,如同統治世界的巨龍,橫行天下,讓所有的開發者都震撼不已,

在過去的十年里,我們見證了許多JavaScript框架的誕生和發展,最早的Angular和Backbone逐漸被React和Vue等框架所取代,這些框架不僅簡化了開發者的作業流程,還引入了組件化的開發思想,提升了Web應用的可維護性和可擴展性,

另外,JavaScript框架也推動了Web前端技術的進步,引入了許多新的概念和理念,如組件化、資料驅動等等,使得Web前端開發變得更加簡單而清晰,

3.1 React:讓你的用戶界面如此簡單

React,這是一個神奇的JavaScript框架,它可以讓你的用戶界面變得如此簡單,以至于你會想:“這就是魔法嗎?”

React的核心思想是組件化,它把用戶界面拆分成許多小的組件,每個組件都可以獨立運行,并且可以方便地復用,這樣,你就可以更加簡單高效地開發出高質量的用戶界面,

React的另一個優秀特性是Virtual DOM,它可以幫助你更快速地渲染用戶界面,并且不會影響用戶體驗,這就像是一個超級快速的快取,讓你的用戶界面飛快地呈現在用戶面前,

React還提供了一些非常實用的功能,比如說React Router,它可以幫助你管理路由,讓用戶界面更加流暢;而React Redux可以幫助你管理應用狀態,讓你的代碼更加整潔,

此外,React是一個非常活躍的開源專案,它的開發者們一直在不斷改進和完善,值得每一個前端開發者去學習和使用,

3.2 Vue:充滿了年輕的活力和智慧

Vue是另一個JavaScript框架,可以讓你快速構建網頁,就像是一個魔術師,把一堆雜亂無章的東西變成了一個美麗的魔術,

Vue的核心思想是資料驅動+組件化,這聽起來很高大上,但其實就像是你在做一道數學題,先把問題分解成若干小問題,再一步步解決,

Vue有一個很酷的特性:雙向系結,這聽起來很神秘,但實際上就像是你和你的好朋友之間的對話,你說了什么,他就知道了,

學習和使用Vue的程序中,你會發現開發變得更加簡單和有趣,就像是在做一道神奇的拼圖,一步步把圖片拼出來,比如說它有很多組件,就像是一個工具箱,你可以隨時隨地使用,組件的好處在于,它可以把復雜的功能分解成若干個簡單的部分,這樣就可以很容易地管理和維護你的代碼,

同時,Vue有很多很多的插件,可以讓你的開發體驗更加順暢,插件的好處在于,它可以幫助你實作一些復雜的功能,這樣就不必自己寫一坨代碼,

Vue還有一個很棒的社區,可以幫助你解決一些棘手的問題,也方便了你與其他開發者交流經驗,編碼世界有了朋友,永遠不會孤單,

3.3 謹慎:利劍具有兩面性

JavaScript框架是一個非常重要的工具,就像一把利劍幫助開發者切開困難,讓開發者更加簡便高效地開發前端應用,也推動了前端技術的進步,并抵達成功的彼岸,

但是,請記住,刀刃朝向你,也有可能傷到自己,因此請開發者在使用JavaScript框架時要謹慎小心,

四、Node.js和前后端分離

首先,讓我們回顧一下過去,那時候前后端是緊密結合在一起的,像一對結婚多年的夫婦,它們有著許多共同的愛好,但是有時它們也會產生沖突,就像夫婦間的爭吵一樣,前后端爭吵也是不可避免,

但是,隨著技術的發展,我們發現了一個新的解決方案:前后端分離,就像夫婦分居一樣,前后端也可以分開,以避免沖突,Node.js就是這個分離的功臣,

Node.js可以幫助前端和后端分開,各自獨立作業,前端可以專注于用戶界面的開發,后端可以專注于資料的處理,就像夫婦分別在各自的作業崗位上作業一樣,前后端也可以分別在各自的領域里作業,

Node.js的出現讓JavaScript可以在服務器端運行,為前后端分離的架構模式提供了可能,前后端分離使開發者可以更加專注于前端應用的開發,提高開發效率,同時,Node.js的誕生也帶來了諸如npm、yarn等包管理器的出現,開發者可以輕松地引入和管理第三方庫,

4.1 npm:被忽視的少年

首先,讓我們了解一下npm的歷史,它曾經是一個年輕的少年,總是被忽視,但是隨著它長大,它變得越來越強大,并且成為了Node.js開發的重要組成部分,

以前,如果我們想要安裝一個庫,需要手動下載,并且手動安裝它,這是一件非常繁瑣的事情,而且很容易出錯,但是,隨著npm的出現,一切都變得更簡單了,只需要運行一條命令(如:npm install),就可以輕松地安裝任何庫,

npm還提供了一個巨大的軟體倉庫,其中包含了數以千計的庫和工具,它就像一個圖書館,你可以隨心所欲地查閱和使用,

但是,npm不僅僅是一個簡單的安裝工具,它還像一個管家,輔助我們管理依賴關系,并幫助我們發布代碼和維護代碼庫,它還有許多其他功能,例如構建工具,測驗工具等,因此,如果你想充分利用npm,請不要僅僅停留在它的基礎功能上,

4.2 yarn:少年的替身

首先,讓我們了解一下yarn的由來,它的誕生是為了解決npm的一些問題,就像是一個少年的替身,它試圖取代npm并成為新的領導者,

yarn可以幫助我們快速安裝依賴包,并管理依賴關系,像一個組織者可以幫助我們維護代碼庫,以此節省時間并提高開發效率,

yarn還提供了一個更好的版本控制系統,可以幫助我們管理依賴項的版本,如果你在多個專案中使用相同的依賴項,可以確保所有專案使用相同的版本,從而避免了版本沖突,譬如一個和平協調員,

除了管理依賴關系和解決依賴沖突外,yarn還可以幫助我們更快地進行安裝,因為它可以在本地快取安裝過的依賴項,這意味著,如果你在多個專案中使用相同的依賴項,它們將不會再次下載,從而減少了安裝時間,

此外,yarn支持并行安裝,這意味著它可以同時安裝多個依賴項,從而加快安裝速度,這是一個非常有用的功能,特別是當你需要安裝大量依賴項時,

yarn也有一個很棒的社區,可以幫助你解決任何問題,如果你在使用yarn時遇到問題,可以在社區中尋求幫助,這是一個非常有價值的資源,可以幫助你更快地解決問題,

五、構建工具和自動化

構建工具和自動化是現代軟體開發的重要組成部分,就像給你的代碼加上糖衣一樣,幫助我們提高開發效率,并且可以讓我們更專注于代碼本身,

Grunt、Gulp、Webpack等工具的出現,使得開發者可以方便地實作代碼壓縮、合并、優化以及模塊化等功能,而隨著CI/CD的普及,自動化測驗和部署變得更加便捷,大大提高了軟體開發的質量和開發速度,

5.1 Grunt:豬叫的聲音?

Grunt,這不是一個軍人,也不是一個豬叫的聲音,實際上,它是個非常酷的JavaScript任務運行器,可以幫助你自動化各種任務,如代碼構建,單元測驗和檔案合并,它的目的是讓你的作業變得更輕松、更有效率,而且不需要你不停地敲代碼,

想象一下,每次你修改了一個檔案,你就需要手動編譯、壓縮、合并、測驗等等,這聽起來很枯燥,對吧?但是,如果有一個工具能幫你自動完成這些任務,那該有多好!這就是Grunt的作用,

Grunt的核心思想是使用插件(plugins)來完成各種任務,有數以百計的插件可以幫助你實作從編譯Sass到壓縮JavaScript的各種任務,插件是通過npm安裝的,Grunt有許多內置任務,例如:檔案壓縮,CSS預處理,JavaScript檢查等,此外,還有大量第三方插件,也可以助你完成更多任務,

Grunt的組態檔是Gruntfile.js,用于定義任務和任務的配置,Grunt使用JavaScript代碼配置任務,因此對JavaScript基礎知識的了解是使用Grunt的必備條件,

Grunt的任務可以在命令列中通過運行以下命令執行:grunt task-name,如果你想要實時監控檔案的變化,并在檔案變化時自動執行任務,你可以使用grunt watch命令,

如果你是一個JavaScript開發者,那么Grunt是一個不可或缺的工具,它可以讓你的作業變得更快捷、更高效,讓你有更多的時間去做其他有趣的事情,比如喝咖啡、寫文章或者是找物件,

5.2 Gulp:古老的咒語?

讓我們來說說Gulp的名字,它的名字聽起來有點像一個古老的魔法咒語,你想:“Gulp!” 然后你的代碼就會變得更快、更簡潔、更酷,不過,實際上Gulp并不是魔法,而是非常實用的構建工具,

Gulp的作業原理很簡單:它通過創建一系列的任務,來自動完成你的作業流程,比如說,你可以創建一個任務,來自動編譯你的Sass檔案,或者壓縮你的JavaScript檔案,這樣,你就不需要手動執行這些步驟了,Gulp會幫你完成,

Gulp還有一個非常酷的功能:它可以實時監控你的檔案,并在你修改了檔案后立即執行相應的任務,這樣,你就可以實時看到更改的內容,而不需要手動重新執行,

Gulp如何使用呢?首先,你需要安裝Node.js和npm,因為Gulp是基于Node.js的,其次,安裝Gulp的命令列工具,只需在終端中運行以下命令即可:npm install gulp-cli -g,接下來,你需要在專案目錄中創建一個package.json檔案,這是npm的組態檔,用于管理專案依賴,你可以通過運行以下命令來創建一個package.json檔案:npm init,然后,你需要安裝Gulp,只需在專案目錄中運行以下命令即可:npm install gulp--save-dev,最后,創建一個gulpfile.js檔案,這是Gulp的組態檔,用于撰寫你的任務,

現在,你已經準備好使用Gulp了,開始撰寫你的任務,并運行以下命令來執行吧:gulp task-name

5.3 Webpack:訂制的包包?

Webpack可以幫你把代碼壓縮成小而美的包,就像私人訂制的收納柜,它可以裝下你所有的包包,并且把它們整齊地放在一起,使你的“奢侈”更加有序!

但是,如果你犯了錯誤,它就像一個惡魔般出現在你面前,吼叫著告訴你:“Error: This is error!”所以,請小心使用Webpack,

不過,只要你已經掌握了Webpack的使用方法,那么它將成為你的最佳伙伴,因為它可以為你節省大量的時間,并且讓你的代碼變得更加整潔,

你可以告訴Webpack:“嘿,Webpack!幫我處理圖片和字體!” 然后Webpack就會用它的魔力,將它們變成小小的Data URL或檔案,你不會相信,Webpack的魔力是如此的強大,它甚至可以幫你處理模塊依賴,

那么,如何使用Webpack呢?首先,你需要安裝它(就像是奢侈品店要先開門才能買包),安裝很簡單,只需要在終端中輸入:npm install webpack;然后,創建一個組態檔(就像是奢侈品店的導覽圖,告訴你每樣包包在哪里),組態檔一般命名為webpack.config.js,內容如下:module.exports = {entry:'./src/index.js',output: {filename:'bundle.js',path: __dirname +'/dist'}};,接下來,只需要在終端中輸入打包命令:npx webpack;最后,參考打包后的檔案bundle.js就可以了(背起新包包,開啟一場冒險之旅),

六、PWA和Web性能優化

在這個快節奏的數字化時代,越來越多的用戶轉向使用移動設備和Web應用程式,

PWA成為了一個重要的技術趨勢,它的全稱是“Progressive Web App”,翻譯成中文就是“漸進式Web應用程式”,簡單來說,PWA是一個既可以在瀏覽器上運行的Web應用程式,同時也可以像原生應用一樣在離線時使用,它的最大優點就是可靠性,因為PWA可以像原生應用一樣快取資料和資源,這意味著它可以在離線時運行,而不會像普通的Web應用程式一樣無法使用,

此外,Web性能優化也成為了開發者關注的重點,我們需要知道一個簡單的事實,那就是用戶喜歡快速的網站,如果你的網站速度太慢,那就會讓你的用戶感覺像一頭正在沙漠里跑步的駱駝一樣疲憊不堪,感到痛苦和沮喪,這會讓他們不得不離開,去尋找新的綠洲,

所以,為了確保你的網站速度足夠快,你需要采取一些優化措施,以下是一些可以提高Web應用性能的技巧:

  1. 使用CDN(內容分發網路):CDN是一組分布在世界各地的服務器,它們可以快取你的網站內容,并將其分發到全球各地的用戶,這可以大大加快你的網站加載速度,因為用戶可以從離他們最近的服務器獲取內容,

  2. 壓縮檔案大小:壓縮你的HTML、CSS和JavaScript檔案可以減少它們的大小,從而加快它們的加載速度,你可以使用像Gzip這樣的壓縮演算法來實作這一點,

  3. 使用快取:快取是一種將網站資料存盤的技術,例如瀏覽器快取:在回應頭中設定快取策略來控制快取時間;以及服務器端快取:使用Memcached或Redis等快取服務器,以減少回應時間,這樣一來,當用戶再次訪問你的網站時,它們可以從快取中加載資料,而不必重新下載,大大加快你的網站加載速度,

  4. 減少HTTP請求:有一個叫做“夾心餅干法則”的說法,這個法則認為,在一次HTTP請求中,中間的回應部分應該像夾心餅干一樣短,而請求和回應頭和尾應該像餅干的兩端一樣長,這聽起來很有趣,但其實它也是有道理的,因為請求和回應頭和尾中包含的資訊比較少,而回應中間部分則包含了網頁的實際內容,因此應該盡可能地減少其大小,你可以通過將HTML和CSS以及JavaScript檔案合并成一個檔案,或者通過使用CSS Sprites將多個影像合并成一個檔案來減少HTTP請求的數量,

  5. 使用回應式圖片:圖片是網站加載速度最慢的資源之一,為了提高網站加載速度,你可以使用回應式圖片,這些圖片可以根據用戶的設備螢屏大小來動態地調整大小,這樣一來,用戶只會下載他們所需的影像大小,而不是下載整個大影像,

  6. 使用懶加載技術:懶加載是一種延遲加載技術,它可以延遲加載頁面上的影像、視頻和其他資源,直到它們真正需要時才出現,這可以減少頁面的初始加載時間,因為只有當用戶滾動到需要加載的部分時,它們才會被加載,

你知道嗎,Google Chrome瀏覽器可以使用一個名為“Lighthouse”的工具來檢查網站的PWA和性能方面的指標,但你可能不知道的是,這個工具還有一個有趣的功能,就是可以為你的網站生成一份“獨家報告”,這樣你就可以像讀報紙一樣輕松地查看網站的PWA和性能狀況了,但是,要牢記的是,優化Web應用性能是一個不斷發展的程序,需要持續監測和調整以確保最佳體驗,

七、Web組件和跨平臺框架

Web組件和跨平臺框架是現代Web開發中的兩個熱門話題,它們就像是現代Web開發的兩座巨大城堡,吸引著無數開發者前來探索和征服,

首先,我們來談談Web組件,Web組件是一種現代的Web開發技術,它允許開發者將Web應用程式分解成可重用的組件,這些組件可以在不同的Web應用程式中共享和重用,比如,你可以將一個搜索框組件用于多個Web頁面,而不必每次都重新撰寫,

Web組件的好處不僅在于可重用性,還在于它們的靈活性,你可以根據需要自定義Web組件,為你的Web應用程式添加新的功能和樣式,

但是,Web組件并不是“銀彈”,它們在某些方面仍然有限制,比如,Web組件難以處理動態資料,因為它們是靜態的,此外,Web組件也不是完美的跨平臺解決方案,因為它們可能無法兼容不同的Web瀏覽器和設備,

這就引出了我們的下一個話題:跨平臺框架,跨平臺框架是一種可以在多個平臺上運行的軟體框架,包括Web、移動和桌面應用程式,它們允許開發者撰寫一次代碼,然后在不同的平臺上運行,無需進行任何額外的修改,

跨平臺框架的好處顯而易見:它們可以大大減少開發時間和開發成本,但是,跨平臺框架并非完美無缺,它們可能會受到不同平臺的限制,從而無法充分利用每個平臺的功能和性能,此外,跨平臺框架還可能會導致性能問題和代碼質量問題,

現在,我們來看看如何將這兩種技術結合起來,使用Web組件和跨平臺框架可以讓你搭建你的虛擬王國,充分利用Web組件的可重用性和靈活性,同時充分利用跨平臺框架的跨平臺能力和效率,

當然,這并不是說將Web組件和跨平臺框架混合在一起就是萬無一失的,你需要仔細考慮你的應用場景,確保使用這兩種技術的方式是最優的,

比如,你可以使用Web組件來構建你的用戶界面,然后使用跨平臺框架來將Web應用程式轉換為移動應用程式,這樣,你就可以在多個平臺上運行相同的代碼,而且用戶體驗也會更加一致,

或者,你可以使用跨平臺框架來撰寫你的應用程式邏輯,然后使用Web組件來定制你的用戶界面,這樣,你可以在不同的Web應用程式中重用你的用戶界面,而且你的應用程式邏輯也可以在多個平臺上運行,

再者,你也可以將這兩種技術都使用在同一個應用程式中,這樣,你可以充分利用Web組件的可重用性和靈活性,同時充分利用跨平臺框架的跨平臺能力和效率,只要你能合理地使用這些技術,就可以打造出更好的Web應用程式,

Web組件和跨平臺框架都是非常有前途的技術,它們可以為現代Web開發帶來很多好處,為我們帶來更加靈活、高效和強大的Web開發工具和平臺,無論是Web組件還是跨平臺框架,它們都是我們構建虛擬王國的重要基石,

八、前端安全問題

在當今數字化時代,前端安全已成為互聯網世界中的重要一環,不管是個人用戶,還是企業機構,前端安全都需要被高度重視,盡管我們已經發展出了各種各樣的安全技術和防御手段,但是前端安全問題仍然是一個不斷增長的挑戰,

8.1 XSS攻擊:你的網站很容易被攻擊

你聽說過XSS攻擊嗎?這種攻擊方式是通過篡改網頁的HTML并在用戶瀏覽器中注入惡意代碼的一種攻擊方式,這些惡意代碼通常是JavaScript腳本,它們可以被用來竊取用戶的敏感資訊,如用戶名、密碼、銀行賬戶資訊等等,

如果你的網站存在XSS漏洞,那么惡意攻擊者就可以在你的網站上注入一些不良代碼,這些代碼可能會竊取用戶的登錄憑證或者其他敏感資訊,所以,盡管你的網站已經被SSL加密保護,你的用戶仍然面臨著被XSS攻擊的風險,

如何防御XSS攻擊呢?其實非常簡單,你只需要在所有的輸入框中過濾掉所有的HTML標簽和JavaScript腳本即可,但是,如果你認為這么做會影響用戶體驗,那么你可以考慮使用HTML的特殊字符轉義功能來替換這些標簽和腳本,

8.2 CSRF攻擊:請勿相信惡意鏈接

現在讓我們來談談CSRF攻擊,這種攻擊方式是通過篡改用戶的HTTP請求來偽造用戶的身份,從而進行一些非法的操作,這種攻擊方式通常是通過欺騙用戶點擊一個惡意鏈接來實作的,一旦用戶點擊了這個鏈接,攻擊者就可以獲得用戶的憑證,然后模擬用戶的請求,從而執行一些非法的操作,

假設,你的網站有一個洗掉賬戶的功能,攻擊者就可以利用CSRF攻擊來讓用戶誤洗掉自己的賬戶,這聽起來非常可怕,但是不要擔心,我們可以通過一些簡單的方法來防御這種攻擊,

首先,我們可以在所有的表單提交中添加一個隨機的Token值,這個Token值可以通過后臺生成,然后在前端將其嵌入到表單中,當用戶提交表單時,我們可以檢查這個Token值是否匹配,如果不匹配,則拒絕這個請求,這樣就可以簡單的避免CSRF攻擊了,

8.3 CSP策略:請勿允許不信任的資源

CSP策略是一種非常有用的前端安全措施,CSP策略可以幫助我們限制網頁中可加載的資源,從而減少被攻擊的風險,例如,我們可以限制只允許加載來自指定域名的JavaScript檔案,這樣就可以避免惡意代碼的注入,

但是,如果你不小心將不信任的資源允許加載到你的網頁中,那么你的網站就可能面臨被攻擊的風險,假設你的網站允許用戶上傳檔案,并在網頁中顯示這些檔案,如果你沒有限制檔案的型別和內容,那么攻擊者就可能上傳惡意檔案,并在用戶瀏覽器中注入惡意代碼,

所以,如果你想保證你的網站的安全性,那么你應該始終謹慎地過濾用戶上傳的檔案,只允許加載來自可信任來源的資源,

我們可以認識到,前端安全是一項非常重要的技術挑戰,如果你是一位前端開發人員,那么應該始終將前端安全作為開發程序中的一個重要考慮因素,只有這樣,我們才能夠為用戶提供安全可靠的Web服務,

九、前端工程師的多元化技能

作為一名前端工程師,一定是個充滿多元化技能的大神,不僅僅要會寫代碼,還要會與設計師溝通,管理版本控制,解決兼容性,甚至還要有點藝術細胞,

  1. 代碼技能:前端工程師最基本的技能,也是最重要的技能,不僅需要掌握 HTML、CSS、JavaScript,還需要掌握一些前端框架和庫,比如 React、Vue、Angular 等,當然,這些都不是問題,對于一名優秀的前端工程師來說,這只是小菜一碟,

  2. 與設計師溝通:設計師們總是有各種奇怪的想法,然后她們會告訴你:“我要實作這個效果,你幫我寫一下”,但是,很快會發現這個效果并不現實,于是你需要與設計師進行溝通,告訴她們這個效果無法實作,當然,你不能用技術術語來向她們解釋,否則她們會擺出一副“我聽不懂”的表情,所以,你需要用她們喜歡聽的語言,比如“我理解你的設計需求,并深刻認識到其對于網站效果的重要性,不過,由于技術和瀏覽器的限制,我們需要尋找其他的可行方案來實作類似的效果,以保證網站的性能和可訪問性,我會盡最大的努力提供最佳的解決方案,”

  3. 管理版本控制:代碼管理是一個很重要的問題,特別是當你和其他人合作的時候,你需要使用Git進行版本控制,這樣才能確保代碼的穩定性和可靠性,當然,你也需要了解一些Git的命令,比如 commit、push、pull 等等,不過,如果你不小心把代碼弄掛了,那也不用擔心,只要跟團隊的其他成員說“我不小心把代碼弄掛了”,他們就會告訴你怎么做了,

  4. 解決兼容性:不同的瀏覽器之間有很多不兼容,而前端工程師需要解決這些問題,比如,IE瀏覽器總是出現各種奇怪的bug,但是你不能告訴用戶:“你用的是IE,這不是我的問題”,相反,你需要找到問題的根源,然后解決它,這是一個非常重要的技能,因為它涉及到用戶體驗和網站的穩定性,

  5. 有點藝術細胞:前端工程師不僅僅是一個代碼的機器,還需要有一點藝術細胞,畢竟,好的界面設計是網站的關鍵之一,所以需要了解一些基本的設計原則,比如顏色搭配、排版等等,當然并不需要成為一個設計師,但是需要知道如何運用這些原則來改進網站的設計,

  6. 學習新技能:前端工程師是一個不斷學習的程序,每天都有新的技術和框架出現,并且要不斷學習并掌握這些技能,但是,并不需要成為一個全堆疊工程師,只要掌握所需要的技能,然后專注于自己的領域即可,當然,這也意味著要學會如何篩選有用的資訊,因為不可能學習完所有的技術和框架,

  7. 解決問題:前端工程師是一個解決問題的崗位,當網站出現問題時,需要迅速找到問題的根源,并解決它,但是,也不一定要獨自解決所有的問題,可以向同事尋求幫助,或者參加一些開發者社區來尋找解決方案,最終要記住的是,解決問題是前端工程師最重要的技能之一,

  8. 與團隊合作:前端工程師需要和設計師、后端工程師、測驗人員等等進行合作,以確保網站的成功,在與團隊合作中,要學會如何與不同的人合作,并且盡力避免出現沖突,

前端工程師需要掌握很多不同的技能,但這并不意味著要成為一個萬能的人,相反,只需要專注于自己的領域在不斷地技術學習程序中成長,

十、AI與前端技術結合

回顧過去,暢想未來,立足當下,來講個故事吧,

在一個遙遠的星球上,有一個叫做前端技術的孤獨王國,這個王國的居民們都是非常優秀的程式員,他們用HTML、CSS和JavaScript這三種神奇的武器來構建網站,為用戶帶來無盡的愉悅,然而,這個王國有一個問題,那就是他們一直無法征服一個名為AI的神秘國度,

終于有一天,一個勇敢的前端戰士——HTML騎士,決定向AI國度發起挑戰,他帶著兩個小伙伴:CSS獵人和JavaScript法師,踏上了一段充滿挑戰的探險之旅,

他們沿著神秘的網路海洋航行,一路上遇到了各種令人捧腹大笑的趣事,先是在一個叫做布局的洲際,他們被一群叫做“浮動”的怪獸困擾,CSS獵人拔出了他的彈性盒子弓箭,一箭穿心,解決了怪獸,接下來,他們來到了一個充滿奇特生物的影片之地,JavaScript法師用他的神奇魔法,讓這些生物如同表演馬戲團一般,給他們帶來了一場場精彩絕倫的表演,

然后,他們終于來到了AI國度的邊境,在那里,他們遇到了一個脾氣古怪的巨人,他叫做機器學習,這個巨人用一種叫做數學的強大力量來支配著這片土地,HTML騎士認為,要征服這個國度,就必須挑戰巨人,并將他的力量與前端技術融合,

于是,在他們與巨人大戰三百回合后,JavaScript法師從中意外領悟了神奇魔法,召喚出一個叫做TensorFlow.js的強大法寶,這個法寶讓前端技術也能夠掌味訓器學習的力量,HTML騎士和CSS獵人紛紛表示贊嘆,他們覺得自己終于找到了一種將AI與前端技術結合的方法,

在這之后,他們三人一起用TensorFlow.js建立了一個名為“智能前端”的新城堡,這座城堡里,前端技術與AI融合得天衣無縫,為用戶帶來前所未有的體驗,

城堡的大門上,HTML騎士精心設計了一個智能問答系統,這個系統可以回答用戶關于前端技術的各種問題,讓新手程式員們感嘆不已,而這一切,都得益于TensorFlow.js和機器學習的神奇力量,

城堡的內部,CSS獵人則利用AI技術打造了一套全新的自適應布局,這套布局能夠根據用戶的喜好和設備自動調整,讓每個訪問者都能享受到最佳的瀏覽體驗,他還研發了一種名為“智能配色”的神奇法術,能夠根據用戶的喜好自動調整網頁的顏色搭配,讓網站變得更加美觀大方,

而在城堡的核心區域,JavaScript法師則運用AI技術開發了一系列令人驚嘆的互動功能,比如,他創造了一種可以根據用戶行為自動優化的推薦演算法,將用戶感興趣的內容精準推送,此外,他還設計了一款智能聊天機器人,可以與用戶進行即時互動,解答他們的疑問,

在“智能前端”城堡的建設程序中,他們三人不僅發揮出了各自的特長,還不斷地學習AI技術,將其與前端技術相互融合,這讓他們的作品充滿了趣味與智慧,吸引了無數程式員和用戶前來參觀,

在這段充滿挑戰的探險之旅中,HTML騎士、CSS獵人和JavaScript法師用他們的智慧和勇氣,成功地將AI技術引入前端領域,他們的故事傳遍了整個網路世界,成為了程式員們爭相傳頌的佳話,

如今,前端技術和AI的結合已經成為了一種趨勢,越來越多的開發者開始探索這個領域的無限可能,而在這個探索程序中,他們總是能從HTML騎士、CSS獵人和JavaScript法師的故事中汲取勇氣與智慧,勇往直前,為未來的網路世界描繪出一個更加美好、充滿創意和智慧的藍圖,

有人說,前端技術與AI的結合就像一場狂歡,程式員們歡笑著跳動,發揮著自己的想象力,創造出一個又一個令人嘆為觀止的作品,在這場狂歡中,每個人都是舞者,每個人都是藝術家,每個人都在為這個美麗的網路世界貢獻著自己的力量,

如同那個遙遠的星球上,那個歡呼雀躍的前端王國,如今我們所生活的這個網路世界也充滿了歡聲笑語,而在這片歡樂的土地上,那些勇敢的前端戰士們正攜手AI,共同書寫著屬于他們的傳奇!

隨著技術的不斷發展,我們相信前端技術與AI的結合將會走得更遠,創造出更多不可思議的奇跡,也許有一天,我們的網路世界將變得如同童話般美好,充滿智慧的光輝,而在那個時候,我們將不禁想起那個勇敢的HTML騎士、CSS獵人和JavaScript法師,懷念他們當年那段充滿挑戰的探險之旅,為他們的勇氣與智慧而感慨不已,

在探險的道路上,我們將一路歡笑并肩前行,勇敢地追求那個夢寐以求的未來,也許在某個不經意的瞬間,我們會發現,那個童話般的前端王國,其實就在我們心中,等待著我們去探索、去發現、去喚醒它,讓它綻放出最耀眼的光芒,

后記

前端技術的演進從未停歇,仍然充滿了機遇與挑戰……

讓我們一起期待下一個十年,見證前端技術的更多精彩!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/549684.html

標籤:其他

上一篇:Three.js 進階之旅:全景漫游-高階版在線看房 🏡

下一篇:微前端專案部署方案

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more