教你用100行Nodejs代码,快速构

近日,我的一位同事向我寻求建议,她打算为自己构建一个博客。于是,我对静态网站生成器和博客引擎进行了一番研究,发现Hugo是一个很不错的选择。但是,我的同事还有一些特殊要求,比如,她想要一个自定义的博客网址和CSS主题。尽管这些Hugo都可以实现,但我并不打算花时间来学习它。我想自己创建一个简单的静态网站生成器,以便我的同事在她已经准备好的HTML中编写博客文章。

这个静态网站生成器的代码大约行,非常简洁。它提供了详细代码和示例博客。众所周知,GitLab提供静态页面的免费托管服务,还带有CI/CD功能,它允许你在部署之前编译页面。

以下教程将带你使用Node.js设置自己的静态网站生成器,Node.js的版本需要“=8.11.x”。

npminitnpmi--save-exactbluebirdchokidarfs-extramustachemkdirsrcmkdirpublic

首先,设置项目:

开始之前,我们需要弄清楚一个问题:为什么需要静态网站生成器?因为某些情况并不需要静态网站生成器。假如你的博客访问量很小,你只需简单地手工创建HTML页面并发布它们即可。实际上,在服务器编程兴起之前,在很长时间内这就是大多数Web的发布方式。但是,一旦页面和内容增加,对这些页面中的通用部分(例如页面底部)进行更改将会变得非常重复和乏味。因此,我们开始寻找一种更加理想的方法,尝试使用某种简单的模板引擎来分离常见内容,然后在特定的地方插入所需的内容。

开始研究模板引擎之前,先设置我们的网站。我们需要在项目根目录下创建2个文件夹:

SRC:我们当前网站所在的位置;Public:用来存放我们生成的网站。我们的目标是将src目录的内容复制到public目录中。在项目根目录下创建index.js文件,其内容如下:

constPromise=require(bluebird);constfse=require(fs-extra);Promise.resolve().then(async()={awaitmain();});constmain=async()={awaitgenerateSite();};constgenerateSite=async()={awaitcopyAssets();};constcopyAssets=async()={awaitfse.emptyDir(public);awaitfse.copy(src,public);};

执行命令nodeindex.js,即可启动该脚本。

祝贺你!此刻,你已荣升为一名后端开发人员。

接下来,我们将添加文件监视器,src文件夹中的内容一旦发生更改就将重新生成网站。该博客总共包含-0个文件,我们可以在任何变化发生时重新生成整个网站:

constchokidar=require(chokidar);constmain=async()={awaitgenerateSite();watchFiles();};constwatchFiles=()={constwatcher=chokidar.watch([src],{ignored:/(^

[/\])../,//chokidarwillwatchfoldersrecursivelyignoreInitial:false,persistent:true});watcher.on(change,asyncpath={console.log(changed+path+,re


转载请注明:http://www.aierlanlan.com/rzdk/1935.html