首页 > 解决方案 > 如何使用 nodeJs 生成 javascript 文件

问题描述

我的网站需要一个我可以在构建过程中生成的 JSON。

所以,我想做的是生成一个 js 文件,例如,以下内容:

export const PREFIX = 'foo';
export const IMPORT_STUFF = {
     a: 10,
     ....
}

对我来说,最简单的方法是这样的:

const TEMPLATE = `export PREFIX = '--foo--';
export const IMPORT_STUFF = `;

let output = TEMPLATE.replace('--foo--', myPefix);
output += JSON.stringify(importObj);

createJsFile(output);

当事情变得更复杂时,我可以想象这种方法并不理想,所以我想知道是否有更好的方法来做这样的事情?

标签: javascriptnode.js

解决方案


你可以使用ejs来渲染一些基本的模板。它是一个模板引擎,通常用于在 html 中呈现 javascript,但在这种情况下,您将在字符串中呈现 javascript。

const ejs = require('ejs');
var myPrefix = 'foo';
var importObj = {a: 10}

const TEMPLATE = `export PREFIX = '<%= Prefix %>';
export const IMPORT_STUFF = <%- JSON.stringify(ImportObj) %>`;

let output = ejs.render(TEMPLATE, {Prefix: myPrefix, ImportObj: importObj});

包含在<%= %>or中的代码<%- %>将作为 javascript 执行,使用您提供的对象作为ejs.render. <%- %>当您不想对输出进行 html 编码时,使用该语法。

如果 ejs 对你来说太多了,你总是可以回到纯字符串插值(由模板文字提供):

var myPrefix = 'foo';
var importObj = {a: 10}
importObj = JSON.stringify(importObj)

var output = `export PREFIX = '${myPrefix}';
export const IMPORT_STUFF = ${importObj}`

但是,这不允许您从外部文件中读取模板,因此我会选择 ejs,这在这种情况下是更好的选择。


推荐阅读