目录
全局组件
局部组件
动态组件
异步组件
首页 常见问题 vue有几大组件

vue有几大组件

Dec 13, 2022 pm 07:02 PM
vue 组件 vue3

vue有4大组件:1、全局组件,用“app.component(...)”方法来注册全局组件,全局组件可在应用的任何组件模板中使用。2、局部组件,是在一个(父)组件中的“components”选项中注册的组件。3、动态组件,指根据给属性is绑定值的不同来渲染不同名称的组件。4、异步组件,在加载页面时并不立即渲染,而是要等带一些业务逻辑完成后,才会执行组件内的逻辑和渲染到页面上。

vue有几大组件

本教程操作环境:windows7系统、vue3版,DELL G3电脑。

Vue 的组件本质上是一个具有预定义选项的实例,我们使用小型的、独立和通常可复用的组件,通过层层拼装,最终形成了一个完整的页面。

组件必须先注册以便 Vue 应用能够识别,有两种组件的注册类型:

<ul>
  • 全局注册
  • 局部注册
  • 全局组件

    (在根组件中)使用 方法app.component('component-Name', {}) 来注册全局组件,全局注册的组件可以在应用中的任何组件的模板中使用。(学习视频分享:vuejs入门教程编程基础视频

    其中第一个参数时组件名,推荐遵循 W3C 规范中的自定义组件名(避免与当前以及未来的 HTML 元素发生冲突):字母全小写必须包含一个连字符。第二个参数是组件的配置选项。

    const app = Vue.createApp();
    app.component(&#39;my-component&#39;, {
        template: `<h1>Hello World!</h1>`
    });
    const vm = app.mount(&#39;#app&#39;)
    登录后复制

    ⚠️ 全局组件虽然可以方便地在各种组件中使用(包括其各自的内部),但是这可能造成构建项目时体积增大,用户下载 JavaScript 的无谓增加。

    需要在app.mount(&#39;#app&#39;) 应用挂载到 DOM 之前进行全局组件的注册

    局部组件

    在一个(父)组件中组件的 components 选项中注册的组件。

    这些子组件通过一个普通的 JavaScript 对象来定义,其接收的参数和全局组件一样,但是它们只能在该父组件中使用,称为局部组件。

    对于 components 对象中的每个 property 来说,其 property 名就是自定义元素的名字,其 property 值就是这个组件的选项对象。

    const ComponentA = {
      /* ... */
    }
    const ComponentB = {
      /* ... */
    }
    const ComponentC = {
      /* ... */
    }
    登录后复制
    // 然后在父组件的 `components` 选项中定义你想要使用的组件
    const app = Vue.createApp({
      components: {
        &#39;component-a&#39;: ComponentA,
        &#39;component-b&#39;: ComponentB
      }
    })
    登录后复制

    动态组件

    动态组件指根据给属性 is绑定值的不同来渲染不同名称的组件。

    内置的标签 <component :is="componentName />" 用以动态显式不同的组件,通过控制绑定在属性 is 上的参数值,即可显示相应的同名组件。

    属性 is 可以是:

    <ul>
  • 已注册组件的名字
  • 一个组件的选项对象
  • 有时候为了在切换时,保存动态组件的状态,例如组件中的输入框的值,可以用标签 <keep-alive></keep-alive> 包裹动态组件

    属性 is 还可以用于解决 HTML 元素嵌套的规则限制,将它应用到原生的 HTML 标签上,它的值就是组件名,这样原生标签实际渲染出来的内容就是组件。

    因为对于 <ul><ol><table><select> 这些元素,其内部允许放置的直接子元素是有严格限制的,如果嵌入其他元素会被视为无效的内容,而提升到外部造成最终渲染问题。但如果我们需要在这些元素中使用组件作为直接子元素,则可以在「合法」的子元素上使用属性 is,指定渲染的实际内容,这时属性 is 用在原生的 HTML 元素上,如 <tr> 其值 需要使用 vue: 作为前缀,以表示解析的实际上是一个 Vue 组件

    <table>
      <tr is="vue:blog-post-row"></tr>
    </table>
    登录后复制

    但以上限制只是在 HTML 中直接使用 Vue 模板时才会遇到,如果是在一下前进使用模板就没有这种限制:

    <ul>
  • 字符串,例如 template: &#39;...&#39;
  • 单文件组件 .vue
  • <script type="text/x-template">
  • 异步组件

    现在的大型网页往往需要异步获取不同的数据,Vue 有一个 defineAsyncComponent 方法定义异步组件,以优化应用的加载和用户体验。

    异步组件在加载页面时并不立即渲染,而是要等带一些业务逻辑完成后,才会执行组件内的逻辑和渲染到页面上。

    // 全局组件
    app.component(&#39;async-example&#39;, Vue.defineAsyncComponent(() => {
      return new Promise((resolve, reject) => {
        resolve({
          template: &#39;<div>I am async!</div>&#39;
        })
      })
    }))
    
    // 局部组件
    import { createApp, defineAsyncComponent } from &#39;vue&#39;
    
    createApp({
      // ...
      components: {
        AsyncComponent: defineAsyncComponent(() => {
          return new Promise((resolve, reject) => {
            resolve({
              template: &#39;<div>I am async!</div>&#39;
            })
          })
        })
      }
    })
    登录后复制

    异步组件的注册和一般的同步组件类似,如果是注册全局组件,也是使用 app.component()进行注册,不过第二个参数使用 Vue.defineAsyncComponent() 方法告诉 Vue 应用该组件是异步组件

    defineAsyncComponent() 方法的参数是一个匿名函数,而且函数是返回一个 Promise。在 Promise 内应该 resovlve({}) 一个对象,其中包含了构建组件相关配置参数。只有当 Promise resolvereject 才执行异步组件的处理。

    (学习视频分享:vuejs入门教程编程基础视频

    以上是vue有几大组件的详细内容。更多信息请关注PHP中文网其他相关文章!

    本站声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    Video Face Swap

    Video Face Swap

    使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

    热工具

    记事本++7.3.1

    记事本++7.3.1

    好用且免费的代码编辑器

    SublimeText3汉化版

    SublimeText3汉化版

    中文版,非常好用

    禅工作室 13.0.1

    禅工作室 13.0.1

    功能强大的PHP集成开发环境

    Dreamweaver CS6

    Dreamweaver CS6

    视觉化网页开发工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神级代码编辑软件(SublimeText3)

    热门话题

    Java教程
    1663
    14
    CakePHP 教程
    1420
    52
    Laravel 教程
    1315
    25
    PHP教程
    1266
    29
    C# 教程
    1239
    24
    vue中怎么用bootstrap vue中怎么用bootstrap Apr 07, 2025 pm 11:33 PM

    在 Vue.js 中使用 Bootstrap 分为五个步骤:安装 Bootstrap。在 main.js 中导入 Bootstrap。直接在模板中使用 Bootstrap 组件。可选:自定义样式。可选:使用插件。

    vue怎么给按钮添加函数 vue怎么给按钮添加函数 Apr 08, 2025 am 08:51 AM

    可以通过以下步骤为 Vue 按钮添加函数:将 HTML 模板中的按钮绑定到一个方法。在 Vue 实例中定义该方法并编写函数逻辑。

    vue中的watch怎么用 vue中的watch怎么用 Apr 07, 2025 pm 11:36 PM

    Vue.js 中的 watch 选项允许开发者监听特定数据的变化。当数据发生变化时,watch 会触发一个回调函数,用于执行更新视图或其他任务。其配置选项包括 immediate,用于指定是否立即执行回调,以及 deep,用于指定是否递归监听对象或数组的更改。

    vue多页面开发是啥意思 vue多页面开发是啥意思 Apr 07, 2025 pm 11:57 PM

    Vue 多页面开发是一种使用 Vue.js 框架构建应用程序的方法,其中应用程序被划分为独立的页面:代码维护性:将应用程序拆分为多个页面可以使代码更易于管理和维护。模块化:每个页面都可以作为独立的模块,便于重用和替换。路由简单:页面之间的导航可以通过简单的路由配置来管理。SEO 优化:每个页面都有自己的 URL,这有助于搜索引擎优化。

    vue返回上一页的方法 vue返回上一页的方法 Apr 07, 2025 pm 11:30 PM

    Vue.js 返回上一页有四种方法:$router.go(-1)$router.back()使用 &lt;router-link to=&quot;/&quot;&gt; 组件window.history.back(),方法选择取决于场景。

    React与Vue:Netflix使用哪个框架? React与Vue:Netflix使用哪个框架? Apr 14, 2025 am 12:19 AM

    NetflixusesAcustomFrameworkcalled“ Gibbon” BuiltonReact,notReactorVueDirectly.1)TeamExperience:selectBasedAsedonFamiliarity.2)ProjectComplexity:vueforsimplerprojects,vueforsimplerprojects,reactforforforecomplexones.3)cocatizationNeedsneeds:reactofficatizationneedneeds:reactofferizationneedneedneedneeds:reactoffersizatization needeffersefersmoreflexiblesimore.4)ecosyaka

    vue.js怎么引用js文件 vue.js怎么引用js文件 Apr 07, 2025 pm 11:27 PM

    在 Vue.js 中引用 JS 文件的方法有三种:直接使用 &lt;script&gt; 标签指定路径;利用 mounted() 生命周期钩子动态导入;通过 Vuex 状态管理库进行导入。

    vue遍历怎么用 vue遍历怎么用 Apr 07, 2025 pm 11:48 PM

    Vue.js 遍历数组和对象有三种常见方法:v-for 指令用于遍历每个元素并渲染模板;v-bind 指令可与 v-for 一起使用,为每个元素动态设置属性值;.map 方法可将数组元素转换为新数组。