Vue.extend()和我的两米大砍刀

news2025/1/10 2:09:21

Vue.extends是什么?

一个全局API,用于注册并挂载组件。
传统的引用组件的方式是使用import直接引入,但是使用Vue.extends()也可以实现。

使用规则

<div id="mount-point"></div>
// 创建构造器
var Profile = Vue.extend({
  template: '<p>{{firstName}} {{lastName}} aka {{alias}}</p>',
  data: function () {
    return {
      firstName: 'Walter',
      lastName: 'White',
      alias: 'Heisenberg'
    }
  }
})
// 创建 Profile 实例,并挂载到一个元素上。
new Profile().$mount('#mount-point')
//你可以挂载到任何你想挂载的地方
//new Profile().$mount("#app")

注意:应用场景

这种操作类似于直接用js操作dom元素,belike

//创建
const dom = document.createElemnet('div')
dom.innerHtml = '你好'
//挂载
const container = document.getElementById('#mount-point')
container.appendChild(container)

通过这样的类比,我们很容易就明白为什么不推荐使用这种方式去引入使用一个模块组件,因为vue是有自己的虚拟DOM机制和组件挂载过程的,所以不推荐直接操作DOM。建议还是通过触发数据的变化,引发视图变化,即MVVM机制。
非必要请不要使用这种方式去声明使用组件,因为它会使代码变得不好读,且容易造成误解。那么我们在什么情景下去使用这个api呢?

  • vue.extend主要用于动态创建组件的场景,比如弹窗组件、提示框组件等。(官网这么说,但我依然建议不要这么做。)
  • 组件模板都是事先定义好的,我要从接口动态渲染组件。

1.举个我在项目中使用的实际场景:弹窗组件、提示框组件

function createModal(options) {
  const Modal = Vue.extend({
    data() {
      return {
        title: options.title,
        content: options.content
      };
    },
    template: `
      <div class="modal">
        <h2>{{ title }}</h2>
        {{ content }}
      </div>
    `
  });

  const modal = new Modal();
  modal.mount();
  document.body.appendChild(modal.el);
}

// 调用createModal方法创建一个弹窗
createModal({
  title: '提示',
  content: '这是一个弹窗示例'
});

2.一些操蛋的思路:当时在做这个对话的时候我只想着在发生对话的时候创建一个dom,而非使用视图触发,后面涉及了一些复杂交互头痛。写在这里用于加深学习吧……
对话场景

//DialogueItem.vue

<template>
    你好
    <div @click='stopCurrentAsk'>停止</div>
</template>
<script>
import Vue from 'vue'
export default {
    name: "DialogueItem ",
    props: ['type', 'content', 'id'],
    data() {
        return {
            loading: false,
        };
    },
    methods: {
        changeLoadingStatus(loading) {
            this.loading = loading
        },
        stopCurrentAsk(id) {
            this.$emit('stopAsk');
        },
    }
};
</script>
import DialogueItem from '@/components/DialogueItem'

 public instand = null
 
 this.instand = new (Vue.extend(DialogueItem))
        ({
          propsData: { type, id, content },
        })
 this.instand.$mount()
 //1.子组件触发父组件事件。
 //上文也提到,这就是个封装成组件的dom,所以,想要通过子组件DialogueItem触发父组件的内容,就直接监听事件就行了
 this.instand.$on("stopAsk", () => {});
 
 //2.父组件触发子组件
 this.instand.changeLoadingStatus(false)
 
 dom.appendChild(this.instand.$el)

说实话,真的难用,大抵是我场景不对。但是用都用了记录一下。

关于我的两米大砍刀

我在项目开发中发现同样的引用和参数,却无法产生同样的结果,最后定位发现是两个组件不同的构建方式导致的。这个罪魁祸首就是Vue.extend(),换一种组件引入方式就解决了。
至于为什么,搜索了半天没有明白是什么原因,有的说是vuex没有被正确注入到根实例中。
懒得看了,反正子组件无法使用vuex,也无法使用,谁知道可以来踩踩……
少用,谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1601839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4.16

1.总结keil5下载代码和编译代码需要注意的事项 1.&#xff09;仿真器设置&#xff1a; 点击魔术棒&#xff0c;选择debug选项&#xff0c;找到使用的仿真器&#xff0c;选择ST-LINK仿真器&#xff0c;点击setting&#xff0c;选择flash download ,勾选reset and run,选择pack…

SpringBoot整合Nacos

文章目录 nacosnacos下载nacos启动nacos相关配置demo-dev.yamldemo-test.yamluser.yaml 代码pom.xmlUserConfigBeanAutoRefreshConfigExampleValueAnnotationExampleDemoApplicationbootstrap.yml测试结果补充.刷新静态配置 nacos nacos下载 下载地址 一键傻瓜试安装即可,官…

其它IO合集

其它IO合集 1. 缓冲流1.1 概述1.2 字节缓冲流构造方法效率测试 1.3 字符缓冲流构造方法特有方法 2. 转换流2.1 字符编码和字符集字符编码字符集 2.2 编码引出的问题2.3 InputStreamReader类构造方法指定编码读取 2.4 OutputStreamWriter类构造方法指定编码写出转换流理解图解 3…

Java开发从入门到精通(十):Java的面向对象编程OOP:抽象类

Java大数据开发和安全开发 &#xff08;一)Java的抽象类1.1 什么是抽象类?1.2 抽象类的注意事项、特点1.3 认识一下抽象类1.4 抽象类的场景和好处1.4.1 抽象类案例 1.5 抽象类的常见应用场景:模板方法设计模式1.5.1 模板方法设计模式作用1.5.1 模板方法设计模式的写法 &#x…

AI开发者急需看的大语言模型基本原理

在学习大语言模型的基本原理的时候&#xff0c;发现遇到了很多问题&#xff0c;比如一个个单词是怎么转换为向量的&#xff0c;是提前得到的还是训练过程中得到&#xff1f;Transformer的输出向量又是怎么转化为自然语言的&#xff1f;Finetune的时候不是只需要输入和输出吗&am…

百度驾驶证C++离线SDK V1.1 C#接入

百度驾驶证C离线SDK V1.1 C#接入 目录 说明 效果 项目 代码 下载 说明 自己根据SDK封装了动态库&#xff0c;然后C#调用。 SDK包结构 效果 项目 代码 using Newtonsoft.Json; using OpenCvSharp; using System; using System.Collections.Generic; using System.…

不用Linux也可以的强大文本处理方法

不用Linux也可以的强大文本处理方法 标题党了&#xff0c;其实是论VIM的使用。 做生物信息分析最合适的还是Linux操作系统&#xff0c;所以生信宝典在最开始就推出了Linux学习系列&#xff0c;由浅入深的讲述了Linux学习中的关键点。 主要文章列举如下&#xff1a; Linux学…

连续上榜|全息网御实力入选《中国网络安全行业全景图》

2024年4月12日&#xff0c;国内网络安全专业媒体安全牛正式发布第十一版《中国网络安全行业全景图》&#xff08;以下简称“全景图”&#xff09;。 本次全景图研究历时近4个月&#xff0c;共收到510家国内安全厂商4941项申报&#xff0c;实际收录2413项&#xff08;包含部分往…

Flutter 之 HTTP3/QUIC 和 Cronet 你了解过吗?

虽然 HTTP3/QUIC 和 cronet 跟 Flutter 没太大关系&#xff0c;只是最近在整理 Flutter 相关资料时发现还挺多人不了解&#xff0c;就放到一起聊聊。 本篇也是主要将现有资料做一些简化整合理解。 前言 其实为什么会有 HTTP3/QUIC &#xff1f;核心原因还是现有协议已经无法满…

van-uploader 在app内嵌的webview中的一些坑

问题&#xff1a; 部分版本在ios 中没有问题&#xff0c;但是安卓中不触发图片选择和拍照&#xff08;之前是可以的&#xff0c;可能是没有锁定版本&#xff0c;重新发版导致的&#xff09;。在ios中下拉文案是英文&#xff0c;html配置lang等于 zh 也没有用&#xff0c;ios里…

强化网络安全防线,您的等级保护措施到位了吗?

在这个信息化飞速发展的时代&#xff0c;网络安全已经成为我们每个人都需要关注的问题。无论是企业还是个人&#xff0c;我们的工作和生活都越来越依赖于网络。确保网络环境的安全&#xff0c;防止信息泄露和网络攻击&#xff0c;已经成为了一项至关重要的任务。等级保护制度作…

Oracle 正则,开窗,行列转换

1.开窗函数 基本上在查询结果上添加窗口列 1.1 聚合函数开窗 基本格式: ..... 函数() over([partition by 分组列,...][order by 排序列 desc|asc][定位框架]) 1&#xff0c;partition by 字段 相当于group by 字段 起到分组作用2&#xff0c;order by 字段 即根据某个字段…

​面试经典150题——对称二叉树

1. 题目描述 2. 题目分析与解析 2.1 思路一——递归 为了解决问题“检查一个二叉树是否是对称的”&#xff0c;我们需要判断树的左子树和右子树是否是彼此的镜像。这意味着树的左子树的左侧应该与右子树的右侧相同&#xff0c;左子树的右侧应该与右子树的左侧相同。 定义问题…

基于springboot实现人口老龄化社区服务与管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现人口老龄化社区服务与管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了人口老龄化社区服务与管理平台的开发全过程。通过分析人口老龄化社区服务与管理平台方面的不足&#xff…

Gitee和Git学习笔记

Gitee和Git指令 Gitee提交代码方法1 先将仓库clone到本地&#xff0c;修改后再push到 Gitee 的仓库方法2 本地初始化一个仓库&#xff0c;设置远程仓库地址后再做push 切换分支下载代码通过git clone克隆仓库通过下载 ZIP 的方式下载代码 Git提交指令 解决本地库同时关联GitHub…

货币保卫战,美联储降息预期推迟,油价飙升110美元,亚洲市场股债汇三杀,各国央行操作难度上升!

货币保卫激战 美联储降息预期一降再降&#xff0c;叠加中东局势变化带来避险需求飙升&#xff0c;美元连续第五天上涨之际&#xff0c;新兴市场再次打响“货币保卫战”&#xff0c;而更大的风险似乎仍未过去。亚洲市场普跌&#xff0c;日股跌近2%&#xff0c;韩国股指跌超2%&a…

【好书推荐6】《Excel函数与公式应用大全for Excel 365 Excel 2021》

【好书推荐6】《Excel函数与公式应用大全for Excel 365 & Excel 2021》 写在最前面《Excel函数与公式应用大全for Excel 365 & Excel 2021》关键点内容简介作者简介前言/序言目录 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光&…

新手怎么做好抖音小店?这六点是做店的根本,新手商家做店必读

大家好&#xff0c;我是电商花花。 只要我们开通抖音小店&#xff0c;且缴纳好类目保证金&#xff0c;就可以正常选品&#xff0c;上架商品进行售卖了。 如果你是刚开通抖音小店&#xff0c;想要做好抖音小店&#xff0c;下面这几点&#xff0c;一定要注意看。 一、开通精选联…

低版本Oracle客户端或者CMD连接Oracle 12c数据库报错ORA-1017 ORA-12560

exp test_user/test_user123456jgzh fileC:\jgzh.dmp owner(msagx) compressy; exp test_user/test_user123456jgzh fileD:\jgzh.dmp tables(msagx.C_CB_STUDENT,msagx.C_CB_SUBJECT) feedback10000 compressy;

残差网络理解

看了知乎的一篇关于残差网络的文章&#xff0c;https://zhuanlan.zhihu.com/p/72679537&#xff0c;我想发表一点我自己的看法&#xff01; 1.我对残差网络的理解 残差网络&#xff08;ResNet&#xff09;确实与传统的卷积神经网络&#xff08;CNN&#xff09;在结构上有所不同…