vue非单文件组件的使用

简介: vue非单文件组件的使用

全局注册组件

如果多个页面都需要使用这个组件,可以将这个组件注册为全局组件。

全局注册:利用 Vue.component('组件名', 组件) 配置全局组件,例如:

// 第二步:全局注册组件
Vue.component('FrameHead',FrameHead);

假设有两个页面,同时使用一个组件:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Vue2全局注册组件</title>
    <script src="./js/vue.js"></script>
  </head>
  <body>
    <!-- 页面一 -->
    <div id="APP1">
      <p>页面一</p>
      <my-code></my-code>
    </div>
    <hr/>
    <!-- 页面二 -->
    <div id="APP2">
      <p>页面二</p>
      <my-code></my-code>
    </div>
    <script>
      // 第一步:创建 MyCode 组件
      const MyCode = {
        template: `
          <div>
            <p>{{title}}</p>
          </div>
        `,
        data() {
          return {
            title: "你好呀!"
          }
        }
      }
      // 第二步:全局注册组件
      Vue.component('MyCode',MyCode);
      // 页面一的 Vue 实例
      const vm1 = new Vue({
        el: "#APP1"
      });
      // 页面二的 Vue 实例
      const vm2 = new Vue({
        el: "#APP2"
      });
    </script>
  </body>
</html>

:组件全局注册后,就不需要在 new Vue() 中再定义了,并且所有 Vue 实例都可以使用这个组件。

组件嵌套使用

创建子组件:

// 第一步:创建 crumbs 组件【子组件】
const crumbs = Vue.extend({
  template:`
    <div>
      <span v-for="(item,index) in list" :key="index"> {{item}} </span>
    </div>
  `,
  data(){
    return {
      list: ["首页","用户管理","商品管理","轮播图管理"]
    }
  }
})

创建父组件:

// 第一步:创建 frameHead 组件【父组件】
const frameHead = Vue.extend({
  template: `
    <div>
      <strong>{{title}}</strong>
      <span>{{username}}</span>
      <hr/>
      <crumbs></crumbs>
    </div>
  `,
  data() {
    return {
      title: "商城管理系统",
      username: "张三"
    }
  },
  // 注册子组件
  components: {
    crumbs
  }
})

:组件中也有 components 配置项,可以在组件中再注册子组件,并且将子组件写到当前的 template 模板中去使用。

创建 Vue 实例:

const vm = new Vue({
  el: "#APP",
  components: {
    frameHead
  }
});

:在 Vue 实例中不需要再注册子组件了

使用组件

<div id="APP">
  <frame-head></frame-head>
</div>

 

完整代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>vue2 组件嵌套使用</title>
    <script src="./js/vue.js"></script>
  </head>
  <body>
    <div id="APP">
      <frame-head></frame-head>
    </div>
    <script>
      // 第一步:创建 crumbs 组件【子组件】
      const crumbs = Vue.extend({
        template: `
          <div>
            <span v-for="(item,index) in list" :key="index"> {{item}} </span>
          </div>
        `,
        data() {
          return {
            list: ["首页", "用户管理", "商品管理", "轮播图管理"]
          }
        }
      })
      // 第一步:创建 frameHead 组件【父组件】
      const frameHead = Vue.extend({
        template: `
          <div>
            <strong>{{title}}</strong>
            <span>{{username}}</span>
            <hr/>
            <crumbs></crumbs>
          </div>
        `,
        data() {
          return {
            title: "商城管理系统",
            username: "张三"
          }
        },
        // 注册子组件
        components: {
          crumbs
        }
      })
      const vm = new Vue({
        el: "#APP",
        components: {
          frameHead
        }
      });
    </script>
  </body>
</html>

原创作者:吴小糖

创建时间:2023.5.13

相关文章
|
6天前
|
JavaScript
vue消息订阅与发布
vue消息订阅与发布
|
3天前
|
JavaScript
理解 Vue 的 setup 应用程序钩子
【10月更文挑战第3天】`setup` 函数是 Vue 3 中的新组件选项,在组件创建前调用,作为初始化逻辑的入口。它接收 `props` 和 `context` 两个参数,内部定义的变量和函数需通过 `return` 暴露给模板。`props` 包含父组件传入的属性,`context` 包含组件上下文信息。`setup` 可替代 `beforeCreate` 和 `created` 钩子,并提供类似 `data`、`computed` 和 `methods` 的功能,支持逻辑复用和 TypeScript 类型定义。
20 11
|
5天前
|
JavaScript
vue尚品汇商城项目-day07【vue插件-50.(了解)表单校验插件】
vue尚品汇商城项目-day07【vue插件-50.(了解)表单校验插件】
15 4
|
5天前
|
JavaScript
vue尚品汇商城项目-day07【51.路由懒加载】
vue尚品汇商城项目-day07【51.路由懒加载】
16 4
|
5天前
|
JavaScript
vue尚品汇商城项目-day07【vue插件-54.(了解)生成二维码插件】
vue尚品汇商城项目-day07【vue插件-54.(了解)生成二维码插件】
15 2
|
JavaScript 索引
VUE文件的创建
第一步创建完VUE 项目之后 可以根据自己的需求 创建自己的文件目录(下图是我的文件目录,当然每个人的创建目录的风格也是不同的所以不做严格的规范) 模块文生成    components文件夹下创建  模块文件名字.
797 0
|
8天前
|
JavaScript
vue组件中的插槽
本文介绍了Vue中组件的插槽使用,包括单个插槽和多个具名插槽的定义及在父组件中的使用方法,展示了如何通过插槽将父组件的内容插入到子组件的指定位置。
|
6天前
|
JavaScript 前端开发 IDE
Vue学习笔记5:用Vue的事件监听 实现数据更新的实时视图显示
Vue学习笔记5:用Vue的事件监听 实现数据更新的实时视图显示
|
6天前
|
JavaScript 前端开发 API
Vue学习笔记4:用reactive() 实现数据更新的实时视图显示
Vue学习笔记4:用reactive() 实现数据更新的实时视图显示
|
6天前
|
JavaScript 前端开发
Vue学习笔记8:解决Vue学习笔记7中用v-for指令渲染列表遇到两个问题
Vue学习笔记8:解决Vue学习笔记7中用v-for指令渲染列表遇到两个问题
下一篇
无影云桌面