<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          所謂“現(xiàn)代Web開發(fā)”,都是些什么妖魔鬼怪?

          共 5449字,需瀏覽 11分鐘

           ·

          2022-01-20 02:19

          以下內(nèi)容來自公眾號(hào)逆鋒起筆,關(guān)注每日干貨及時(shí)送達(dá)

          編譯 | 核子可樂、Tina

          “2022 年已經(jīng)到來,我們是時(shí)候反思 Web 開發(fā)中的種種過時(shí)軟件、炒作歪曲和荒謬趨勢(shì)了。把握這一年,我們也該重新專注于性能與技術(shù)運(yùn)用,把手段和目的重新統(tǒng)一起來。當(dāng)然,我不是勸大家用匯編或者 C 語言搞 Web 開發(fā),但關(guān)于 JavaScript、Ruby on Rails、Python、Django 以及 PHP 框架的瘋狂觀點(diǎn)也該消停一下了?!?/span>
          這是一篇充滿憤怒的博客。作者是一位出生于 70 年代的“技術(shù)憤青”unixsheikh,他用“激進(jìn)”的方式拋出了一個(gè)觀點(diǎn):“Web 開發(fā)人員應(yīng)該花費(fèi)更多時(shí)間來進(jìn)行優(yōu)化”。
          很顯然,把問題歸咎于 Web 開發(fā)有些偏頗,但他的觀點(diǎn)也的確喊出了一些人的心聲。文章發(fā)出后,有支持者給他發(fā)郵件說:“關(guān)于文中的問題,我也一直在跟自己的老師和伙伴們爭(zhēng)辯。我用過一個(gè)項(xiàng)目工具,里面包含 1786 個(gè)包、存在 69 項(xiàng)漏洞——45 個(gè)中風(fēng)險(xiǎn)、20 個(gè)高風(fēng)險(xiǎn)、4 個(gè)嚴(yán)重風(fēng)險(xiǎn)。其‘重達(dá)’432 MB,而且內(nèi)部如同一團(tuán)亂麻。更可笑的是,用它甚至不足以輸出‘hello world’,因?yàn)檫€另外需要單獨(dú)的路由包和狀態(tài)管理包。這一切太瘋狂了,但每個(gè)人都在這條路上狂奔,還美其名曰‘現(xiàn)代方法’?!?/span>
          還有些網(wǎng)友在 Hacker News 上評(píng)論說,“它包含了一些讓人無法接受的真話”。同時(shí)也有反對(duì)者說,“很多人都認(rèn)為 Web 開發(fā)是一件微不足道的事情,不需要前端工程師,他們的存在只是為了增加 JavaScript 的復(fù)雜性,網(wǎng)站的 100% 功能都可以使用純 HTML + HTTP 表單處理。但現(xiàn)實(shí)情況 (IMO) 是:瀏覽器是‘新操作系統(tǒng)’。對(duì)于大多數(shù)消費(fèi)者和商業(yè)軟件,在瀏覽器中運(yùn)行是顯而易見的選擇。不管你喜歡它還是討厭它,這就是當(dāng)前的實(shí)現(xiàn)方法。”
          不同的人總會(huì)帶來不同的看法,有爭(zhēng)論不一定是壞事情,我們將 unixsheikh 的這篇文章翻譯出來,希望能為讀者帶來一些思考。以下是他的分享內(nèi)容:
          不是瀏覽器的錯(cuò)
          谷歌 Chrome 正在主導(dǎo)當(dāng)下的全球網(wǎng)絡(luò)瀏覽器市場(chǎng),新的問題也由此而來——作為一家實(shí)際意義上的廣告商,谷歌正在不斷推進(jìn)極具欺騙性與威脅性的 Manifest V3 計(jì)劃。
          有些朋友天真地把 Mozilla 火狐看作挑戰(zhàn) Chrome 霸權(quán)的救世主與替代品。沒錯(cuò),火狐當(dāng)初確實(shí)把我們從微軟 IE 的魔爪下拯救了出來。但如今的 Mozilla 管理能力極為低下。2018 年,Mozilla 從各大搜索引擎廠商處獲得了 4.357 億美元收入,這筆錢主要用于在世界各地的火狐瀏覽器上強(qiáng)推默認(rèn)搜索引擎選項(xiàng)。花錢的主要是谷歌,此外還有 Yandex 和百度。雖然形勢(shì)還行,但 Mozilla 在 2022 年還是裁判了全球約四分之一(250 人)的員工,理由是新冠疫情造成的經(jīng)濟(jì)動(dòng)蕩“嚴(yán)重影響了公司收入”。但事實(shí)真是這樣嗎?胡扯,2018 年 Mozilla 掌門人拿到了 240 萬美元,而且薪酬在過去五年中翻了一番還多。
          Mozilla 再也不是那個(gè)厚道可靠的老伙計(jì)了,要想繼續(xù)生存下去,他們必須得來一輪高管大換血、叫停那些沒人想要的產(chǎn)品,重新回歸以捐贈(zèng)為基礎(chǔ)、以客戶需求為依托的發(fā)展道路上來。當(dāng)然,以上都是閑話,只為引出第一個(gè)真正重要的問題。
          我們?yōu)槭裁葱枰@些瀏覽器供應(yīng)商?如果沒有他們,不就沒有這么多屁事了?我認(rèn)為問題出在所謂“現(xiàn)代 Web 開發(fā)人員”身上,他們才是罪魁禍?zhǔn)祝?/span>
          正是這幫所謂的“現(xiàn)代 Web 開發(fā)人員”一直在用臃腫且毫無必要的 JavaScript 搭建網(wǎng)站,不斷在并不適合的平臺(tái)上進(jìn)行 Web 開發(fā)。這相當(dāng)于逼著用戶使用大廠出品的瀏覽器,否則就沒法正常訪問互聯(lián)網(wǎng)內(nèi)容。
          如果沒有所謂的“現(xiàn)代 Web 開發(fā)”,我們根本不需要這些體量如同怪獸般龐大的瀏覽器。我們只需要簡單的輕量化瀏覽器就能訪問網(wǎng)站上的所有功能,且只有少數(shù)非常專業(yè)的網(wǎng)站才需要特殊解決方案。而即便如此,其中大部分特殊網(wǎng)站也完全不必依賴于大型瀏覽器。
          Web 開發(fā)需要一場(chǎng)革新
          我知道,有些 Web 開發(fā)者并不了解這些更靠譜的開發(fā)方式,但這不該成為理由。對(duì)于任何一位軟件開發(fā)者來說,大家都應(yīng)該在所用知識(shí)之外多學(xué)習(xí)、多接觸新知識(shí)。我們需要了解什么時(shí)候適合用這款工具、什么時(shí)候適合另一款。我覺得是時(shí)候來一場(chǎng) Web 開發(fā)大革命了,即除非絕對(duì)必要、否則盡量不在網(wǎng)站上使用 JavaScript。
          在我看來,這應(yīng)該是互聯(lián)網(wǎng)網(wǎng)站未來發(fā)展的必要條件。特別是在“Web 3.0”概念正如火如荼的當(dāng)下,我認(rèn)為去 JS 化應(yīng)該成為除去中心化之外最重要的探索目標(biāo)。
          之所以提出這樣一個(gè)戰(zhàn)斗目標(biāo),不只是因?yàn)槲覀儗?duì)少數(shù)瀏覽器開發(fā)商的過度依賴引發(fā)了大量現(xiàn)實(shí)問題,更是因?yàn)檎麄€(gè)過程正在白白浪費(fèi)能源。臃腫的網(wǎng)站讓每位訪問者的電費(fèi)飆升,從服務(wù)器端和客戶端兩方面帶來了雙輸結(jié)果。
          由于瀏覽器中 JavaScript 代碼過多(看起來所謂的「現(xiàn)代 Web 開發(fā)者」根本不懂怎么在不用 JS 的情況下開發(fā)前端),所以用戶即使是打開最簡單的網(wǎng)頁也會(huì)增加設(shè)備功耗。另外,由于采用不適合的服務(wù)器端框架(例如 Rails 和 Django),服務(wù)器的功耗也存在浪費(fèi)。另外提醒大家,雖然互聯(lián)網(wǎng)上運(yùn)行的大部分網(wǎng)站由 PHP 編寫,但其成本同樣不低。PHP 本身自 v7 版本以來已經(jīng)解決了內(nèi)部與外部的一系列重大性能問題,也讓功耗變得相當(dāng)友好;但“現(xiàn)代 Web 開發(fā)者”們?nèi)栽谑褂?Larave、Symfony、Codelgniter 或者 Yii 等低效框架,這些框架的存在讓 PHP 的改進(jìn)變得毫無意義。
          事實(shí)上,目前流行的所有框架都糟糕透頂。它們的開發(fā)大多基于抽象理論與設(shè)計(jì)模式,包含不少跟現(xiàn)實(shí)應(yīng)用完全無關(guān)的噪聲元素。更重要的是,我呼吁大家直接放棄這些框架——因?yàn)樾阅軆?yōu)化離不開原始代碼。我們應(yīng)該遠(yuǎn)離混亂,而不是添加更多混亂變量。如果某款軟件輸出個(gè)“Hello world”都需要 75 個(gè)類或者模塊時(shí),它是絕對(duì)沒有任何性能優(yōu)化可言的。回歸簡單、小型和高度優(yōu)化過的專用庫,告別框架,好嗎?
          過去我們討論 Unix 的時(shí)候,常常會(huì)想“還有哪些可以丟棄?為什么會(huì)存在這個(gè)選項(xiàng)?”這是因?yàn)榛A(chǔ)設(shè)計(jì)總會(huì)包含缺陷,完美的設(shè)計(jì)點(diǎn)是個(gè)永遠(yuǎn)無法達(dá)成的目標(biāo)。所以與其匆忙添加選項(xiàng),不如想想哪些選項(xiàng)是真正的“不能沒有”。― Doug McIlroy就 Rails 和 Django 而言,項(xiàng)目組明顯不理解上面的觀點(diǎn)。Ruby 和 Python 就不該被用于 Web 開發(fā),因?yàn)樗鼈兲?、根本不適合。大家甚至可以用 Bash 創(chuàng)建并運(yùn)行網(wǎng)站,行是都行、只是不明智。
          有些人認(rèn)為開發(fā)者的時(shí)間比計(jì)算資源更寶貴,而 Rails 和 Django 的目標(biāo)就是幫助人們快速完成工作。但這也正是問題所在:如今整個(gè)互聯(lián)網(wǎng)面臨的過度臃腫問題,就是由這些不負(fù)責(zé)任且短視的觀點(diǎn)所引發(fā)??炀鸵欢▽?duì)嗎?顯然不是。
          作為個(gè)人建議,如果您正是一位“現(xiàn)代 Web 開發(fā)者”,強(qiáng)烈推薦您使用 Go 語言進(jìn)行 Web 開發(fā),但前端不要使用 JavaScript。最重要的是,嘗試在不用 Go 標(biāo)準(zhǔn)庫的情況下進(jìn)行 Web 開發(fā)。這不僅是一段學(xué)習(xí)經(jīng)歷,也會(huì)給您帶來寶貴的提升和啟發(fā)。
          給 Web 開發(fā)者的建議
          如果您身為 Web 開發(fā)者,希望能認(rèn)真考慮以下幾點(diǎn):
          • 如果您在大學(xué)或者培訓(xùn)機(jī)構(gòu)里學(xué)過“現(xiàn)代”Web 開發(fā),不妨試著放下自己學(xué)到的一切、進(jìn)行一番獨(dú)立思考。除非各位碰巧遇上了好老師,否則站在講臺(tái)上的很可能是個(gè)只懂理論、照本宣科的家伙。我們得自己研究底層技術(shù)的工作原理,做出明智的決定。而所謂現(xiàn)代 Web 開發(fā)跟這一切顯然是背道而馳。

          • 了解如何在前端僅使用 HTML 和 CSS 來制作網(wǎng)站。如果必要,可以稍微用 JavaScript 進(jìn)行一點(diǎn) UI 改進(jìn),但請(qǐng)確保改進(jìn)需求真實(shí)且合理(結(jié)合用戶測(cè)試來具體驗(yàn)證)。而且即使合理,也不妨試試不用 JavaScript 能不能達(dá)成同樣的效果。

          • 找款低配筆記本測(cè)試一下產(chǎn)品。微信搜索readdot,關(guān)注后回復(fù)視頻教程獲取23種精品資料

          • “Web 應(yīng)用程序”是另外一個(gè)精心設(shè)計(jì)出來的洗腦詞匯。無論交付的是靜態(tài)內(nèi)容還是動(dòng)態(tài)內(nèi)容,也無論用戶是否能夠進(jìn)行即時(shí)交互,網(wǎng)站的本質(zhì)仍然只是個(gè)站點(diǎn)。它不是游戲、也不是谷歌地圖那種復(fù)雜的軟件,對(duì)于大部分展現(xiàn)內(nèi)容只是文本的網(wǎng)站來說,它真的不能被叫作“應(yīng)用程序”。別被那些流行詞匯給忽悠了,不用 JavaScript、大多數(shù)網(wǎng)站也完全可以正常運(yùn)行。

          • 別再搞什么單頁網(wǎng)站了!HTTP 協(xié)議是專為小型個(gè)體和離散請(qǐng)求而設(shè)計(jì)構(gòu)建的,它強(qiáng)調(diào)每個(gè)請(qǐng)求都有其特殊的目標(biāo)。一次性把整個(gè)網(wǎng)站加載到瀏覽器上明顯毫無意義,因?yàn)槠渲?90% 的內(nèi)容根本沒機(jī)會(huì)進(jìn)入用戶的視野。最簡單的例子,有必要預(yù)先加載“關(guān)于我們”之類的頁面內(nèi)容嗎?那東西有人看嗎?所以,記得把網(wǎng)站分成幾個(gè)小部分,讓用戶自主決定想看什么,這就是 HTML 錨點(diǎn)標(biāo)簽的用途。只提供一個(gè)小巧的首頁,之后由用戶點(diǎn)擊相關(guān)超鏈接來請(qǐng)求自己實(shí)際想看的東西。Web 不就是這么工作的嗎,怎么到了智能手機(jī)上就不一樣了呢?

          • 別再從后端向前端發(fā)送 JSON 了,我們不是在構(gòu)建 API。既然負(fù)責(zé)內(nèi)容交付的客戶端就是瀏覽器,那直接發(fā)送 HTML 啊,愣著干什么?

          • 讓所有用戶輸入驗(yàn)證都在服務(wù)器端進(jìn)行。在開發(fā)過程中,盡量只通過一次接入服務(wù)器的消息往返即完成所有用戶輸入驗(yàn)證。沒錯(cuò),根本不需要 AJAX/JavaScript。JavaScript 基本沒法真正改善用戶體驗(yàn);相反,JavaScript 驗(yàn)證和 JavaScript 本體常常會(huì)破壞網(wǎng)站的自然流程,令 TAB 等鍵和其他元素沒法正常工作。另外,任何不在服務(wù)器端進(jìn)行的輸入驗(yàn)證都屬于錯(cuò)誤!換言之,任何基于客戶端的輸入驗(yàn)證——無論是由 JavaScript 還是瀏覽器內(nèi)置的 HTML 5 來實(shí)現(xiàn)——都可以被繞過,畢竟它們可都在客戶端上。

          • 別再往瀏覽器上發(fā)送字體了。沒多少人真正關(guān)心字體,只要不是太難看就可以。做個(gè)用戶測(cè)試,結(jié)果可能會(huì)讓你意外哦。讓瀏覽器從操作系統(tǒng)中直接選擇字體就好。

          • 別再把瀏覽器發(fā)到 CDN 去了。這樣很危險(xiǎn)、不利于隱私,甚至可能損害用戶權(quán)益。在本地交付內(nèi)容就行。

          • 去掉廣告、刪掉彈窗,別在頁面上放那么多演示文稿、郵件列表和注冊(cè)提示之類的垃圾內(nèi)容。

          • 還用戶一片清靜暢快的天地,讓網(wǎng)站內(nèi)容盡量清晰簡潔。東西多了反而沒人看。

          • 別在網(wǎng)站上使用 Google Analytics、Facebook 鏈接和其他社交媒體垃圾!我們得學(xué)著擺脫這些固有元素。另外,你真的需要什么統(tǒng)計(jì)數(shù)據(jù)嗎?如果是,難道服務(wù)器端收集到的統(tǒng)計(jì)數(shù)據(jù)還不夠?真正需要的信息大部分都可以由服務(wù)器端直接收集,對(duì)吧?另外,如果選擇跨服務(wù)器運(yùn)行,日志還會(huì)被自動(dòng)發(fā)送至日志服務(wù)器。所以別再靠什么 Google Analytics 了,畢竟這東西既沒必要、立場(chǎng)也很值得懷疑——沒準(zhǔn)谷歌一直在騙你。

          • 不要使用不適合 Web 開發(fā)的編程語言。Python 和 Ruby 就是兩種絕不該出現(xiàn)在 Web 上的語言??傊幊陶Z言必須針對(duì)性能進(jìn)行優(yōu)化,甚至可以考慮在具有嚴(yán)苛性能要求的具體任務(wù)中使用 C。由此帶來的巨量性能提升可能對(duì)應(yīng)著超出大家想象的成本節(jié)約。

          • 牢牢把握所開發(fā)軟件的所有權(quán)。這種所有權(quán),意味著我們需要對(duì)項(xiàng)目中發(fā)生的一切負(fù)責(zé)。這不僅有助于工程質(zhì)量提升,也會(huì)徹底改變我們的開發(fā)心態(tài)。一旦出了問題,那就是我們自己的責(zé)任。項(xiàng)目在用戶計(jì)算機(jī)上耗了多少電是我們的事、項(xiàng)目對(duì)環(huán)境的影響是我們的事、項(xiàng)目提供的殘疾人使用體驗(yàn)是我們的事、項(xiàng)目對(duì)未來的影響也是我們的事。如果不愿承擔(dān)這份責(zé)任,就別隨便摻和進(jìn)來。

          • 別再被趨勢(shì)和炒作牽著鼻子走。大家應(yīng)該已經(jīng)感受到,大多數(shù)趨勢(shì)和炒作都是利益相關(guān)方的刻意引導(dǎo)加上一大幫無知群眾的盲目推動(dòng)。所以遇到問題自己多想想,別急著站隊(duì)。

          可能很多朋友覺得這篇文章一點(diǎn)新潮的內(nèi)容沒有,發(fā)在 2001 年還差不多。我也希望是這樣,但很遺憾,這里的很多內(nèi)容直到十年后的今天還需要拿出來討論。如今越來越多的 Web 開發(fā)者已經(jīng)意識(shí)到多年來市場(chǎng)上宣揚(yáng)的“現(xiàn)代 Web 開發(fā)”理念是錯(cuò)的。資源有限,我們不該在服務(wù)器端和客戶端上瘋狂揮霍。

          原文鏈接:

          https://12ft.io/api/proxy?q=https://unixsheikh.com/articles/so-called-modern-web-developers-are-the-culprits.html

          逆鋒起筆專注于程序員圈子,你不但可以學(xué)習(xí)到java、python等主流技術(shù)干貨和N多個(gè)源碼分享,還可以第一時(shí)間獲悉最新技術(shù)動(dòng)態(tài)、內(nèi)測(cè)資格、BAT大佬的經(jīng)驗(yàn)精品視頻教程、副業(yè)賺錢經(jīng)驗(yàn),微信搜索readdot關(guān)注!

          最佳 Web 編程語言都有哪些?

          五分鐘了解互聯(lián)網(wǎng) Web 技術(shù)發(fā)展史

          將一個(gè)純本地應(yīng)用移植到 Web 端

          一些著名的軟件都用什么語言編寫的?

          為什么我會(huì)放棄 Webpack 而選擇 Vite

          瀏覽 76
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青娱乐亚洲精品视频线 | 欧美成人激情在线 | 西西特级444人体大胆图片 | 天天射天天射 | 就是操就是干 |