【用express-generator建立项目】

为了生成包含您指定目录结构的 Express.js 项目,我们需要按照以下步骤进行:

1. 使用 express-generator 初始化项目

首先,使用 express-generator 创建一个基本的 Express.js 项目:

npx express-generator prj

这会生成一个基本的 Express.js 项目结构,如下所示:

prj/
├── bin/
│   └── www
├── public/
│   ├── images/
│   ├── javascripts/
│   └── stylesheets/
│       └── style.css
├── routes/
│   ├── index.js
│   └── users.js
├── views/
│   ├── error.jade
│   ├── index.jade
│   └── layout.jade
├── app.js
├── package.json

2. 修改生成的结构以符合您的要求

按照您指定的目录结构进行调整和扩展。以下是修改后的结构和步骤:

a. 创建新的目录

在项目根目录 prj 中创建以下目录:

cd prj
mkdir controllers database router screenshots templates utils
b. 移动和重命名文件

routes/ 重命名为 router/

mv routes router

app.js 重命名为 server.js

mv app.js server.js
c. 更新 server.js 中的引用

server.js 中,更新路由和其他文件的路径引用,以反映新目录结构。

// server.js

import createError from 'http-errors';
import express from 'express';
import path from 'path';
import cookieParser from 'cookie-parser';
import logger from 'morgan';

import indexRouter from './router/index.js';
import usersRouter from './router/users.js';

const app = express();

// view engine setup
app.set('views', path.join(path.resolve(), 'views'));
app.set('view engine', 'ejs');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(path.resolve(), 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

export default app;

3. 更新 package.json

更新 package.json 中的 main 字段,以反映新的入口文件 server.js

{
  "name": "prj",
  "version": "0.60",
  "description": "Free and Open-Source WebUI For Managing Your Containers.",
  "main": "server.js",
  "type": "module",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node server.js"
  },
  "keywords": [],
  "author": "andy",
  "license": "MIT",
  "dependencies": {
    "adm-zip": "^0.5.12",
    "bcrypt": "^5.1.1",
    "dockerode": "^4.0.2",
    "dockerode-compose": "^1.4.0",
    "ejs": "^3.1.10",
    "express": "^4.19.2",
    "express-session": "^1.18.0",
    "memorystore": "^1.6.7",
    "multer": "^1.4.5-lts.1",
    "sequelize": "^6.37.3",
    "sqlite3": "^5.1.7",
    "systeminformation": "^5.22.9",
    "yaml": "^2.4.2"
  }
}

4. 创建 .dockerignore

在项目根目录中创建 .dockerignore 文件,并添加需要忽略的文件和目录。例如:

node_modules
npm-debug.log

5. 完成的目录结构

最终的项目目录结构如下:

prj/
├── controllers/
├── database/
├── node_modules/
├── public/
│   ├── images/
│   ├── javascripts/
│   └── stylesheets/
│       └── style.css
├── router/
│   ├── index.js
│   └── users.js
├── screenshots/
├── templates/
├── utils/
├── views/
│   ├── error.ejs
│   ├── index.ejs
│   └── layout.ejs
├── .dockerignore
├── package.json
├── server.js

启动项目

现在,您可以通过以下命令启动项目:

npm install
npm start

这会安装所有依赖项并启动服务器。您可以在浏览器中访问 http://localhost:3000 查看应用。

prj/
├── controllers/       # 手动添加:用于存放控制器文件
├── database/          # 手动添加:用于存放数据库文件和配置
├── node_modules/      # 自动生成:npm 包的依赖文件
├── public/            # 自动生成:用于存放静态文件(CSS、JS、图片)
│   ├── images/
│   ├── javascripts/
│   └── stylesheets/
│       └── style.css
├── router/            # 将 routes/ 重命名为 router/
│   ├── index.js
│   └── users.js
├── screenshots/       # 手动添加:用于存放项目截图等
├── templates/         # 手动添加:用于存放模板文件
├── utils/             # 手动添加:用于存放工具函数和辅助文件
├── views/             # 自动生成:用于存放视图模板文件
│   ├── error.ejs
│   ├── index.ejs
│   └── layout.ejs
├── .dockerignore      # 手动添加:用于指定 Docker 构建时忽略的文件
├── package.json       # 自动生成:项目的 npm 配置文件
├── server.js          # 将 app.js 重命名为 server.js
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ai君臣

学会的就要教给人

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值