小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

教你用 100行Node.js 代碼,快速構(gòu)建一個靜態(tài)網(wǎng)站生成器!

 百眼通 2018-09-08

近日,我的一位同事向我尋求建議,她打算為自己構(gòu)建一個博客。于是,我對靜態(tài)網(wǎng)站生成器和博客引擎進行了一番研究,發(fā)現(xiàn) Hugo 是一個很不錯的選擇。但是,我的同事還有一些特殊要求,比如,她想要一個自定義的博客網(wǎng)址和 CSS 主題。盡管這些 Hugo 都可以實現(xiàn),但我并不打算花時間來學(xué)習(xí)它。我想自己創(chuàng)建一個簡單的靜態(tài)網(wǎng)站生成器,以便我的同事在她已經(jīng)準(zhǔn)備好的 HTML 中編寫博客文章。

這個靜態(tài)網(wǎng)站生成器的代碼大約 100 行,非常簡潔。它提供了詳細(xì)代碼和示例博客 。眾所周知,GitLab 提供靜態(tài)頁面的免費托管服務(wù),還帶有 CI/CD 功能,它允許你在部署之前編譯頁面。

以下教程將帶你使用 Node.js 設(shè)置自己的靜態(tài)網(wǎng)站生成器,Node.js 的版本需要 “>= 8.11.x”。

首先,設(shè)置項目:

開始之前,我們需要弄清楚一個問題:為什么需要靜態(tài)網(wǎng)站生成器?因為某些情況并不需要靜態(tài)網(wǎng)站生成器。假如你的博客訪問量很小,你只需簡單地手工創(chuàng)建 HTML 頁面并發(fā)布它們即可。實際上,在服務(wù)器編程興起之前,在很長時間內(nèi)這就是大多數(shù) Web 的發(fā)布方式。但是,一旦頁面和內(nèi)容增加,對這些頁面中的通用部分(例如頁面底部)進行更改將會變得非常重復(fù)和乏味。因此,我們開始尋找一種更加理想的方法,嘗試使用某種簡單的模板引擎來分離常見內(nèi)容,然后在特定的地方插入所需的內(nèi)容。

開始研究模板引擎之前,先設(shè)置我們的網(wǎng)站。我們需要在項目根目錄下創(chuàng)建 2 個文件夾 :

SRC:我們當(dāng)前網(wǎng)站所在的位置;

Public:用來存放我們生成的網(wǎng)站。

我們的目標(biāo)是將 src 目錄的內(nèi)容復(fù)制到 public 目錄中。在項目根目錄下創(chuàng)建 index.js 文件,其內(nèi)容如下:

執(zhí)行命令 node index.js,即可啟動該腳本。

祝賀你!此刻,你已榮升為一名后端開發(fā)人員。

接下來,我們將添加文件監(jiān)視器,src 文件夾中的內(nèi)容一旦發(fā)生更改就將重新生成網(wǎng)站。該博客總共包含 500-1000 個文件,我們可以在任何變化發(fā)生時重新生成整個網(wǎng)站:

上面的代碼清楚地說明了為什么初始版本有一個名為 generateSite 的函數(shù)?,F(xiàn)在執(zhí)行命令 node index.js 啟動我們的靜態(tài)網(wǎng)站生成器,如果在 src 目錄中編輯任何文件,public 都會發(fā)生變化。此時,我們還將添加一個環(huán)境變量來區(qū)分開發(fā)和生產(chǎn)模式。在開發(fā)模式中,我們將關(guān)注更改情況并重新生成網(wǎng)站,而在生產(chǎn)模式中,我們只需重新生成:

我們可以執(zhí)行命令 export NODE_ENV=prod || set NODE_ENV=prod && node index.js 來運行以上代碼。請注意,觀察源目錄的更改和重新編譯并不是每次都必須的,你可以跳過此步驟,只需在每次進行更改時運行腳本即可。

至此,差不多完成了!現(xiàn)在來說說模板。我們將使用 Mustache.js 模板,它非常簡單易用,并且我們的需求并不復(fù)雜。創(chuàng)建一個文件夾 src/partials,用來存放網(wǎng)站的公共部分。然后稍微修改我們的網(wǎng)站結(jié)構(gòu),保證所有頁面都存放在 src/pages 目錄中。接下來加載頁面并使用 Mustache 渲染:

想要了解最終版本,請查看 Software Dawg 項目(https:///wheresvic/software-dawg)。它與本教程有一些細(xì)微差別:

腳本本身位于 src 目錄下。

代碼略超過了 100 行,大約 130 行,為了遵循簡潔的代碼實踐風(fēng)格,使用常量而不是文件夾路徑的字符串。

該腳本不會復(fù)制整個 src 文件夾,而只復(fù)制必要的資源,比如 CSS 文件、圖片等。

該項目使用 node-sass 編譯模板 CSS。然而,這種依賴性不是必需的,因為已編譯的 CSS 文件也被提交到了 Git。

此外,你還可以安裝 browser-sync 軟件包,然后通過命令 npm run live-reload 運行它,如此一來,只要有任何更改發(fā)生瀏覽器就會自動刷新。請注意,由于任何更改都將重新生成整個網(wǎng)站,因此并不適用于 Windows。

GitLab 提供靜態(tài)網(wǎng)站免費托管,只需一個 .gitlab-ci.yml 配置文件即可。真正令人難以置信之處在于,你可以自定義構(gòu)建過程,這意味著在該例中,我們可以在部署之前生成網(wǎng)站!有關(guān)此功能的詳細(xì)信息,請參見https://about./features/pages/。

本教程到此結(jié)束,我的同事對此非常滿意,該方案非常靈活,它允許她根據(jù)自己的喜好進行自定義,也希望對你有所助益!

原文:https:///blog/2018/08/16/building-a-simple-static-site-generator-using-node-js

作者簡介:Victor Parmar,是一位全棧工程師,熱愛旅行,熱愛 DIY。

譯者:安翔,責(zé)編:屠敏

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多