96SEO 2026-09-13 23:00 5
在前端开发中。设计模式是解决重复问题的 “通用模板”—— 它不直接提供可运行的代码,却能指导我们写出更易维护、可 的逻辑。按理说,是在大型项目中,合理运用设计模式能让代码结构更清晰,协作效率翻倍。

今天就带大家手撕前端最常用的7种设计模式。每种模式都从 “主要思想→实际使用场景→完整代码实现” 三个维度拆解,结合Vue、Axios等大家熟悉的库举例,让抽象的概念落地到真实开发中。
工厂模式的本质是用一个函数封装对象的创建逻辑外界无需关心对象的具体构造细节,只需调用工厂方法即可获取实例。说起来,就像工厂生产产品,你要一个 “手机”。工厂直接给你成品,不用管芯片、屏幕怎么组装。
Vue3 的createApp通过createApp.mount创建 Vue 实例。无需手动 new Vue,内部封装了实例初始化逻辑。Axios 的axios.create基于自定义配置创建新的 axios 实例,避免全局配置污染。
// 模拟Axios工厂:根据配置创建请求实例
class AxiosFactory {
// . 用静态方法作为公共接口
static create {
// 默认配置
const defaultConfig = {
baseURL: ''。timeout: 10000,headers: { 'Content-Type': 'application/json' }
};
// 合并使用者配置与默认配置
const finalConfig = { ...defaultConfig,...config };// 封装请求方法
const request = async => {
const { url。method = 'GET',data = {} } = options;try {
const response = await fetch(`${finalConfig.baseURL}${url}`,{
method。headers: finalConfig.headers,timeout: finalConfig.timeout,body: method === 'POST'?JSON.stringify : null
});return await response.json;} catch {
console.error;throw err,}
};// 返回封装后的请求实例
return {
至于get。=> request,post: => request
};
}
}
// . 使用场景演示
// 使用者API服务 - 不同baseURL和超时时间
const userApi = AxiosFactory.create({
baseURL: 'https://api.user.com',timeout: 8千
});
// 商品API服务 - 不同baseURL和headers
const orderApi = AxiosFactory.create({
baseURL: 'https://api.order.com',headers: { Authorization: 'Bearer token123' }
});
// 调用示例 - 不关心内部如何处理请求参数和响应数据转换
userApi.get.n);orderApi.post;
二、单例模式:确保全局只有一个实例
消除重复初始化
至于常见痛点。
-
多次new导致内存浪费
-
状态不一致风险
-
难以管理全局共享数据
主流框架中的应用:
-
从全局状态管理来看,整个应用只有一个Store实例。
-
弹窗组件这方面,多次调用不会重复渲染DOM。
-
EventBus事件总线。
javascript hljs language-JavaScript" lang="JavaScript"
class Singleton {
// . 私有属性存储唯一实例
static #instance;
constructor {
if {
throw new Error;
}
// 初始化一次性资源
this.initResource;
}
initResource {
console.log;话说回来,}
static getInstance {
if {
Singleton.#instance = new Singleton;}
return Singleton.#instance;}
}
// 项目入口处初始化单例
const appSingleton = Singleton.getInstance;
// 其他文件引入使用:
import singleton from './singleton';const sameInstance = singleton;怎么说呢,// 必须与appSingleton相同!
三、观察者模式:“一对多”的依赖通知机制
前端场景分析
至于常见问题,
-
跨组件通信繁琐
-
状态变更触发视图更新效率低
-
事件监听回调过多难以维护
javascript hljs language-javascript" lang="javascript"
class EventBusWithMemoryLeakFix extends EventBus {
on {
super.on;
// 添加到监控列表
this._watchList.push;
off {
if{
this._watchList.remove;话说回来,
} else {
function Component{
this.busSubscriptions=;
Component.prototype.destroy=function{
// 自动解除所有订阅防止内存泄漏
for{
bus.off;
sub.callback=null;话说回来,
sub.eventName=null;怎么说呢,
}
四、发布订阅模式 vs.观察者模式
架构级别差异这方面。
特性
观察者模式
发布订阅模式
耦合度
目标知道观察者存在
完全解耦
灵活性
固定关系难
动态添加/移除订阅
事件中心
不需要中间层
必须通过事件中心
典型应用
Vue响应程序
Redux/MobX
javascript hljs language-javascript" lang="javascript"
// Redux中间件示范
function loggerMiddleware{
return next=>action=>{
console.group;console.log,const result=next;console.log);console.groupEnd;return result;}
}
function crashReporterMiddleware{
return next=>action=>{
try{
return next;}catch{
console.error;}
}
五、原型模式 - 对象克隆技术详细说明
从深浅克隆比较来看,
javascript hljs language-javascript" lang="javascript"
function shallowClone{
return Object.assign;}
function deepClone{
if{
return source;}
const target=Array.isArray?:{},for{
if){
target=deepClone;}}
return target;}
// 测试案例:
const obj={
a:{
b:{
c:'value'
}}};const shallow=shallowClone;shallow.a.b.c='modified';//会影响原obj,
const deep=deepClone;deep.a.b.c='safe';//不会影响原obj,
六、代理模式 - 高级缓存策略调整方法
再看性能敏感场景,
html" lang="html"
。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback