Node.js 教程
Node.js 基础
Node.js 概述
Node.js 环境搭建
Node.js 基础语法
Node.js 模块
Node.js 异步编程
Node.js 核心模块
Node.js文件系统
Node.js路径模块(path)
Node.js的HTTP模块
Node.js的url模块
Node.js流模块(stream)
Node.js 常用工具与框架
npm 与包管理
Express 框架
数据库操作
Socket.io 与 WebSocket
Node.js 实战项目
Web 应用开发
API 开发
爬虫应用
自动化脚本
Node.js部署与优化
部署 Node.js 应用
Node.js性能优化
Node.js应用的安全性
Node.js 高级话题
Node.js中的设计模式
TypeScript 与 Node.js
GraphQL 与 API 开发
-
+
首页
Node.js 实战项目
使用 Node.js 开发 Web 应用的详细指南,包括项目结构设计、路由与控制器、视图与模板引擎以及数据库集成。 --- ### **1. 项目结构设计** 以下是一个典型的 Node.js Web 应用的项目结构: ``` my-app/ ├── config/ # 配置文件(数据库配置、中间件配置等) │ ├── database.js │ └── middleware.js ├── controllers/ # 控制器(处理业务逻辑) │ ├── userController.js │ └── homeController.js ├── models/ # 数据模型 │ ├── user.js │ └── blog.js ├── public/ # 静态文件(CSS、JS、图片等) │ ├── css/ │ ├── js/ │ └── images/ ├── routes/ # 路由定义 │ ├── userRoutes.js │ └── homeRoutes.js ├── views/ # 视图模板 │ ├── layouts/ │ │ └── main.handlebars # 主模板 │ ├── home/ │ │ └── index.handlebars │ └── users/ │ └── profile.handlebars ├── app.js # 应用初始化 └── package.json # 项目依赖 ``` --- ### **2. 路由与控制器** - **路由定义**(routes/homeRoutes.js): ```javascript const express = require('express'); const router = express.Router(); const homeController = require('../controllers/homeController'); router.get('/', homeController.index); router.get('/about', homeController.about); module.exports = router; ``` - **控制器**(controllers/homeController.js): ```javascript exports.index = (req, res) => { res.render('home/index', { title: 'Home Page' }); }; exports.about = (req, res) => { res.render('home/about', { title: 'About Us' }); }; ``` - **注册路由**(app.js): ```javascript const express = require('express'); const app = express(); const homeRoutes = require('./routes/homeRoutes'); app.use('/', homeRoutes); app.listen(3000, () => { console.log('Server is running at http://localhost:3000'); }); ``` --- ### **3. 视图与模板引擎** 推荐使用 **Handlebars** 或 **EJS** 作为模板引擎。 - **安装 Handlebars**: ```bash npm install express-handlebars ``` - **配置 Handlebars**(app.js): ```javascript const express = require('express'); const exphbs = require('express-handlebars'); const app = express(); app.engine('handlebars', exphbs.engine()); app.set('view engine', 'handlebars'); app.set('views', './views'); // 主模板(views/layouts/main.handlebars) // {{> content }} ``` - **渲染视图**(controllers/homeController.js): ```javascript exports.index = (req, res) => { res.render('home/index', { title: 'Home Page', message: 'Welcome to our site!' }); }; ``` --- ### **4. 数据库集成** 以下是集成 MongoDB 数据库的示例: - **安装依赖**: ```bash npm install mongoose ``` - **数据库配置**(config/database.js): ```javascript const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true }); const db = mongoose.connection; db.on('error', console.error.bind(console, 'MongoDB connection error:')); db.once('open', () => { console.log('Connected to MongoDB'); }); ``` - **数据模型**(models/user.js): ```javascript const mongoose = require('mongoose'); const Schema = mongoose.Schema; const userSchema = new Schema({ name: String, email: String, age: Number }); module.exports = mongoose.model('User', userSchema); ``` - **控制器操作**(controllers/userController.js): ```javascript const User = require('../models/user'); exports.createUser = async (req, res) => { try { const user = new User(req.body); await user.save(); res.status(201).json(user); } catch (err) { res.status(400).json({ error: err.message }); } }; ``` --- ### **5. 中间件** - **全局中间件**(config/middleware.js): ```javascript const express = require('express'); const app = express(); app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.use(express.static('public')); ``` - **自定义中间件**: ```javascript const isAdmin = (req, res, next) => { if (req.user && req.user.isAdmin) { next(); } else { res.status(403).send('Forbidden'); } }; ``` --- ### **总结** 通过上述步骤,你可以构建一个结构清晰、功能完整的 Node.js Web 应用。以下是关键要点: 1. 使用清晰的项目结构来组织代码。 2. 将路由和控制器分离,使代码更易于维护。 3. 使用模板引擎来生成动态页面。 4. 集成数据库以存储和操作数据。 5. 使用中间件来处理通用任务(如解析请求体、服务静态文件等)。
Web 应用开发
API 开发
爬虫应用
自动化脚本
wwbang
2025年2月27日 10:35
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码