当前位置: 首页 > news >正文

node.js 实战——从0开始做一个餐厅预订(express+node+ejs+bootstrap)

餐厅预订

做一个WEB版的餐厅预订系统,主要功能包括有:餐厅的介绍、餐厅、明星厨师、预订、注册、个人中心等功能

界面呈现

界面大致呈现的效果如下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建项目

IDE使用WebStorm,当然也可以选择vscode 、HBuilderX都是可以的。创建项目的方式有两种,

  • 一种是使用express-generator 创建,具体步骤可以浏览node.js 实战——express框架——知识点
  • 另种是使用IDE直接创建

express 模板引擎介绍

🧱 常见 View Engine 对比表

模板引擎语法风格学习曲线渲染性能特点/适用场景
EJS类似 HTML + JS🟢 简单🟢 快最通用、轻量、入门推荐
Pug(原 Jade)缩进式语法🟡 有点怪🟢 快简洁、有层次感,但需适应
HandlebarsMustache 风格🟢 简单🟡 中等强逻辑隔离,适合大团队模板开发
Nunjucks类似 Django🟢 简单🟢 快功能全、适合内容型网站(支持宏)
EJS + Vue/React混合方案🟡 复杂🟡 看项目前后端混合渲染项目(不推荐长期用)

###🚦怎么选?

✅ 初学 / 快速原型:

👉 EJS
• 类似 HTML,直接插入 JS 变量,用起来最直观。

<h1>Hello <%= username %></h1>


✅ 喜欢极简 / 不想写太多标签:

👉 Pug
• 不需要闭合标签,代码层次清晰,但初用者容易懵。

htmlheadtitle= titlebodyh1 Hello #{username}

✅ 企业团队 / 更强逻辑分离:

👉 Handlebars
• 支持 block、helper、partial,更适合多人协作。

<h1>Hello {{username}}</h1>

✅ 内容系统 / CMS 风格网站:

👉 Nunjucks
• 支持继承、宏、过滤器,适合文章类网站或后台系统。

✅ 已经是前后端分离:
• 根本不需要 View Engine,直接返回 JSON,用前端框架(如 Vue、React)渲染。

res.json({ user: 'Tom' })

🧠 总结建议:

你是?推荐 View Engine
刚学 / 小项目 / 原型开发EJS
想写优雅、结构化模板Pug
需要可维护、模块化模板系统Handlebars/Nunjucks
前后端完全分离无需 View Engine

使用IDE 创建项目

我这里选择的是ejs ,做入门,后面再说 前后端分离的
在这里插入图片描述

  • 再Location 处选择好文件存放的位置,然后在写好项目的名字,比如我这里是位置选择的是/Users/layman/Desktop/node 这个文件夹下,我只需要将untitled2 换成项目的名字即可
  • 根据自己的需要选择view Engine 和css
  • 点击创建,等待IDE 执行完操作。

在这里插入图片描述

项目名称/
├── app.js              # 主应用文件
├── bin/www             # 启动服务器的入口
├── public/             # 静态资源(如图片、CSS、JS)
├── routes/             # 路由定义(如 index.js, users.js)
├── views/              # 模板文件(如 .ejs/.pug/.hbs)
├── package.json        # 项目描述和依赖

引入bootstrap

📦 方法一:直接通过 CDN 引入(最常用)

在你的 .ejs 模板里的 里加入 Bootstrap 的 CDN 链接即可👇

<!-- views/layout.ejs 或 index.ejs 中 -->
<head><meta charset="UTF-8"><title><%= title %></title><!-- Bootstrap CSS CDN --><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"><!-- 可选:Bootstrap 的 JS(模态框、下拉菜单等用得上) --><script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
</head>

📦 方法二:安装 Bootstrap 到本地

安装 Bootstrap 到项目中

npm install bootstrap

在express 里设置一个静态目录

// app.js 或 index.js
app.use('/bootstrap', express.static(path.join(__dirname, 'node_modules/bootstrap/dist')));

在页面中

<!-- 本地 Bootstrap 引入方式 -->
<link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>

打包的时候,方法二处理办法

✅ 方法 A:把 Bootstrap 文件复制出来 → 放进 public/ 或 assets/ 目录

cp node_modules/bootstrap/dist/css/bootstrap.min.css public/vendor/bootstrap/css/
cp node_modules/bootstrap/dist/js/bootstrap.bundle.min.js public/vendor/bootstrap/js/

然后在你的 EJS 页面中引用它:

<link href="/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<script src="/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
http://www.xdnf.cn/news/149707.html

相关文章:

  • js的作用域,作用域链,执行上下文,变量对象,活动对象
  • 谷歌AI眼镜:你的第二大脑,未来人机共生从这里开始
  • 前端如何获取文件的 Hash 值?多种方式详解、对比与实践指南
  • 列表与字典应用
  • 动态规划算法详解(C++)
  • EFL格式|动态库加载 | 重谈地址空间(2)
  • 复合材料高置信度 DIC 测量与高级实验技术研讨会邀请函
  • 达梦数据库压力测试报错超出全局hash join空间,适当增加HJ_BUF_GLOBAL_SIZE解决
  • 【计算机视觉】CV实战项目 - 基于YOLOv5的人脸检测与关键点定位系统深度解析
  • mysql 安装
  • 项目实战-基于大数据分析的暖通系统改造模型【感谢Akila公司以及学院的支持】
  • Lobechat使用WolframAlpha MCP工具减少LLM幻觉
  • Java 设计模式心法之第23篇 - 状态 (State) - 让对象的行为随状态优雅切换
  • 【蓝桥杯选拔赛真题104】Scratch回文数 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析
  • IPOF(Input-Process-Output-Feedback)方法学简介
  • XMOS空间音频——在任何设备上都能提供3D沉浸式空间音频且实现更安全地聆听
  • 【计算机视觉】CV实践项目- 基于PaddleSeg的遥感建筑变化检测全解析:从U-Net 3+原理到工程实践
  • numpy.random.normal与numpy.random.randn的区别与联系
  • 雷电模拟器怎么更改IP地址
  • 使用 Python 项目管理工具 uv 快速创建 MCP 服务(Cherry Studio、Trae 添加 MCP 服务)
  • Jetpack Compose 基础组件学习2.1:Surface
  • stack __ queue(栈和队列)
  • 分布式事务 两阶段提交协议(2PC的原理、挑战)
  • 大模型微调 - 自注意力机制
  • 【统计学习】递归最小二乘算法与奇异值分解
  • #什么是爬虫?——从技术原理到现实应用的全面解析 VI
  • Vue回调函数中的this
  • 【CF】Day43——Codeforces Round 906 (Div. 2) E1
  • Libconfig 修改配置文件里的某个节点
  • Linux 系统用户管理与权限掌控:从基础到精通