我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue组件如何自动按需引入详析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vue组件如何自动按需引入详析

在Vue中我们可以通过全局组件、局部注册的方式来使用组件

全局注册

通过app.component来创建全局组件


import { createApp } from 'vue'
import HelloWorld from './components/HelloWorld'

const app = createApp({})

// 全局注册一个名为hello-wolrd的组件
app.component('hello-wolrd', HelloWorld);

一旦我们全局注册了组件,我们就可以在任何地方使用这个组件:<hello-wolrd/>

值得注意的是全局注册会使Vue失去TypeScript的支持, Vue 3 有一个 PR 扩展了全局组件的接口。目前,Volar 已经支持这种用法,我们可以通过在根目录添加components.d.ts文件的方式来添加全对局组件的TypeScript的支持


declare module 'vue' {
  export interface GlobalComponents {
    HelloWorld: typeof import('./class="lazy" data-src/components/HelloWorld.vue')['default']
  }
}

局部注册

我们可以直接从文件中引入vue组件使用,

在单文件组件中(SFC)


<template>
  <HelloWorld msg="Welcome to Your Vue.js App"/>
</template>

<script>
import HelloWorld from './components/HelloWorld.vue'

export default {
  name: 'App',
  components: {
    HelloWorld
  }
}
</script>

在JSX中


import HelloWolrd from './components/HelloWorld.vue'
export default {
  name: "item",
  render(){
    return (
      <HelloWolrd msg="Welcome to Your Vue.js App"/>
    )
  }
}

局部注册的组件在其他组件中无法访问,在其父组件或子组件或中均不可用,所以你需要在每个使用该组件的地方重新引入并注册该组件


import HelloWolrd from './components/HelloWorld.vue'

但是这种直接导入组件的方式还有一个好处,如果我们导入的组件使用了typescript,我们无需任何插件就可以在组件中获得智能提示和类型检查的功能

局部自动注册

可以看到局部注册的优点是比较明显的,但是每次使用我们都需要重复导入,但是如果你的组件很多,你的组件注册代码看起来可能比较冗长,我们可以使用unplugin-vue-components,自动按需导入组件. 它会按需导入组件,但是不再需要导入和组件注册

该插件会自动对使用的组件生成一个components.d.ts从而获得TypeScript的支持,

安装插件

vite


// vite.config.ts
import Components from 'unplugin-vue-components/vite'

export default defineConfig({
  plugins: [
    Components({  }),
  ],
})

rollup


// rollup.config.js
import Components from 'unplugin-vue-components/rollup'

export default {
  plugins: [
    Components({  }),
  ],
}

webpack


// webpack.config.js
module.exports = {
  
  plugins: [
    require('unplugin-vue-components/webpack')({  })
  ]
}

然后我们可以像往常一样在模板中使用组件,它会自动进行下面的转换


<template>
  <div>
    <HelloWorld msg="Hello Vue 3.0 + Vite" />
  </div>
</template>

<script>
export default {
  name: 'App'
}
</script>

转换成


<template>
  <div>
    <HelloWorld msg="Hello Vue 3.0 + Vite" />
  </div>
</template>

<script>
import HelloWorld from './class="lazy" data-src/components/HelloWorld.vue'

export default {
  name: 'App',
  components: {
    HelloWorld
  }
}
</script>

默认它会在class="lazy" data-src/components目录下查找组件,我们可以通过dirs参数来自定义组件目录,其他配置参考github.com/antfu/unplu…

不同方案对比

全局注册 局部注册 unplugin-vue-components
TypeScript支持 定义components.d.ts文件 默认支持 自动生成components.d.ts文件
组件作用域 全局 局部 局部
使用方法 全局注册后使用 局部注册后使用 添加插件后使用

关于组件名

定义组件名的方式有两种:

使用 kebab-case:


Vue.component('my-component-name', {  })
当使用 kebab-case (短横线分隔命名)定义一个组件时,
你也必须在引用这个自定义元素时使用 kebab-case,例如 <my-component-name>。

使用 驼峰命名法PascalCase


Vue.component('MyComponentName', {  })
当使用 PascalCase (首字母大写命名) 定义一个组件时,
你在引用这个自定义元素时两种命名法都可以使用。
也就是说 <my-component-name> 和 <MyComponentName>都是可接受的。
注意,尽管如此,直接在 DOM (即非字符串的模板) 中使用时只有 kebab-case 是有效的。

所以我们一般建议组件都采用kebab-case这种命名方式。

参考

v3.cn.vuejs.org/guide/compo…

v3.cn.vuejs.org/guide/types…

github.com/antfu/unplu…

总结

到此这篇关于Vue组件如何自动按需引入的文章就介绍到这了,更多相关Vue组件自动按需引入内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vue组件如何自动按需引入详析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Vue组件怎么自动按需引入

这篇文章主要为大家展示了“Vue组件怎么自动按需引入”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue组件怎么自动按需引入”这篇文章吧。在Vue中我们可以通过全局组件、局部注册的方式来使用组件
2023-06-22

Vue3+Element Plus按需引入(自动导入)详解

element-plus根据官网文档,推荐用户采用按需导入的方式进行导入,下面这篇文章主要给大家介绍了关于Vue3+Element Plus按需引入(自动导入)的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2022-11-13

vue3怎么集成Element-plus实现按需自动引入组件

本文小编为大家详细介绍“vue3怎么集成Element-plus实现按需自动引入组件”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue3怎么集成Element-plus实现按需自动引入组件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢
2023-07-02

vue如何按需加载组件

Vue按需加载组件按需加载组件有助于优化Web应用程序性能,减少初始加载时间,提高响应能力。Vue提供代码分割和异步组件两种方法:代码分割:将应用程序拆分为小块,按需加载。异步组件:使用动态加载,在需要时加载组件。按需加载的优点包括:减少初始加载时间、提高响应能力和降低内存使用。但要注意初始加载代价、路由和缓存。最佳实践是仅对大型或不常用组件使用按需加载,并结合代码分割和异步组件。
vue如何按需加载组件
2024-04-26

webpack怎么打包一个按需引入的vue组件库

这篇文章给大家分享的是有关webpack怎么打包一个按需引入的vue组件库的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在项目中使用vue组件库的一般姿势1、通过import引入,并在入口文件main.js里使用
2023-06-29

编程热搜

目录