当前位置: 首页 > 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>

相关文章:

  • git 的基本使用
  • RTMP 入门指南
  • 【语法】C++的stack和queue
  • 零基础快速搭建AI绘画网站!用Gradio玩转Stable Diffusion
  • Langchain入门介绍
  • Spring @Transactional 自调用问题深度解析
  • C语言----函数栈帧讲解
  • 抖音IP属地跟无线网有关系吗?一文解析
  • 【智慧城市】新中地GIS开发实训:基于 Vue 框架的武汉智慧旅游系统
  • http协议详解附带c/c++服务器和客户端源码
  • 在统信UOS/麒麟Kylin OS中创建网页桌面快捷方式
  • 反序列化漏洞1
  • python pymysql如何保证数据库更新成功
  • 12.thinkphp验证
  • 隧道调频广播覆盖的实现路径:隧道无线广播技术赋能行车安全升级,隧道汽车广播收音系统助力隧道安全管理升级
  • 海量信息处理分析有效决策
  • 控件和QWidget核心属性
  • Android——Activity与Fragment通信
  • SpringBoot 常用注解大全
  • 智能分析网关摄像机实时接入分析平台,如何开启周界防护智能新时代?
  • 上海首个航空前置货站落户松江综合保税区,通关效率可提升30%
  • 从地下金库到地上IP,看海昏汉文化“最美变装”
  • 海南旅文局通报游客入住酒店港币被调包:成立调查组赴陵水调查
  • 理想汽车副总裁刘杰:不要被竞争牵着鼻子走,也不迷信护城河
  • 广汽集团一季度净亏损7.3亿元,同比转亏,总销量下滑9%
  • 钱学森数据服务中心在沪上线,十万个数字资源向公众开放