在构建Vue应用程序时,我们在每个模板中重用某些Vue组件。我们的网格系统是由.region、.layout、.grid、.column元素组成的。它们都是单独的Vue组件( .)。
现在,我们在每个模板中都会这样做:
import BlMain from '~components/frame/main/Main.vue'
import BlRegion from '~components/frame/region/Region.vue'
import BlLayout from '~components/frame/layout/Layout.vue'
import BlGrid from '~components/frame/grid/Grid.vue'
import BlColumn from '~components/frame/column/Column.vue'有办法在项目中全局导入Vue组件吗?创建包含上述导入的组件Frame.vue并在每个模板中添加框架组件是一个选项吗?其他FE框架是如何解决这一问题的?
我们在Vue上使用Nuxt JS。
发布于 2017-06-12 14:41:47
您应该使用注册帐户的插件。
// plugins/bl-components.js
import Vue from 'vue'
import BlMain from '~components/frame/main/Main.vue'
import BlRegion from '~components/frame/region/Region.vue'
import BlLayout from '~components/frame/layout/Layout.vue'
import BlGrid from '~components/frame/grid/Grid.vue'
import BlColumn from '~components/frame/column/Column.vue'
const components = { BlMain, BlRegion, ... }
Object.entries(components).forEach(([name, component]) => {
Vue.component(name, component)
})// nuxt.config.js
export default {
plugins: ['~plugins/bl-components']
}发布于 2019-07-10 12:24:59
!!!始终以Base开头的组件命名,例如:BaseIcon.vue
import Vue from 'vue'
import upperFirst from 'lodash/upperFirst'
import camelCase from 'lodash/camelCase'
const requireComponent = require.context(
'~/components',
false,
/Base[A-Z]\w+\.(vue|js)$/
)
requireComponent.keys().forEach((fileName) => {
const componentConfig = requireComponent(fileName)
const componentName = upperFirst(
camelCase(fileName.replace(/^\.\/(.*)\.\w+$/, '$1'))
)
Vue.component(componentName, componentConfig.default || componentConfig)
})plugins: ['@plugins/global.js']<BaseIcon />来使用基本组件。发布于 2020-11-24 17:14:09
在您的nuxt.config.js中,将components设置为true。
https://nuxtjs.org/docs/2.x/configuration-glossary/configuration-components
https://stackoverflow.com/questions/43040692
复制相似问题