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

編譯 | 核子可樂、Tina
如果您在大學(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ì)。
原文鏈接:
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)注!
五分鐘了解互聯(lián)網(wǎng) Web 技術(shù)發(fā)展史

