Webpack IOC ES6依赖注入器
Webpack 的依赖注入器太少见了,webpack-ioc-es6算是我最近用过比较顺手的一个。它基于 ES6 语法,配合 Webpack 打包,做依赖注入挺自然的,装饰器写起来也蛮清爽,逻辑清晰,不绕弯子。
@inject这种装饰器写法,不但省事,还让构造函数更干净。比如你要注入一个Service类,写成:
@inject(Service)
class MyClass {
  constructor(service) {
    this.service = service;
  }
}嗯,就这么一行,省去自己手动实例化的麻烦,响应也快,测试也更方便。尤其写单元测试时,直接换个 mock 扔进去就行。
它的原理也不复杂,Webpack 打包时扫描用到装饰器的类,动态生成注入代码,等你项目跑起来,依赖关系都已经安排妥了。你不用手动管谁是谁的依赖,框架自动帮你兜底。
框架本身还带了个简单项目示例,结构清楚,文档也够用,照着改一改就能跑。适合不想写一堆手动new和注入逻辑的你,尤其在大型项目里,这种方式对扩展性提升。
如果你平时习惯用 Webpack 打包 ES6 模块,又项目结构更松耦合,试试webpack-ioc-es6真的还挺香的。装饰器别看现在还在提案里,配合 Babel 或者 ts-loader 照样能跑得飞快。
另外推荐几篇相关内容,顺手看看也不错:
如果你正好在搭前端架构,又想省点力气管理依赖关系,不妨试试这个,挺省心。
                            
                            webpack-ioc-es6-master.zip
                            预估大小:28个文件
                        
                        
                        
                                
                                webpack-ioc-es6-master
                                文件夹
                            
                                                        
                                
                                .jshintrc
                                757B
                            
                                                        
                                
                                .gitignore
                                28B
                            
                                                        
                                
                                package.json
                                1KB
                            
                                                        
                                
                                src
                                文件夹
                            
                                                        
                                
                                games
                                文件夹
                            
                                                        
                                
                                g1
                                文件夹
                            
                                                        
                                
                                parent.spec.js
                                1KB
                            
                                                        
                                
                                part.js
                                64B
                            
                                                        
                                
                                parent.js
                                196B
                            
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                            
                            
                                                        
                                        
                                    文件大小:22.78KB
                                
                                
                                
                            
评论区