vue之异步组件以及vue-cli无法使用template定义局部组件

news/2024/7/10 1:07:11 标签: vue

vuejs_0">使用外部引入整个vue.js

<body>
    <div id="app">
      <button @click="compone='lisi'">lisi</button>
      <button @click="compone='zs'">zs</button>
      <!-- 不加keep-alive组件不会进行缓存   切换时组件会被销毁-->
      <!-- <component :is="compone"></component> -->
      <!-- 加keep-alive组件会进行缓存   切换时组件不会被销毁-->
      <keep-alive>
        <component :is="compone"></component>
      </keep-alive>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
    <script>
     var vm = new Vue({
        el: "#app",
        data: {
          compone: "lisi",
        },
        components: {
          lisi: {
            template: `<h1>lisi</h1>`,
            destroyed() {
              console.log("被销毁了");
            },
          },
          zs: {
            template: `<h1>zhangsan</h1>`,
          },
        },
      });
    </script>
  </body>

通常当我们从官网引入vue.js的时候这段代码是可以正常运行的,
但是,当我们在vue-cli的script中在通过这种方式注册组件的时候会报错

<template>
  <div>
    <my-components></my-components>
  </div>
</template>
<script>
export default {
  componts: {
    "my-components": {
      template: `<div>hello world</div>`,
    },
  },
};
</script>

报错原因是为什么呢: 主要是因为第一个我们引用的时vue.js文件,运行时也是依赖的vue.js的整个文件,而vue-cli运行时引用的时什么文件呢,从报错中可以看到提示中时从vue.runtime.js中报的错误,所以我们可以看出来,vue-cli引用的文件是vue.runtime.js文件,可以再node_modules中找到此文件。所以这就是报错原因,那么如何在单文件组件中使用局部的自定义组件呢,使用的就是异步组件:
1.创建一个单文件组件名为 my-async-component.vue

//简单定义个单文件组件
<template>
  <div>hello world</div>
</template>

2.在另外一个单文件组件中使用路由懒加载方式进行使用

<template>
  <div>
    <my-components></my-components>
  </div>
</template>
<script>
export default {
  componts: {
    // 不要使用这种方式
    // "my-components": {
    //   template: `<div>hello world</div>`,
    // },
    // 用路由懒加载加载方式
    "my-components": () => import("./my-async-component"),
  },
};
</script>

http://www.niftyadmin.cn/n/1206111.html

相关文章

RPA之家NICE视频教程

【RPA之家NICE视频教程1】Excel Functionality in NICE APA https://www.bilibili.com/video/BV15a4y1v755 【RPA之家NICE视频教程2】JSON Parsing example solution, guidelines and best practices https://www.bilibili.com/video/BV1fk4y167or 【RPA之家NICE视频教程3】MS …

vue之keep-alive

在home首页 <template><div>首页<router-link to"/list">跳转列表</router-link></div> </template> <script> export default {}; </script> <style lang"less" scoped></style>商品列表 …

linux环境下给python添加tab自动补齐

Pthon开发环境有很多种&#xff0c;可以使用IDE环境&#xff0c;比如eclipse&#xff0c;charm。也可以在linux下使用ipython&#xff0c;使用ipython就是因为有自动补全功能。当然也可以在linux环境下使用原生的python添加Tab补齐&#xff0c;也就实现了ipython的功能。只需要…

RPA开发前景

在2019年RPA借着人工智能的东风一路正向发展&#xff0c;得到了越来越多企业的持续关注&#xff0c;并顺利走向爆发期。在短短几年时间内&#xff0c;RPA几乎已经被全球采纳&#xff0c;并且一些中小型企业对RPA也产生了浓厚的兴趣。当前RPA市场的火热&#xff0c;绝非偶然。资…

【Mybaits学习】04_ 优化调试信息(log4j)

1、增加Log4j Jar包 <!-- https://mvnrepository.com/artifact/log4j/log4j --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency> 2、新建以及配置log4j文件…

RPA工程师的前景

有数据显示,目前RPA市场每年的增速都超过100%。乐观估计,全球RPA市场规模未来5年可能会增长至超过1000亿美元,HfS Research、Zinnov、毕马威等机构都给出了相对积极的市场预期。回望国内,RPA市场近年来的增速也均超过100%,发展预期亦较为乐观。一些RPA公司已经完成或即将完成融…

使用privide/inject和this.$refs/this.$root进行通信

介绍 通常在vue中我们会经常使用到一些组件间的通信方法&#xff0c;比如父-子、子-父、兄弟、vue-bus、vuex等&#xff0c;那么除了这些还有没有其他的通信方式呢。当然&#xff0c;今儿我就找到了另外的两种方法&#xff0c;privide/inject和this.$ refs / this.$ root 注意…

js焦点轮播图

汇集网上焦点轮播图的实现方式&#xff0c;自己试了下&#xff0c;不过鼠标悬浮停止动画和鼠标离开动画播放好像没生效&#xff0c;不太明白&#xff0c;最后两行代码中&#xff0c;为什么可以直接写stop和play。不用加括号调用函数么&#xff1f;求懂的大神指点&#xff01; 所…