Vue 注册全局组件的方式
一、语法:Vue的实例.component("组件名称",组件)
1、方式一:这个组件就是 vue文件
import { createApp,h } from 'vue' //引入 创建vue实例的api
import App from './App.vue' //引入 根组件
let app = createApp(App) // 创建vue实例对象 =>用户vue实例给你提供的方法
console.log(app); //对象
import BackTop from './HeightComponent/BackTop.vue'
// 1vue 操作的 虚拟dom => js 对象
//注册全局组件
console.log(BackTop);
app.component('BackTops',BackTop)
app.mount('#app') //将vue 挂载到 html 指定的元素上
2、方式二:这个组件就是 对象
import { createApp,h } from 'vue' //引入 创建vue实例的api
import App from './App.vue' //引入 根组件
let app = createApp(App) // 创建vue实例对象 =>用户vue实例给你提供的方法
console.log(app); //对象
import BackTop from './HeightComponent/BackTop.vue'
// 1vue 操作的 虚拟dom => js 对象
// 2 vue的组件 解析成 一个对象 ={}
//注册全局组件
console.log(BackTop);
app.component('BackTops',{ // render => 就是将vnode 变成真实dom
// h 函数 =》 创建 vnode
//语法 h(元素名称 ,这个元素的数据,子集)
render(){
return h('h2',{id:'apps'},'同学',h('span',{},'111')) // =》<h2> <span><span></h2>
}
})
app.mount('#app') //将vue 挂载到 html 指定的元素上
3、单独创建文件,实现自动引入组件,自动注册全局组件
问题:在项目中注册的全局组件,会有很多,如果在这个mian.js中进行引入注册,代码很多
解决方法:单独创建文件,自动引入需要注册的组件
步骤一:
// 这个文件 就是自动给我们注册全局组件文件 // 自己写一个插件 app.use // app.use作用
// 注册插件的=》 就是我们自己写的一个方法和vue项目进行关联,在自己的放中可以使用vue 提到api //app.use 作用
//app.use(对象的形式) // 特点
//1 如果这个对象中有一个属性 install,这个install 属性的值是一个方法,会自动执行这个方法
// 并且这个方法的第一个参数就是当前vue 实例对象
//2 如果app.use这个 里面放的是一个方法,并且这个方法的第一个参数就是当前vue 实例对象,就是自定执行这个方法 // let obj = {
// install(App){
// console.log(1000,App); //使用vue 提供的方法
// }
// }
//引入组件 我这个插件 模块化=》 import BackTop from './BackTop.vue'
import Winput from './Winput.vue' let arrs = [
{
name:'BackTop',com:BackTop
},
{
name:'Winput',com:Winput
},
]
function obj(App){
console.log(66666,App); // 自动注册 全局组件 多个 =》数组
arrs.forEach((item)=>{
App.component(item.name,item.com)
}) } export default obj
步骤二:
//自动的方法
// require.context('文件路径','布尔值','正则') //语法:require.context('文件路径','布尔值','正则') //api 两个 keys() =>文件路径 =》数组结构 webpack(文件路径).default 这个文件内容
// function getArrs(){
let arrs = []
let webpacks= require.context('./',true,/\.vue/)
console.log(webpacks.keys()); webpacks.keys().forEach((item,index)=>{
// ./BackTop.vue
arrs.push({name:item.replace('./','').replace('.vue',''),com:webpacks(item).default})
}) return arrs } function obj(App){
console.log(66666,App); //1 自动获取到 arrs 结构 let comList = getArrs() console.log(comList); comList.forEach((item)=>{
App.component(item.name,item.com)
}) } export default obj
// 步骤三:在入口文件main.js中引入这个文件
import { createApp,h } from 'vue' //引入 创建vue实例的api
import App from './App.vue' //引入 根组件
// 3 引入文件暴露的内容
import obj from './HeightComponent/index.js'
import Wfonction from './HeightComponent/Wfonction'
let app = createApp(App) // 创建vue实例对象 =>用户vue实例给你提供的方法
console.log(app); //对象
// 3 全局注册组件
app.use( obj)
app.component('WfoN',Wfonction)
app.mount('#app') //将vue 挂载到 html 指定的元素上
Vue 注册全局组件的方式的更多相关文章
- vue 注册全局组件
注册全局组件有啥好处呢? 提高代码的复用性:哪里需要写哪里,贼方便,就写一个标签:减少代码量:可以再配合slot一起使用,咦~~,舒服 为了让整个项目的可读性,我创建一个文件统一存放全局组件 1.创建 ...
- VUE注册全局组件和局部组件
全局组件 第一步:在components文件夹下建立一个子文件Users.vue <template> <div class="users"> {{msg} ...
- vue注册全局组件
在项目开发中能不能自己写一个组件可以像iview或者element那样可以不必引用就可以直接用呢?答案是可以的. 首先,写一个组件mainHeader. 接着在vue中注册这个组件,代码如下: Vue ...
- 优雅的处理vue注册全局组件
使用情景: 有频繁使用的组件 需要进行全局注册 可以将这些组件都放在components下同一个文件夹下,在此文件夹中建立 一个js文件 代码如下: import Vue from 'vue'; // ...
- vue 自动注册全局组件
vue 自动注册全局组件 vue 注册全局组件的方式 const plugins = { install(Vue) { const requireComponent = require.context ...
- vue 中注册全局组件
1 全局注册组件 建一个 js 文件, 注册全局组件, 并且暴露出去 然后再在 main.js 中引入 在页面就可以直接使用了 2 全局注册过滤器 建立文件, 包含所有过滤器方法 ...
- vue 的全局组件和 局部组件
vue组件局部与全局注册的区别 //局部注册 var mycomponent = new extend({ <!--Vue.extend()是Vue构造器的扩展,调用Vue.e ...
- vue中全局组件与局部组件的注册,以及动态绑定props值
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vue 复习篇. 注册全局组件,和 组件库
初篇 ============================================================== 1. 编写loading组件(components/Loading/ ...
- vue(3)—— vue的全局组件、局部组件
组件 vue有局部组件和全局组件,这个组件后期用的会比较多,也是非常重要的 局部组件 template与components属性结合使用挂载 其中 Vmain.Vheader.Vleft.Vconte ...
随机推荐
- C#微信公众号关注二维码生成、密文方式
文章说明:是公众号使用自己服务器的处理的其中一篇关注二维码信息处理 1.流程 1.1 需知 全局返回码:这个必须要哦.不然调试的时候接口出的错误怎么处理呢. (闲话:博客的随笔只能添加也给超链呀, ...
- 英格索兰扳手网口通信协议EOR原理
前言 前几天遇到这个需求,需要记录扳手每一次的周期数据,但是我不知道通信协议是什么,只知道是一个tcp的连接,问售后,也不给我网口调试软件(英格索兰自己家的软件).经过我俩天的谷歌,终于找到了他们公司 ...
- jmeter ORA-00911: invalid character报错解决方法
今天通过jmeter进行Oracle数据库操作时,遇到一个小坑. 解决办法:去掉sql最后的分号.
- JS笔记合集之对象
对象 对象基本使用 对象是JS中的一种复合数据类型,它相当于一个容器,在对象中可以存储各种不同类型的数据 而基本数据类型(原始值)只能存储一些简单的数据,如: 语法: 原始创建对象: let obj ...
- Windows 服务器中使用 mysqldump 命令导出数据,解决中文乱码问题
起因 环境:阿里云服务器(windows server).mysql(8.0.11) mysql> select @@version; +-----------+ | @@version | + ...
- Maven工程提示 java:源值1.5已过时,将在未来所有发行版中删除 出现原因及解决方案(亲测好用)
原因:Maven工程默认使用Java1.5进行编译,想要不警告,需要在maven的pom文件中进行配置,同时在settings中进行配置 解决方案: <properties> <me ...
- 【每日一题】【比较中右,内部比较中右,注意边界带>=】2021年11月2日-搜索旋转排序数组-211102/220211
[某下标处进行了旋转]整数数组 nums 按升序排列,数组中的值 互不相同 . 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋 ...
- mysql基础问题三问(底层逻辑;正在执行;日志观察)
背景:经常面试会遇到且实际工作中也会应用到的三个场景: 目录: 一.mysql查询时的底层原理是什么? 二.如何查看正在执行的mysql语句? 三.如何观察mysql运行过程中的日志信息? - - - ...
- OpenJudge 1.8.11 图像旋转
11:图像旋转 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个n行m列的黑白图像,将它顺时针旋转90度后输出. 输入 第一行包含两个整数n和m,表示图像包含像素点的行数和列数. ...
- 正确理解和使用JAVA中的字符串常量池
前言 研究表明,Java堆中对象占据最大比重的就是字符串对象,所以弄清楚字符串知识很重要,本文主要重点聊聊字符串常量池.Java中的字符串常量池是Java堆中的一块特殊存储区域,用于存储字符串.它的实 ...