国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運營 > 靜態(tài)網(wǎng)站生成器是如何工作的

靜態(tài)網(wǎng)站生成器是如何工作的

時間:2023-07-21 11:06:01 | 來源:網(wǎng)站運營

時間:2023-07-21 11:06:01 來源:網(wǎng)站運營

靜態(tài)網(wǎng)站生成器是如何工作的:在過去的幾年里,開源靜態(tài)網(wǎng)站生成器的數(shù)量增長迅速,StaticGen 上幾乎找得到每一種語言實現(xiàn)的版本。靜態(tài)網(wǎng)站相比動態(tài)網(wǎng)站具備無需依賴應用服務器,性能優(yōu)越,部署簡單等特點。特別適合生成靜態(tài)文檔,個人博客,飽受開發(fā)者的青睞。相比學會使用,掌握工作原理也尤為重要。

一個靜態(tài)網(wǎng)站生成器的工作流程通常有以下幾個步驟:

  1. 讀取源文件(e.g. 約定 markdown 格式)
  2. 資源預處理
  3. 模板引擎渲染
  4. 生成目標文件

第一步 讀取源文件

從使用者的角度,我們希望以 markdown 的形式進行寫作,相比純文本更容易控制格式,并且可以靈活地自定義配置(源目錄路徑、目標目錄路徑、頁面標題等等),覆蓋工具的默認配置,這一步很簡單。

以 Node.js 為例:

// 讀取 markdown 內(nèi)容readFile(source, (err, data) => { console.log(data);})// 讀取配置內(nèi)容console.log(require(config))

第二步 資源預處理

也是靜態(tài)網(wǎng)站生成器的核心工作部分。首先解析 markdown 內(nèi)容,分離頭部元數(shù)據(jù)(通常采用 YAML 格式,用于單頁信息配置)與主體內(nèi)容。

形似:

---title: Hello World---Awesome static site generator解析成:

const result = { 'path/to/hello-world.md': { title: 'Hello World', content: new Buffer('Awesome static site generator.') }}通常的做法是掃描文件,匹配分隔符`---`,分割內(nèi)容,對頭部用相應格式的引擎解析(e.g. YAML 格式用 yaml-parser,JSON 格式用 JSON.parse),對主體內(nèi)容,需要把 markdown 內(nèi)容轉(zhuǎn)換成帶有標簽的 HTML 片段,用于排版與應用樣式,推薦比較流行的解析器 marked 。

經(jīng)過轉(zhuǎn)換后:

const markedResult = { 'path/to/hello-world.md': { title: 'Hello World', content: new Buffer('Awesome static site generator.'), html: '<p>Awesome static site generator.</p>' }}對其它一些靜態(tài)資源(e.g. css, js, png),可以引入一系列工具鏈,CSS 預處理器,編譯器,打包器,流程構(gòu)建工具,將全部資源相整合。由此,可以提供一套主題配置,甚至可以開放主題插件,豐富內(nèi)容。所有的設計出發(fā)點都基于更好的內(nèi)容寫作,而不必折騰繁瑣重復性的頁面開發(fā)工作。

第三步 模板引擎渲染

在上一步,我們得到了 markdown 解析后的 HTML 片段,接下來要做得就是將 HTML 片段嵌入預先定義的模板,復用頁面中公共部分(e.g. 導航欄、側(cè)邊欄、底部),還可以嵌入變量(默認配置及自定義配置)和靜態(tài)資源。

以模板引擎 EJS 為例:

<html><head><%= title %></head><body> <% include partials/navbar %> <%- html %></body></html>


// EJS 渲染const ejsResult = ejs.render(str, { ...markedResult['path/to/hello-world.md']});我們甚至可以拋棄以往模板引擎渲染這種比較傳統(tǒng)的方式,改用 MV* 框架(e.g. React, Vue, Angular),并結(jié)合服務端渲染技術,熱替換技術及其它工具鏈,打造一個更現(xiàn)代化的靜態(tài)網(wǎng)站生成器。

第四步 生成目標文件

經(jīng)過前三步的解析,處理,編譯,轉(zhuǎn)換,我們得到了最終的資源文件,最后一步只需清理目標目錄,并輸出所有資源到目標目錄,結(jié)束工作。

// 生成目標文件writeFile(destination, ejsResult, err => { if (err) return console.error(err)}))

你可能還需要

小結(jié)

本文從宏觀角度解釋了靜態(tài)網(wǎng)站生成器的工作流程(輸入 => 預處理 => 渲染 => 輸出)。當然這個過程還涉及命令行的解析,合法性校驗,錯誤捕獲,解析器原理,編譯器原理,模板引擎原理,插件設計等等。See you next time ~

關鍵詞:工作,成器,靜態(tài)

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關閉