“官网”通常包含几个核心部分:

(图片来源网络,侵删)
- 首页:展示公司Logo、Slogan、服务介绍、网点查询入口等。
- 服务介绍:展示圆通提供的各种快递服务。
- 查询功能:这是最重要的功能,允许用户输入运单号查询物流轨迹。
- 网点查询:允许用户输入地址或城市,查找附近的圆通营业网点。
- 联系我们:展示客服电话、邮箱、总部地址等。
由于我们无法直接访问圆通的真实后端API,下面的代码将使用模拟数据来演示如何构建这些功能,你可以将这个框架替换为真实的API调用。
技术栈
- 后端: Node.js + Express.js
- 前端: HTML, CSS, JavaScript (使用原生JS或简单的模板引擎如 EJS)
- 数据: 使用内存中的数组来模拟数据库。
项目结构
express-yuantong/
├── node_modules/
├── public/ # 存放静态文件 (CSS, JS, 图片)
│ ├── css/
│ │ └── style.css
│ └── js/
│ └── main.js
├── views/ # 存放模板文件 (使用 EJS)
│ ├── partials/ # 公共组件 (如 header, footer)
│ │ ├── header.ejs
│ │ └── footer.ejs
│ ├── index.ejs # 首页
│ ├── services.ejs # 服务介绍页
│ ├── tracking.ejs # 物流查询页
│ └── contact.ejs # 联系我们页
├── app.js # 主应用文件
└── package.json
第1步:项目初始化
-
创建项目文件夹并初始化 npm。
mkdir express-yuantong cd express-yuantong npm init -y
-
安装必要的依赖。
# Express 框架 npm install express # EJS 模板引擎 npm install ejs # 用于解析 POST 请求体的中间件 npm install body-parser
第2步:编写主应用文件 app.js
这是整个应用的入口,负责设置服务器、配置中间件和定义路由。

(图片来源网络,侵删)
// app.js
const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');
const app = express();
const port = 3000;
// 配置 EJS 作为模板引擎
app.set('view engine', 'ejs');
// 设置模板文件的存放目录
app.set('views', path.join(__dirname, 'views'));
// 配置静态文件中间件 (CSS, JS, 图片等)
app.use(express.static(path.join(__dirname, 'public')));
// 配置 body-parser 中间件,用于解析 POST 请求
app.use(bodyParser.urlencoded({ extended: true }));
// 模拟数据 - 物流轨迹
const mockTrackingData = {
'YT123456789CN': [
{ time: '2025-10-27 10:30', status: '已签收', location: '上海市浦东新区张江高科技园区' },
{ time: '2025-10-27 08:15', status: '派送中', location: '上海市浦东新区营业点' },
{ time: '2025-10-26 22:50', status: '到达上海转运中心', location: '上海市转运中心' },
{ time: '2025-10-26 15:30', status: '已从杭州发出', location: '杭州市转运中心' },
{ time: '2025-10-26 10:00', status: '快揽收件', location: '杭州市西湖区网点' },
],
'YT987654321CN': [
{ time: '2025-10-26 18:00', status: '运输中', location: '北京市转运中心' },
{ time: '2025-10-26 09:00', status: '已从广州发出', location: '广州市转运中心' },
]
};
// 模拟数据 - 营业网点
const mockBranches = [
{ name: '上海浦东新区营业点', address: '上海市浦东新区张江高科技园区碧波路690号', phone: '021-12345678' },
{ name: '杭州西湖区营业点', address: '浙江省杭州市西湖区文三路 90 号', phone: '0571-87654321' },
{ name: '广州天河区营业点', address: '广东省广州市天河区天河路 123 号', phone: '020-11223344' },
];
// --- 路由 ---
// 首页
app.get('/', (req, res) => {
res.render('index');
});
// 服务介绍页
app.get('/services', (req, res) => {
res.render('services');
});
// 物流查询页 (GET请求,显示表单)
app.get('/tracking', (req, res) => {
res.render('tracking', { trackingInfo: null, error: null });
});
// 物流查询处理 (POST请求,处理表单提交)
app.post('/tracking', (req, res) => {
const trackingNumber = req.body.trackingNumber;
const info = mockTrackingData[trackingNumber];
if (info) {
res.render('tracking', { trackingInfo: info, error: null });
} else {
res.render('tracking', { trackingInfo: null, error: '未找到该运单号,请检查后重试。' });
}
});
// 营业网点查询页 (GET请求,显示表单)
app.get('/branches', (req, res) => {
res.render('branches', { branches: [], query: '' });
});
// 营业网点查询处理 (POST请求,处理表单提交)
app.post('/branches', (req, res) => {
const query = req.body.query.toLowerCase();
const filteredBranches = mockBranches.filter(branch =>
branch.name.toLowerCase().includes(query) ||
branch.address.toLowerCase().includes(query)
);
res.render('branches', { branches: filteredBranches, query: req.body.query });
});
// 联系我们页
app.get('/contact', (req, res) => {
res.render('contact');
});
// 启动服务器
app.listen(port, () => {
console.log(`圆通速递官网服务器正在运行,访问 http://localhost:${port}`);
});
第3步:创建视图文件 (EJS 模板)
1 公共组件 views/partials/header.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>
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<header>
<div class="container">
<div class="logo">
<h1>圆通速递</h1>
</div>
<nav>
<ul>
<li><a href="/">首页</a></li>
<li><a href="/services">服务介绍</a></li>
<li><a href="/tracking">运单查询</a></li>
<li><a href="/branches">网点查询</a></li>
<li><a href="/contact">联系我们</a></li>
</ul>
</nav>
</div>
</header>
<main class="container">
2 公共组件 views/partials/footer.ejs
</main>
<footer>
<div class="container">
<p>© 2025 圆通速递. All rights reserved.</p>
</div>
</footer>
</body>
</html>
3 首页 views/index.ejs
<%- include('partials/header', { title: '首页' }) %>
<section class="hero">
<h2>您的包裹,使命必达</h2>
<p>安全、快速、可靠的综合物流服务商</p>
</section>
<div class="features">
<div class="feature-card">
<h3>运单查询</h3>
<p>输入您的运单号,实时追踪包裹状态。</p>
<a href="/tracking" class="btn">立即查询</a>
</div>
<div class="feature-card">
<h3>服务网点</h3>
<p>查找离您最近的圆通营业网点。</p>
<a href="/
(图片来源网络,侵删)
标签: Express圆通官网查询快递方法 圆通快递官网单号查询入口 圆通快递官网跟踪物流信息
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。