当项目从几百行代码膨胀到几万行时,没有架构的代码会变成难以维护的「意大利面条」。前端架构解决的核心问题是:如何让代码可预测、可测试、可协作、可扩展。
// 阶段一:全局变量(噩梦)
window.userData = { name: 'Tom' };
// 阶段二:IIFE 沙箱
(function() {
var private = '内部变量';
window.module = { /* 暴露公共接口 */ };
})();
// 阶段三:CommonJS(Node.js)
const math = require('./math');
// 阶段四:ES Modules(现代标准)
import { formatDate } from './utils.js';
export const API_URL = 'https://api.example.com';
// Vite 配置
import { defineConfig } from 'vite';
export default defineConfig({
server: {
port: 3000,
proxy: { '/api': 'http://localhost:8080' },
},
build: {
outDir: 'dist',
rollupOptions: {
output: {
manualChunks: { vendor: ['react', 'react-dom'] },
},
},
},
});
class Store {
constructor(initialState = {}) {
this.state = initialState;
this.listeners = [];
}
getState() { return this.state; }
setState(updater) {
this.state = { ...this.state, ...updater };
this.listeners.forEach(fn => fn(this.state));
}
subscribe(fn) {
this.listeners.push(fn);
return () => { this.listeners = this.listeners.filter(l => l !== fn); };
}
}
const validators = {
required: (value) => value ? '' : '此项为必填',
email: (value) => /\S+@\S+\.\S+/.test(value) ? '' : '邮箱格式不正确',
minLength: (min) => (value) =>
value.length >= min ? '' : `最少${min}个字符`,
};
function validate(value, rules) {
for (const rule of rules) {
const error = rule(value);
if (error) return error;
}
return '';
}
// 单一职责:每个组件只做一件事
class UserInfo { /* 只管用户信息 */ }
class OrderList { /* 只管订单列表 */ }
// 组合优于继承
function withLoading(Component) {
return function LoadingWrapper(props) {
if (props.loading) return <div>加载中...</div>;
return <Component {...props} />;
};
}
src/
├── components/ # 通用组件
│ ├── Button/
│ └── Modal/
├── features/ # 业务模块(按功能划分)
│ ├── auth/
│ └── dashboard/
├── hooks/ # 自定义 hooks
├── utils/ # 纯函数工具
├── api/ # 接口请求封装
├── styles/ # 全局样式
└── App.jsx
# ESLint + Prettier 配置
module.exports = {
extends: ['eslint:recommended'],
rules: {
'no-unused-vars': 'error',
'prefer-const': 'error',
},
};
# Git 提交规范
feat: 新增用户登录功能
fix: 修复订单列表分页错误
refactor: 重构支付模块代码结构
前端架构不是一开始就设计出来的,而是在项目演进中逐步形成的。核心原则:模块化拆分、组件化封装、单一职责、关注点分离。先写能工作的代码,再持续重构到更好的架构。
🎉 恭喜你完成了全部 10 篇教程!从 HTML 基础到技术架构,你已经建立了完整的前端知识体系。