首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue-Loader -导入导入组件的文件

Vue-Loader -导入导入组件的文件
EN

Stack Overflow用户
提问于 2017-05-08 11:41:45
回答 2查看 1.4K关注 0票数 1

我将Vue组件从语义UI CSS框架中提取出来。我想要做的是创建一个导入所有组件的semantic.js (或者semantic.vue)文件,然后在semantic.vue文件中导入这个semantic.js文件。

换句话说,如下所示:

src/components/semantic.js

代码语言:javascript
复制
import Label from ./elements/Label.vue
import Icon from ./elements/Icon.vue
import Divider from ./elements/Divider.vue

// Am I supposed to export these?  If so, how?   

src/main.js

代码语言:javascript
复制
import Semantic from ./components/semantic.js 

new Vue({
  el: '#app',

  components: {
    Label,
    // Icon,
    Divider
   }

})

我的目标是能够从main.js文件中决定要包含哪些组件,以及哪些组件不需要将文件与所有导入语句混合在一起。

对如何做这件事有什么想法或建议吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-08 13:37:38

我会这样做的,在全球范围内注册组件:

代码语言:javascript
复制
['Label', 'Icon', 'Divider']
.map(c => Vue.component(c, require(`./elements/${c}.vue`)));

如果你是忍者,不喜欢创建和维护注册文件(如另一个答案所建议的那样),那可能没问题。

更高级的是,您还可以围绕这段代码进行一些舞蹈,以便在Vue实例级别上实际注册组件。每个人都会喜欢的:

代码语言:javascript
复制
new Vue({
  el: '#app',
  components: {
    Object.assign({},
    ...['Label', 'Icon', 'Divider']
    .map(c => { return { [c]: require(`./elements/${c}.vue`) }; }))
   }

});

增编:为多个文件夹添加了一个解决方案,因为您要求它(因为这很有趣),但实际上它开始看起来更像垃圾而不是天才。即使是有角度的用户也不想使用这种语法:

代码语言:javascript
复制
Object.assign({}, ([].concat(...([
    ['elements', ['Label', 'Icon', 'Divider']],
    ['otherFolder', ['Bla', 'Blabla', 'Blablabla']],
    ['otherFolder/whoop', ['OtherThing', 'Foo', 'Bar']]
].map(c => c[1].map(m => { return { [m]: require(`./${c[0]}/${m}.vue`) }; })))
)));

也许你应该考虑做一个函数,或者,按照另一个人说的去做。

票数 3
EN

Stack Overflow用户

发布于 2017-05-08 12:06:17

您应该能够通过以下方式导出这些组件:

代码语言:javascript
复制
import Label from ./elements/Label.vue
import Icon from ./elements/Icon.vue
import Divider from ./elements/Divider.vue

export Label
export Icon
export Divider

然后在.vue中选择要导入的组件:

代码语言:javascript
复制
import { Label, Divider } from ./components/semantic.js 

new Vue({
  el: '#app',

  components: {
    Label,
    Divider
   }

})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43846754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档