技术栈概述
Node.js、Express和EJS共同构成了一个强大而灵活的Web开发技术栈,适用于构建各种规模的Web应用程序。
Node.js
基于Chrome V8引擎的JavaScript运行时,用于构建快速、可扩展的网络应用程序。
Express
快速、开放、极简的Node.js Web框架,提供强大的功能来开发Web和移动应用程序。
EJS
高效的JavaScript模板引擎,使用简单的模板语法生成HTML标记。
核心功能特性
高性能
Node.js的非阻塞I/O模型和事件驱动架构使其能够处理大量并发连接,提供卓越的性能。
中间件架构
Express的中间件架构允许您轻松添加功能,如身份验证、日志记录、数据解析等。
模板引擎
EJS提供简单的模板语法,允许您在HTML中嵌入JavaScript代码,动态生成内容。
模块化
Node.js的模块系统使代码组织变得简单,可以轻松重用和共享代码。
易于扩展
通过NPM生态系统,可以轻松添加各种功能模块,快速扩展应用程序功能。
全栈JavaScript
使用相同的语言进行前端和后端开发,提高开发效率并减少上下文切换。
代码示例
app.js - Express服务器设置
// 引入所需模块
const express = require('express');
const path = require('path');
// 创建Express应用
const app = express();
const PORT = process.env.PORT || 3000;
// 设置EJS为模板引擎
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
// 设置静态文件目录
app.use(express.static(path.join(__dirname, 'public')));
// 解析请求体
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
// 定义路由
app.get('/', (req, res) => {
res.render('index', {
title: '首页',
message: '欢迎使用Node.js + Express + EJS!'
});
});
// 启动服务器
app.listen(PORT, () => {
console.log(`服务器运行在 http://localhost:${PORT}`);
});
views/index.ejs - EJS模板示例
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%= title %></title>
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<header>
<h1><%= title %></h1>
</header>
<main>
<div class="container">
<h2><%= message %></h2>
<!-- EJS条件语句 -->
<% if (user) { %>
<p>欢迎, <%= user.name %>!</p>
<% } else { %>
<p>请<a href="/login">登录</a></p>
<% } %>
<!-- EJS循环 -->
<ul>
<% items.forEach(function(item) { %>
<li><%= item.name %></li>
<% }); %>
</ul>
</div>
</main>
<footer>
<p>© 2023 我的应用</p>
</footer>
</body>
</html>
开始使用
按照以下步骤快速搭建您的第一个Node.js + Express + EJS应用程序
终端命令
# 创建项目目录
mkdir my-app
cd my-app
# 初始化npm项目
npm init -y
# 安装依赖
npm install express ejs
# 创建目录结构
mkdir views public public/css public/js
# 创建app.js文件
touch app.js
# 启动应用
node app.js