项目概述
继上一个实战项目《企业级绩效考核系统设计与实现:基于FastAPI + Vue3的全栈解决方案》,作者想继续“直播”第二个企业级项目从0搭建的过程。
本项目前端是基于Vue 3 + Vite + Tailwind CSS,后端基于JeecgBoot开源框架进行开发的企业级门户网站,主要用于金融科技领域的内容展示和信息分享。
下面内容将是每天的工作内容,如有纰漏请各位同学指正。
项目前端效果(静态页面访问地址:http://39.106.60.214:8000):
编辑
开发环境搭建
1. 项目初始化
使用Vite创建Vue 3项目:
npm create vite@latest fintech-vue3 -- --template vue
cd fintech-vue3
npm install
2. 依赖安装
安装Tailwind CSS和相关依赖:
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
3. 配置Tailwind CSS
修改tailwind.config.js文件:
/** @type {import('tailwindcss').Config} */
export default {
content: [
"./index.html",
"./src/**/*.{vue,js,ts,jsx,tsx}",
],
theme: {
extend: {
colors: {
bank: {
primary: '#1a56db',
secondary: '#0e7490',
accent: '#f59e0b',
success: '#059669',
}
},
fontFamily: {
sans: ['Inter', 'PingFang SC', 'Microsoft YaHei', 'sans-serif'],
}
},
},
plugins: [],
}
修改src/style.css文件:
@tailwind base;
@tailwind components;
@tailwind utilities;
.bank-gradient {
background: linear-gradient(135deg, #1a56db 0%, #0e7490 100%);
}
.bank-card-shadow {
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
}
.bank-hover-lift {
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.bank-hover-lift:hover {
transform: translateY(-2px);
box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
}
.ad-container {
background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
border: 1px dashed #cbd5e1;
}
.scrollbar-hide::-webkit-scrollbar {
display: none;
}
.scrollbar-hide {
-ms-overflow-style: none;
scrollbar-width: none;
}
/* Banner Animation */
.banner-slide {
opacity: 0;
transition: opacity 0.7s ease-in-out;
position: absolute;
inset: 0;
}
.banner-slide.active {
opacity: 1;
z-index: 10;
}
/* Progress Bar Animation */
@keyframes progress {
from { width: 0%; }
to { width: 100%; }
}
.progress-bar {
animation: progress 5s linear infinite;
}
/* News Scroll */
.news-container {
scroll-behavior: smooth;
}
页面结构搭建
1. 整体布局
采用响应式网格布局,主要分为头部、主内容区和页脚三部分:
- 头部:包含Logo、导航菜单和搜索框
- 主内容区:包含轮播图、广告位、快捷导航、精选文章、热门分类、金融科技每日速递和侧边栏
- 页脚:包含网站信息、技术领域、职场指南、关于我们和版权信息
2. 组件结构
App.vue
├── 头部导航
├── 主内容区
│ ├── 轮播图
│ ├── 广告位
│ ├── 快捷导航
│ ├── 精选文章
│ ├── 热门分类
│ ├── 金融科技每日速递
│ └── 侧边栏
│ ├── 广告位
│ ├── 作者信息
│ ├── 热门标签
│ └── 最新评论
└── 页脚
功能开发
1. 轮播图功能
实现了自动轮播和手动控制功能:
// 初始化轮播图
function initBannerSlider() {
const slides = document.querySelectorAll('.banner-slide');
const dots = document.querySelectorAll('.banner-dot');
const prevBtn = document.querySelector('.banner-prev');
const nextBtn = document.querySelector('.banner-next');
let currentSlide = 0;
function showSlide(index) {
slides.forEach((slide, i) => {
slide.classList.remove('active');
dots[i].classList.remove('active');
dots[i].classList.remove('w-8');
dots[i].classList.add('w-2');
});
slides[index].classList.add('active');
dots[index].classList.add('active');
dots[index].classList.add('w-8');
}
function nextSlide() {
currentSlide = (currentSlide + 1) % slides.length;
showSlide(currentSlide);
}
function prevSlide() {
currentSlide = (currentSlide - 1 + slides.length) % slides.length;
showSlide(currentSlide);
}
// 自动轮播
setInterval(nextSlide, 5000);
// 手动控制
prevBtn?.addEventListener('click', prevSlide);
nextBtn?.addEventListener('click', nextSlide);
dots.forEach((dot, index) => {
dot.addEventListener('click', () => {
currentSlide = index;
showSlide(currentSlide);
});
});
}
2. 移动菜单功能
实现了响应式移动菜单:
// 移动菜单状态
const mobileMenuOpen = ref(false);
// 切换移动菜单
function toggleMobileMenu() {
mobileMenuOpen.value = !mobileMenuOpen.value;
}
3. 图标初始化
集成了Lucide Icons:
// 初始化Lucide图标
onMounted(() => {
if (window.lucide) {
window.lucide.createIcons();
}
// 初始化轮播图
initBannerSlider();
});
样式设计
1. 配色方案
采用金融科技领域常用的蓝色系配色:
- 主色:
#1a56db(深蓝色) - 辅助色:
#0e7490(青色) - 强调色:
#f59e0b(橙色) - 成功色:
#059669(绿色)
2. 排版设计
- 标题:使用
font-semibold和较大字号 - 正文:使用
text-slate-600和适中字号 - 辅助文字:使用
text-slate-400和较小字号
3. 响应式设计
- 移动端:单列布局,菜单折叠
- 平板:双列布局,适当调整间距
- 桌面:三列布局,完整展示所有内容
问题解决
1. Tailwind CSS配置问题
问题:使用Tailwind CSS v4时出现PostCSS配置错误
解决方案:
- 降级到Tailwind CSS v3.4.1
- 修改
postcss.config.js文件:
export default {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}
2. 布局调整
问题:统计信息栏位置不当
解决方案:将统计信息栏从顶部移动到页脚的版权信息下面
问题:轮播图高度过高
解决方案:将轮播图高度调整为原来的2/3左右:
- 移动端:从380px调整为250px
- 平板:从420px调整为280px
- 桌面:从450px调整为300px
问题:侧边栏与主内容区底部不齐平
解决方案:在最新评论部分添加第4条评论,确保其底部与“金融科技 · 每日速递”的底部齐平
项目结构
fintech-vue3/
├── public/
├── src/
│ ├── assets/
│ ├── components/
│ ├── App.vue
│ ├── main.js
│ └── style.css
├── index.html
├── package.json
├── postcss.config.js
├── tailwind.config.js
└── vite.config.js
开发成果
- ✅ 响应式布局设计
- ✅ 轮播图功能(自动播放+手动控制)
- ✅ 移动菜单功能
- ✅ 图标集成
- ✅ 页面结构搭建
- ✅ 样式设计和实现
后续计划
-
功能优化:
- 添加更多交互功能
- 优化轮播图性能
- 实现搜索功能
-
内容完善:
- 添加更多文章内容
- 完善侧边栏信息
- 增加更多分类和标签
-
性能优化:
- 图片懒加载
- 代码分割
- 缓存策略
-
部署上线:
- 构建优化
- 部署到服务器
- 域名配置
总结
第一天的开发工作主要完成了项目的初始化、环境搭建、页面结构搭建和基础功能实现。通过使用Vue 3 + Vite + Tailwind CSS技术栈,成功创建了一个现代化的企业级门户网站,实现了响应式设计和核心功能。后续将继续完善功能和优化性能,确保网站的用户体验和性能表现。