创建全局组件
1.在mian.vue中,创建组件模板
<template><div class="test-card"><!-- @:表示从根路径到src, --><img src="@/assets/logo.png" alt="图片"><img src="../../../assets/logo.png" alt="图片"><img :src="getSrc(src)" alt="图片"><!-- 普通插槽 --><slot></slot><!-- 具名插槽 --><slot name="test"></slot></div></template><script>export default {// 给组件一个名字name:'test-card',props:{src:{type:String,default:""}},data(){return {newSrc:''}},methods:{getSrc(src){// 这里要使用require去引入,否则'@/assets/'这个不会被解析,会议原来的字符串内容显示return require('@/assets/'+src);}}}</script><style></style>
2.index.js
通过index.js将组件模板注册,并导出
import card from "./src/main.vue"// 给card添加一个新的install方法,将Vue作为参数传入// 通过这个方法执行Vue.component(card.name,card),将card注册为全局组件// Vue.component 参数1--组件名(在对应的main.vue中对应的name属性) 参数2--组件内容(组件本身)card.install = function(Vue) {Vue.component(card.name,card)}// 导出组件export default card;// 导出组件后再最外层的main.js文件中注册组件(全局组件),就可以使用了// 注册方式和注册第三方组件库一样,先引入组件,再通过Vue.use(引入组件名).就可以注册成功
3.注册全局组件
import Vue from 'vue'import App from './App.vue'import router from './router'import store from './store'// 注册自定义全局组件// 注册方式和下面的组件库一样import card from './components/card/index';Vue.use(card)// 引入ui库import Antd from 'ant-design-vue';// 引入ui库的样式import 'ant-design-vue/dist/antd.css';Vue.config.productionTip = false// 将Antd注册成组件Vue.use(Antd)new Vue({router,store,render: h => h(App)}).$mount('#app')
4.使用
<template><div class="user-manage"><a-layout-content:style="{ margin: '24px 16px', padding: '24px', background: '#fff', minHeight: '280px' }"><div>content</div><!-- 使用自定义组件时要通过name的值来作为组件名 --><test-card src= "logo.png"><!-- 使用普通插槽 --><div class="slots100">普通插槽</div><!-- 使用具名插槽 --><!-- 必须使用 template #具名插槽名 的形式才可以--><template #test>具名插槽</template></test-card></a-layout-content></div></template><script>export default {}</script><style></style>
