基于ejs 写的代码生成器

2023-03-24 23:09:12

好的,以下是一个使用 EJS 模板引擎的 Node.js 代码生成器,用于生成一个基本的 Hello World 应用程序。

首先,需要安装 EJS 模块:

Copy codenpm install ejs

然后,这是生成器的代码:

javascriptCopy codeconst fs = require('fs');const path = require('path');const ejs = require('ejs');// 创建目录const createDir = (dirPath) => {  if (!fs.existsSync(dirPath)) {
    fs.mkdirSync(dirPath);
  }
};// 创建文件const createFile = (filePath, content) => {
  fs.writeFileSync(filePath, content);
};// 渲染 EJS 模板const renderTemplate = (templatePath, data) => {  const template = fs.readFileSync(templatePath, 'utf8');  return ejs.render(template, data);
};// 生成 app.js 文件const generateAppFile = (appName) => {  const templatePath = path.join(__dirname, 'templates', 'app.ejs');  const appContent = renderTemplate(templatePath, { appName });  createFile(`${appName}/app.js`, appContent);
};// 生成 package.json 文件const generatePackageFile = (appName) => {  const templatePath = path.join(__dirname, 'templates', 'package.ejs');  const packageContent = renderTemplate(templatePath, { appName });  createFile(`${appName}/package.json`, packageContent);
};// 生成入口文件const generateIndexFile = (appName) => {  const templatePath = path.join(__dirname, 'templates', 'index.ejs');  const indexContent = renderTemplate(templatePath, { appName });  createFile(`${appName}/index.js`, indexContent);
};// 生成应用程序const generateApp = (appName) => {  createDir(appName);  generateAppFile(appName);  generatePackageFile(appName);  generateIndexFile(appName);
};// 运行生成器generateApp('MyApp');

这个生成器会在模板目录中查找三个 EJS 模板文件:

  • app.ejs:一个包含 Express 应用程序的模板。

  • package.ejs:一个包含应用程序元数据的模板。

  • index.ejs:一个包含启动服务器代码的模板。

以下是每个模板文件的示例内容:

app.ejs:

ejsCopy codeconst express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('<%= appName %> app listening on port 3000!');
});

package.ejs:

ejsCopy code{
  "name": "<%= appName %>",
  "version": "1.0.0",
  "description": "A simple Hello World app built with Node.js and Express",
  "main": "app.js",
  "dependencies": {
    "express": "^4.17.1"
  }
}

index.ejs:

ejsCopy codeconst app = require('./app');

app.listen(3000, () => {
  console.log('<%= appName %> app listening on port 3000!');
});

当运行生成器时,它将使用 EJS 模板渲染器将模板文件的内容替换为应用程序名称,然后将生成的内容写入相应的文件中。生成的

当运行该生成器时,它会在当前工作目录下创建一个名为 MyApp 的新目录,并在其中生成三个文件:

  • app.js:包含一个 Express 应用程序,该应用程序在 / 路由上返回一个 "Hello World!" 消息,并在监听端口 3000 上启动服务器。

  • package.json:包含应用程序的元数据,其中 name 属性的值是 "MyApp"。

  • index.js:启动服务器的入口文件。

可以通过修改模板文件来自定义生成的应用程序的内容。例如,可以修改 app.ejs 模板文件以添加其他路由、中间件等。可以通过将更多的模板文件添加到 templates 目录中来扩展生成器,以生成更多的文件。

希望这可以帮助你开始编写自己的 Node.js 代码生成器。


你打算打赏多少钱呢?

打赏
(微信扫一扫)