. 什么是HTML技術?
HTML 指超文本標記語言
語言:用于交流的一種工具
超文本:頁面中可以包含圖片,鏈接,音樂,視頻等非文字的元素
標記:一種標記符,用于告訴瀏覽器怎么去顯示其中的內容。
<b>我很粗</b>
2. 動態網頁,靜態網頁?
動態網頁:隨著時間,環境或者數據庫操作的結果而發生改變
靜態網頁:html代碼完成后,頁面的內容和顯示效果基本不會發生變化。
3. HTML、XHTML、DHTML
HTML:超文本標記語言
XHTML:XML+HTML
DHTML:動態HTML語言(html+css+javascript)
4. HTML的發展歷程
HTML1.0 1993 互聯網工作小組IETF
HTML2.0 1995
HTML3.2 1997.1 W3C
HTML4.0 1997.12 W3C
HTML4.0.1 1999 W3C
XHTML 2000年
HTML5 2014.10.29
W3C:萬維網聯盟,該組織制定web技術標準
5. 開發工具:
記事本:用來裝逼的
Dreamwear:Adobe 可視化開發軟件
HBuilder:強大的前端開發工具
WebStorm:強大的前端開發工具,缺點慢
EditPlus:輕量級編輯工具
Sublime:提示性功能比較大的輕量級開發工具
6. 瀏覽器的認識
對于開發者而言:FireFox和Chrome瀏覽器,強大的開發功能。
家好,很高興又見面了,我是"高級前端進階",由我帶著大家一起關注前端前沿、深入前端底層技術,大家一起進步,也歡迎大家關注、點贊、收藏、轉發!
高級前端進階
今天給大家帶來的主題是2023 年值得考慮的10大靜態站點生成器,話不多說,直接開始!
在不斷發展的 Web 開發環境中,靜態站點生成器 (SSG) 已成為開發人員快速高效地創建網站的流行工具。 它們彌合了傳統靜態網站(使用需要手動更新和修改的 HTML 和 CSS 構建)與依賴數據庫和服務器端腳本語言(如 PHP)的動態網站之間的差距。
本文將探討 2023 年 10 個頂級 React 靜態站點生成器 SSG,通過對每一個靜態站點生成器的初步比較,幫助開發者選擇最適合特定項目需求的靜態站點生成器。
React 靜態站點生成器是一種工具,可讓開發者使用 React 組件作為站點的構建塊來生成靜態網站。 首先一起來了解什么是靜態站點和靜態站點生成器。
靜態站點是由預構建的 HTML、CSS 和 JavaScript 文件組成的網站,這些文件完全按照靜態站點生成器生成的方式提供給用戶。 這些文件不會根據用戶交互或輸入而更改,也不需要服務器端處理。
靜態站點生成器是一種自動化構建靜態網站過程的工具。 它接受輸入文件(例如 Markdown 文件、HTML 模板或 React 組件)并生成靜態 HTML、CSS 和 JavaScript 文件,這些文件可以直接提供給用戶,使開發人員可以快速輕松地創建網站,而無需完整的 Web 應用程序堆棧。
在靜態站點生成器出現之前,開發人員必須手動使用 HTML 和 CSS 對每個網站頁面進行編碼。 這種方法既費時又容易出錯,難以維護和更新大型網站。
借助 React 靜態站點生成器,開發人員可以創建可跨多個頁面重復使用的模板或布局,從而更輕松地更新和維護大型網站。 這樣可以節省大量時間和成本并提高網站性能。
使用 React Static Site Generator 的一些優點包括:
React 靜態站點生成器的典型用例包括:
在探索每個 React 靜態站點生成器之前,需要首先了解當使用靜態站點生成器生成靜態站點時,會生成一組靜態文件,這些文件可以直接提供給用戶而無需服務器端處理,但是依然需要平臺來托管這些靜態文件。
下面來一起看看 10 個值得考慮的 React 靜態站點生成器。
Next.js 是一種流行的基于 React 的框架,在過去幾年中在 Web 開發社區中得到廣泛采用,現在普遍被認為是最好的 React 靜態站點生成器之一。
Next.js 具有以下明顯優勢:
目前 Next.js 在 Github 上有超過 105k 的 star、23.5k 的 fork、1330k 的項目依賴量,代碼貢獻者達到了 2.6k、NPM 周平均下載量達到了 298K,是妥妥的前端頂級開源項目。
Gatsby 是一個開源框架,它將 React、GraphQL 和 Webpack 的功能組合到一個用于構建靜態網站和應用程序的工具中。 由于其支持的網站性能好、代碼拆分等令人印象深刻的開箱即用功能以及友好的開發人員體驗,Gatsby 正迅速成為現代 Web 開發的主要工具。
Gatsby 是現代網絡的產物,其采用 JAMstack 架構、靜態站點生成器和其他網站優化策略。Gatsby 具有以下明顯特征:
Gatsby 已經不只是一個靜態站點生成工具,而是一整套的靜態站點解決方案。目前 Gatsby 在 Github 上有超過 54.4k 的 star、10.5k 的 fork、478k 的項目依賴量,代碼貢獻者達到了 3.9k、NPM 周平均下載量達到了 3487K,是妥妥的前端頂級開源項目。
Docusaurus 是一個基于 React 的靜態站點生成器,專為構建文檔網站而設計。它是一個開源工具,由 Meta 創建并由與 React 社區密切合作的開發人員團隊維護。
Docusaurus 為構建文檔站點的開發人員提供了諸多優勢,包括:
將 Docusaurus 與 React 結合使用的主要優勢之一是它允許開發人員利用 React 的強大功能,包括創建可重用組件的能力,從而節省時間。目前使用 Docusaurus 構建的一些流行網站包括: React Native、Algolia DocSearch 和 Ionic 等等。
目前 Docusaurus 在 Github 上有超過 43.9k 的 star、6.8k 的 fork、9.5k 的項目依賴量,代碼貢獻者達到了 1.1k、NPM 周平均下載量達到了 5K,是妥妥的前端優質開源項目。
Astro 是一種流行的 Web 框架,用于構建以內容為中心的高性能網站。Astro 代表下一代前端架構,可以優化網站,允許開發者選擇已有的 UI 框架(如 React、Svelte 和 Vue),使用 Astro 構建的站點加載速度提高 33%,JavaScript 大小減少 90%。
隨著 Astro 2.0 的發布,其通過混合渲染實現了 SSG、SSR 的完美結合。
Astro 2.0 是第一個為 Markdown 和 MDX 提供完整類型安全的 Web 框架。 Astro 可以通過內置的解析、驗證和自動 TypeScript 類型生成來組織 Markdown。 對于在站點上使用 Markdown 來說,Astro 2.0 的發布是一個很好的消息。
Astro 2.0 的新特性還包括:Markdown 和 MDX 的自動類型安全檢測、混合渲染(靜態&動態結合)、重新設計錯誤(引入錯誤疊加層(Error Overlay))、開發服務器優化、集成 Vite 4.0 等等。
Astro 在 2 年前開源,在 Github 上有超過 28.4K 的 star,1.4k 的 fork,有超過 29.2k 的項目使用它,NPM 周平均下載量超過 84K。
Qwik 是一種快速、輕量級的 React 靜態站點生成器,對于尋求快速簡便的方法來構建高性能網站的開發人員來說值得一試。
Qwik 構建的站點能夠快速加載,因為在構建時生成靜態 HTML 和 JavaScript 頁面。 不需要在運行時進行服務器端渲染或 JavaScript 執行。 同時, Qwik 還對其他 Web 技術提供可靠的支持,包括 :Webpack、Babel 和 TypeScript。
Qwik 使用預渲染和緩存來最大限度地減少服務器請求并加快頁面加載速度,使 Qwik 構建的站點即使在緩慢或不可靠的網絡上也能提供閃電般的性能。
總的來說,Qwik 具有以下獨特優勢:
目前 Qwik 在 Github 上有超過 16.5k 的 star、0.83k 的 fork、2.2k 的項目依賴量,代碼貢獻者達到了 0.31k、NPM 周平均下載量 8K,是妥妥的前端優秀開源項目。
當然除了上面介紹的 5 個靜態站點生成器外,還有一些優秀的方案也值得考慮,比如:
Cuttlebelle 是一個相對不太知名的 SSG,但它是一個很棒的框架,可以將編輯和代碼問題分開。 開發者可以通過將 Cuttlebelle 與 React 組件結合使用來擴展可能性。使用此框架,可以創建 Javascript XML、編寫布局、從外部 API 獲取數據、進行 Jest 測試并輕快的進行部署。
目前 Cuttlebelle 還處于起步階段,目前 Github 上有接近 0.5k 的 star,是一個值得關注的 SSG 前端項目。
這個靜態站點生成器是用 Golang 編程語言編寫的,開發者可以在 ReactJS 應用程序中使用。 Hugo 也是一個免費的開源框架,擁有 300 多個主題。
Hugo 最好的地方在于頁面加載時間不到一毫秒,讓用戶在一秒內獲得整個網站。 Hugo 支持 Windows、Linux、FreeBSD、macOS 等操作系統。 Hugo 還有助于菜單、分類法、各種內容類型、動態 API 和其他用于構建有趣的 React 網站的插件。
目前 Hugo 在 Github 上有超過 66.6k 的 star、7.1k 的 fork、0.4k 的項目依賴量,代碼貢獻者達到了 0.76k、是一個值得嘗試的 React 生態前端 SSG 優秀開源項目。
React 團隊創建了這個靜態站點生成器來克服其他 SSG 的缺點,以便開發人員獲得更好的體驗。 使用 React Static,網站可以實現從源到路由的更快數據流。
React Static 的學習曲線更短,因此開發人員會非常樂意使用它。 它結合了屬性映射功能(Prop Mapping Functionalities)以及數據攝取(Data Ingestion)和查詢。
目前 React Static 在 Github 上有超過 10.2k 的 star、0.8k 的 fork、0.4k 的項目依賴量,代碼貢獻者 0.24k、是一個值得嘗試的 React 生態前端 SSG 優秀開源項目。
Jekyll 是一個簡單的、博客感知的靜態站點生成器,非常適合個人、項目或組織站點。 把它想象成一個基于文件的 CMS,沒有那么復雜。 Jekyll 獲取內容,渲染 Markdown 和 Liquid 模板,并吐出一個完整的靜態網站,最后由 Apache、Nginx 或其他網絡服務器提供服務。 Jekyll 是 GitHub Pages 背后的引擎,開發者可以使用它直接從 GitHub 存儲庫托管站點。
目前 Jekyll 在 Github 上有超過 46.5k 的 star、10.1k 的 fork、代碼貢獻者達到了 1k、是一個值得嘗試的 React 生態前端 SSG 優秀開源項目。
Phenomic 是一個模塊化的網站編譯器,可以在其中將 React 用作渲染器,將 Webpack 用作打包器。 開發人員可以擁有使用此靜態網站生成器 React 構建成熟網站或應用程序的經驗。
Phenomic 有一些資源和一個文檔來構建 React 博客應用程序。 借助此 SSG,可以構建具有極佳和快速用戶體驗的高性能 SEO 網站。
目前,Phenomic 在 Github 上有超過 3.2k 的 star、0.3k 的 fork、不過值得一提的是目前該項目已經廢棄,官方推薦使用 Next.js 進行替換。
本文主要給大家帶來的主題是2023 年值得考慮的10大靜態站點生成器。因為篇幅有限,文章并沒有過多展開,如果有興趣,文末的參考資料提供了優秀文檔以供學習。最后,歡迎大家點贊、評論、轉發、收藏!
https://github.com/vercel/next.js/
https://github.com/gatsbyjs/gatsby
https://www.mparticle.com/blog/what-is-gatsby/
https://qwik.builder.io/docs/
https://github.com/gohugoio/hugo
https://kinsta.com/blog/react-static-site-generator/
https://github.com/react-static/react-static
https://github.com/jekyll/jekyll
https://github.com/cuttlebelle/cuttlebelle
https://github.com/MoOx/phenomic
https://www.bacancytechnology.com/blog/react-static-site-generators
https://aglowiditsolutions.com/blog/top-react-static-site-generators/
HTML 可以從以下幾個方面進行了解:
索引文件
文件 public/index.html 是一個模板,將使用 html webpack 插件進行處理,在構建期間,將自動注入資產鏈接,除此之外,Vue CLI 還可以自動注入資源提示(預加載/預取)、清單/圖標鏈接(使用PWA插件時)以及生成期間生成的JavaScript和CSS 文件的資產鏈接。
插值
由于索引文件用作模板,因此可以使用lodash模板語法在其中插入值:
除了html webpack插件公開的默認值之外,所有客戶端env變量也可以直接使用。
<link rel="icon" href="<%=BASE_URL %>favicon.ico">
預載
<link rel="preload"> 是一種資源提示,用于指定頁面加載后很快將需要的資源,因此如果我們希望在頁面加載生命周期的早期,在瀏覽器的主要呈現機制啟動之前就開始預加載。
默認情況下,Vue CLI應用程序將自動為應用程序初始呈現所需的所有文件生成預加載提示。提示是使用 @vue/preload webpack plugin 注入的,可以通過 chainWebpack as config.plugin('preload') 進行修改/刪除。
預取
<link rel="prefetch"> 是一種資源提示,告訴瀏覽器在頁面加載完成后,在瀏覽器空閑時間內預取用戶近期可能訪問的內容。
默認情況下,Vue CLI應用程序將自動為為異步塊生成的所有JavaScript文件生成預取提示(這是通過dynamic import()按需拆分代碼的結果)。
提示是使用 @vue/preload webpack plugin 注入的,同樣是可以通過chainWebpack as config.plugin('prefetch') 進行修改/刪除。
注意:在使用多頁設置時,應更改上面的插件名稱以匹配結構 “prefetch-{pagename}”,例如“prefetch app”。
禁用預取插件后,您可以使用webpack的嵌入式注釋手動選擇要預取的特定塊:
import(/* webpackPrefetch: true */ './someAsyncComponent.vue')
加載父塊時,webpack的運行時將注入預取鏈接。
禁用索引的生成
當使用具有現有后端的VUE CLI時,可能需要禁用 index.html 的生成,以便生成的資產可以在服務器呈現的頁面中使用,因此我們可以將以下內容添加到vue.config.js:
但是上面的代碼是存在一些問題的:
相反,我們可以應該考慮使用indexPath選項將生成的HTML用作服務器端框架中的視圖模板。
靜態資產可以從以下幾個方面進行了解:
靜態資產處理可以有兩種不同的方式:
相對路徑導入
在 .JavaScript、CSS或 *.vue 文件中使用相對路徑(必須以開頭)引用靜態資源時,該資源將包含在webpack的依賴關系圖中。在此編譯過程中,所有資產URL,例如 <img src="…">、background:url(...) 和CSS @import,都被解析為模塊依賴項。
<img src="./image.png">
// 將被編譯為
h('img', { attrs: { src: require('./image.png') }})
在內部,我們使用 file-loader 通過版本散列和正確的公共基路徑確定最終文件位置,并使用 url-loader 有條件地內聯小于4kb的資產,從而減少HTTP請求的數量;我們還可以通過chainWebpack調整內聯文件大小限制。
URL轉換規則
公用文件夾
放置在公用文件夾中的任何靜態資產都將被復制,而不會通過webpack。我們需要使用絕對路徑引用它們。
注意:我們盡可能將資產作為模塊依賴關系圖的一部分導入,以便它們通過webpack時具有以下好處:
公共目錄是作為一個轉義填充提供的,當通過絕對路徑引用它時,我們需要考慮到自身的應用程序將部署在哪里,如果應用未部署在域的根目錄下,則需要在URL前面加上publicPath:
怎么使用公共文件夾:
鏈接:https://www.9xkd.com/
*請認真填寫需求信息,我們會在24小時內與您取得聯系。