我使用了angularjs(1.x)和Vue的新内容.angular有DI
,在控制器中引用服务或模板中的指令很容易,无论服务或指令在哪里。Angular将帮助您自动注入它。
但我意识到 Vue 通过import(ES6)
组件所在的路径来引用组件。如果我在重构时(频繁)更改组件结构,则会丢失组件引用,我应该逐个修复路径。多麻烦啊。
我知道有像角度DI这样的vue-injector
,但是如果它易于使用吗?
Vue 没有提供任何正式的依赖注入机制。如何导入依赖项完全取决于您。
大多数 Vue 代码示例根本不使用依赖注入,只是通过import
和export
使用 ES6 模块系统。
如果我在重构时(频繁)更改组件结构,则会丢失组件引用,我应该逐个修复路径。多麻烦啊。
您可能不应该经常更改目录结构。查看 Vue webpack 模板,了解如何正确构建 Vue 项目的示例。
话虽如此,它并没有真正回答你的问题。您是否正在使用 webpack(或类似的东西)?您可以通过解析配置属性精确配置 webpack 应如何定位模块,这样您就不必使用相对导入路径。
另一种方法是全局注册每个 Vue 组件,这样你根本不需要导入它们。
另一种方法是滥用 ES6 模块,例如创建一个components.js
模块,该模块导入每个 Vue 组件(无论它们在哪里)并从该模块导出所有组件。现在,您只需要从该中央模块导入,而不是寻找要导入的每个内容的特定模块位置。
// components.js
import Button from 'path/to/button.vue';
import Alert from 'path/to/alert.vue';
export {
Button,
Alert,
};
// myform.js
import { Button } from 'path/to/components.js';
如果更改button.vue
的位置,则只需从components.js
文件内部更新导入。
如果您认为要进行大量重组,则可以拥有一个每个人都导入的文件,然后导入所有其他文件,这样您只需在一个地方进行更改。
我个人更喜欢导入而不是依赖注入,更容易理解所有内容的来源。