目錄
html
CSS
JavaScript
破損的網絡
我們可以做得更好
漸進式增強
網絡趕上
結束
首頁 web前端 css教學 擁抱平台

擁抱平台

Mar 16, 2025 am 10:20 AM

擁抱平台

那麼,人們可以做的一件事使他們的網站變得更好呢?為了回答這個問題,讓我們回到過去…

這一年是1998年,網絡正在上升。為了嘗試對www的建築進行高級概述,蒂姆·伯納斯·李(Tim Berners-Lee) -的,蒂姆·伯納斯·萊(Tim Berners-Lee) - 發表了一篇論文,稱為“ 50,000英尺的網絡建築”。該報告涵蓋了很多事情:內容談判,語義網絡,HTML,CSS和Cool Uris(不會改變)等。

在文章中,Berners-Lee也很早就指出了一些設計原則。這些原則之一是“權力最少的規則”。

權力最少的規則是這樣的:

在設計計算機系統時,通常會在使用或多或少強大的語言發布信息,表達約束或解決某些問題之間面臨選擇。 […]“最小權力的規則”表明選擇適合給定目的的最低強大語言。

我們的前端有三種主要語言:

html

語義描述內容

CSS

控制演示文稿和佈局

JavaScript

增加互動和行為

權力最小的規則表明,在訴諸CSS之前,使用HTML盡可能多地嘗試和做。一旦CSS不夠,請抓住JavaScript,但前提是您確實必須這樣做。

正如德里克·費瑟斯通(Derek Featherstone)很好地說的那樣:

在Web前端堆棧中 - HTML,CSS,JS和ARIA-如果您可以使用堆棧中較低的解決方案解決問題,則應解決問題。它不那麼脆弱,更萬無一失,只是起作用。

舉起:這並不意味著您應該通過標記設置字體尺寸和顏色,這是我們過去在網絡的“舊日”中做的事情。例子:Berners-Lee作品所涵蓋的規則之一是形式和內容的分離。

破損的網絡

自Berners-Lee發表該文章以來已經將近25年了。但是,不知何故,他發送的信息沒有通過,許多開發人員(但不是全部)都沒有意識到這一點。採取這種情況,不久前遇到了Drew Devault:

在過去的28年中,我的瀏覽器在提交HTML表格方面非常有能力,但是出於某種愚蠢的原因,一些開發人員決定在JavaScript中重新實現該表格,現在,如果不開放Dev Tools,我就無法支付電費。

可悲的是,這不是孤立的案例,而是一種熟悉的現象。我經常看到試圖變得聰明或試圖重新發明輪子的網站和圖書館 - 主要是通過向其投擲一堆JavaScript。在嘗試這樣做的嘗試中,他們實現了與他們的目標完全相反的相反:這些網站的功能較低,易於訪問範圍,或者(甚至更糟糕的是)在某些條件下根本不起作用。

雖然表格可能是一個熟悉的例子,但在其他情況下,應用最小功率的規則會帶來更好的結果:

  • 光滑的滾動?
    ?不需要JavaScript,因為CSS可以做到這一點。
  • 需要從基於JSON的API傳達錯誤嗎?
    ?不要在響應主體中使用{error:true}的HTTP 200,而是使用HTTP狀態代碼來傳達錯誤。
  • 通過JavaScript關閉?
    ?帶有[method =“對話框”]的元素會很好。
  • 想要懶惰的負載圖像嗎?
    ?這很快將受到HTML標記中所有現代瀏覽器的支持,並具有屬性。
  • 可自定義的?
    ?正如我們所說的那樣。
  • 是否想將動畫鏈接到滾動偏移量?
    ?現在不需要外部JavaScript庫,因為現在是瀏覽器本機API,很快也只能使用CSS完成一些操作。
  • 需要防止某些字符以形式輸入嗎?
    ?不要禁用粘貼,而是選擇適當的輸入類型和/或使用模式屬性。
  • 需要崩潰的部分嗎?
    ? 和是您的朋友。
  • 等等…

在所有這些示例中,我們都可以將一些功能從上層移動到下層。 Berners-Lee會為我們感到驕傲。

彈力

通過在Web堆棧中選擇較低的技術,更靠近Web平台的核心,我們還獲得了內置彈性抵抗故障的好處。

JavaScript的失敗很糟糕。一個未能加載或在過程中被弄髒的腳本,或一個錯誤的論點,您的整個應用程序可能不再起作用。如果像“無法讀取屬性x的屬性x”這樣的錯誤消息聽起來很熟悉,那麼您就會知道我在說什麼。

另一方面,CSS非常擅長失敗。即使您的樣式表中有語法錯誤,其餘的CSS仍然可以正常工作。與HTML相同。這些是寬容的語言。

如果您懷疑為什麼要使用權力最小的規則,傑里米·基思(Jeremy Keith)在他的文章“評估技術”中為我們帶來了答案:

我們傾向於問“它的工作狀況如何?”,但是您應該真正問的是“它的失敗程度?”

傑里米·基思(Jeremy Keith)

我們可以做得更好

耐克網站是一個備受矚目的網站。當您使用JavaScript禁用的JavaScript訪問他們的網站時,您不會看到任何圖像,也不會訂購任何鞋子。

對JavaScript的這種過度依賴是不需要的,因為所有這些損壞的功能都可以使用前端堆棧中的技術較低構建:

  • 為什麼不立即包含擁抱平台元素以顯示鞋子照片而不是通過JavaScript動態注入它們呢?
  • 為什麼不將與

☝️如果您想知道為什麼有人會禁用JavaScript瀏覽網絡:這通常不是他們的選擇,而是一個正在干擾的外部因素。請參閱“每個人都有JavaScript,對吧?”為該主題進行很好的解釋。

此類別中的罪犯甚至更糟糕的是Instagram和Twitter等備受矚目的網站。沒有JavaScript這些網站根本不起作用。他們要么給您警告,要么只是空白。因為什麼時候需要JavaScript在網絡上顯示文本和圖像?

漸進式增強

它不一定像這個孤立的耐克示例那樣糟糕。有時,當JavaScript失敗時,較小的組件會拒絕工作。以選項卡式接口為例。即使您可以找到很多提供此功能的JavaScript庫,啟動器是您不需要JavaScript,因為HTML,CSS和ARIA本身已經有能力使您很遠。

一旦擁有這些基層層,請使用JavaScript進一步改善體驗。將JavaScript視為增強,而不是要求。

某些CSS功能可能也可能不可用的CSS功能也是如此。提供基本的樣式,並在可用的功能(可使用@supports檢測到)時增強您已經獲得的結果。

這種方法被稱為漸進式增強:隨著更多功能可用,您可以添加功能,從而使結果更好,但沒有太多的功能,以至於沒有這些額外的繁榮就無法正常工作。

對於尚未支持特定新功能的瀏覽器,您可以嘗試找到為瀏覽器提供該功能的多填充。

網絡趕上

自網絡早期以來,我們已經看到Web平台隨著時間的推移獲得了許多新功能。定義了新的HTML元素,JavaScript(語言)已經成熟,CSS獲得了許多有力的新功能,用於構建佈局,動畫元素等。

幾年前不可能的事情,只能通過像Flash這樣的外部技術來完成瀏覽器本身。

一個經典的示例是引入jQuery的功能。十多年前,JQuery是進入一個項目的第一件事。今天,情況不再如此,因為網絡平台已經趕上了,現在擁有document.clearselectorall(),element.ClassList等。您可以說jQuery是在多填充物被稱為polyfills之前。

雖然jQuery可能是一個熟悉的例子,但網絡還趕上了許多其他情況:

  • 在JavaScript中與非常糟糕的日期()API掙扎?
    ?暫時的API可以更好地使用。
  • 使用第三方JavaScript庫在屏幕上進行動畫元素?
    ?為什麼不嘗試內置的Web動畫API?它真的很強大。
  • 需要彩色的無線電按鈕和復選框嗎?
    ?新的CSS口音色屬性為您做到這一點。
  • 依靠預處理器以便使用CSS變量?
    ? CSS自定義屬性是過去20年中CSS的最大補充。
  • 等等…

這裡的中心主題是這些功能不再依賴於多填充或外部庫,而是更靠近網絡堆棧的核心。網絡趕上了。

儘管其中一些新的API可以很抽象,但您可以將其插入代碼中。一個示例是Redaxios,它在引擎蓋下使用fetch,同時還可以暴露與Axios兼容的API的開發人員。如果這些便利方法最終將其滴入Web平台,這不會令我感到驚訝。

結束

伯納斯·李(Berners-Lee)在大約25年前寫的是時間的考驗。開發人員要遵守我們的信息。通過擁抱Web平台給我們的東西(而不是試圖與之抗衡),我們可以構建更好的網站。

保持簡單。運用最少權力的規則。考慮到逐步增強的構建。

HTML,CSS和JavaScript - 按照此順序。

以上是擁抱平台的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1662
14
CakePHP 教程
1419
52
Laravel 教程
1313
25
PHP教程
1262
29
C# 教程
1236
24
Google字體可變字體 Google字體可變字體 Apr 09, 2025 am 10:42 AM

我看到Google字體推出了新設計(Tweet)。與上一次大型重新設計相比,這感覺更加迭代。我幾乎無法分辨出區別

如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 Apr 11, 2025 am 11:29 AM

您是否曾經在項目上需要一個倒計時計時器?對於這樣的東西,可以自然訪問插件,但實際上更多

HTML數據屬性指南 HTML數據屬性指南 Apr 11, 2025 am 11:50 AM

您想了解的有關HTML,CSS和JavaScript中數據屬性的所有信息。

我們如何創建一個在SVG中生成格子呢模式的靜態站點 我們如何創建一個在SVG中生成格子呢模式的靜態站點 Apr 09, 2025 am 11:29 AM

格子呢是一塊圖案布,通常與蘇格蘭有關,尤其是他們時尚的蘇格蘭語。在Tar​​tanify.com上,我們收集了5,000多個格子呢

使Sass更快的概念證明 使Sass更快的概念證明 Apr 16, 2025 am 10:38 AM

在一個新項目開始時,Sass彙編發生在眼睛的眨眼中。感覺很棒,尤其是當它與browsersync配對時,它重新加載

如何在WordPress主題中構建VUE組件 如何在WordPress主題中構建VUE組件 Apr 11, 2025 am 11:03 AM

內聯式模板指令使我們能夠將豐富的VUE組件構建為對現有WordPress標記的逐步增強。

php是A-OK用於模板 php是A-OK用於模板 Apr 11, 2025 am 11:04 AM

PHP模板通常會因促進Subpar代碼而變得不良說唱,但這並不是這樣的情況。讓我們看一下PHP項目如何執行基本的

編程SASS創建可訪問的顏色組合 編程SASS創建可訪問的顏色組合 Apr 09, 2025 am 11:30 AM

我們一直在尋求使網絡更容易訪問。顏色對比只是數學,因此Sass可以幫助涵蓋設計師可能錯過的邊緣案例。

See all articles