好的,以下是一个使用 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 代码生成器。
你打算打赏多少钱呢?
(微信扫一扫)