
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.5.3 使用模板引擎
这里我们选择Node.js中非常受欢迎同时也非常好用的模板引擎——Nunjucks,它和ejs比较像,功能与Pug一样强大。首先,在终端安装nunjucks模块,代码如下。

然后,在代码中增加模板引擎用法,如下。

上述nunjucks代码是最简单的Demo,其中的要点如下。
〇 引入nunjucks模块。
〇 nunjucks.renderString方法用于编译模板,其中有两个参数。
● 第一个是模板字符串。
● 第二个是JSON数据。
〇 compiledData是编译后的结果。
我们不能将生成器的内容都写到字符串里,而使用脚手架可以生成项目文件,所以我们可以继续改造代码,将模板独立出去,然后通过文件读写来获取模板字符串。
创建一个gen.tpl,内容为Hello{{username}},通过修改gen.js来读取模板,代码如下。


以上代码中引入了fs模块,用于读取文件。fs.readFileSync('./gen.tpl').toString()是读取文件的同步方法,并能将文件内容转成字符串。
读取文件还是比较简单的,那么编写文件如何实现呢?一般我们使用fs.writeFile方法。这里编写的文件是脚手架,可以直接使用fs.writeFielSync同步方法,因为脚手架是单次使用的,不涉及高并发场景。
通过上述步骤,我们便得到了一个生成器的大概模型,完整代码如下。

在以上代码中,有些内容是可变的,具体如下。
〇 './gen.tpl':输入模板。
〇 {username:'James'}:要编译的数据。
〇 './gen.xxx':最终的输出结果。
我们可以通过改变这些可变内容来实现任何想要的功能。理论上,所有脚手架需求都可以实现。