如果将 Spring Boot 的依赖注入(IOC)和面向切面编程(AOP)在前端实现,会碰撞出怎样有趣的火花?
前言
在现代开发中,依赖注入(IOC)和面向切面编程(AOP)是构建模块化、可维护代码的重要设计理念。IOC 通过将对象的依赖关系管理交由容器处理,减少了组件之间的耦合度,使代码更具扩展性;而 AOP 则以灵活的方式在不改变核心逻辑的前提下,实现如日志、事务等通用功能的横切关注点,提升了代码的可维护性和可复用性。
随着前端工程的日益复杂,将这些思想应用于前端开发,能为前端代码带来更强的模块化和解耦优势。博主尝试探索如何在前端实现这两大思想,期待为前端开发带来新的思路与启发。
在此,致谢所有为开源事业默默奉献的开发者们,感谢你们为技术社区带来的创新与推动力。
使用
创建容器
创建一个依赖注入容器 Container.js
创建切面
创建一个面向切换 Aspect.js
实现
输出:
为什么?
执行前打印的是一个空的数组[]
因为在调用userServiceWithAspect.getUser();方法的时候,未传入任何数据进去,而是在userService注册的时候,返回了该对象
同时返回的年龄为 age = 25
在after 执行之后的,可以对age进行更改,返回19
从而实现了一个环绕切面实现
表单案例
输出:
跟上面实现不同的是,为什么这里的before能打印出参数呢
因为在调用 validationServiceWithAspect.validate({ username: 'Alice', password: '12345' }); 传入了该对象,
所以执行之前能打印出来,
依次内推的思路,在before中修改我们对应想要的值
在after 修改对应的值,然后最后返回
实现了一个环绕切面
api 请求示例
输出:
组件示例
输出: