vue extend 的使用

vue extend 的使用前提 使用之前需要在 vue config js 中添加 runtimeCompi true 如图 使用 第一种 无参数 官网示例 1 创建 index js 图片 代码 importVuefro vue varRootEle Vue extend template p firstName lastName aka alias p data functi

前提:

使用之前需要在vue.config.js中添加

runtimeCompiler: true,

如图:

vue extend 的使用

使用:

第一种:无参数

1. 创建index.js

图片:

vue extend 的使用

代码:

import Vue from "vue"; var RootEle = Vue.extend({ template: '<p>{ 
  {firstName}} { 
  {lastName}} aka { 
  {alias}}</p>', data: function () { return { firstName: 'Walter', lastName: 'White', alias: 'Heisenberg' } } }) export default RootEle

2. HelloWorld中加载

图片:

vue extend 的使用

 代码:

<template> <div id="root"></div> </template> <script> import RootEle from "../extend/index"; export default { data() { return {}; }, mounted() { new RootEle().$mount("#root"); }, }; </script> 

 第二种:传参数

图片:vue extend 的使用

 代码:

import Vue from "vue"; var RootEle = Vue.extend({ template: "<p>{ 
  {firstName}} { 
  {lastName}} aka { 
  {alias}}</p>", props: ["firstName"], data: function () { return { lastName: "White", alias: "Heisenberg", }; }, }); export default RootEle;

 图片:

vue extend 的使用

 代码:

<template> <div id="root"></div> </template> <script> import RootEle from "../extend/index"; export default { data() { return {}; }, mounted() { new RootEle({ propsData:{ firstName:'这是父组件传递过来的数据' } }).$mount("#root"); }, }; </script>

第三种:传方法

使用   $on  ,   $emit

图片:

vue extend 的使用

 代码:

import Vue from "vue"; var RootEle = Vue.extend({ template:"<p @click='some_event'>{ 
  {firstName}} { 
  {lastName}} aka { 
  {alias}}</p>", props: ["firstName"], data: function () { return { lastName: "White", alias: "Heisenberg", }; }, methods: { some_event() { this.$emit("some_event", "这是方法传递过去的参数"); }, }, }); export default RootEle; 

图片:

vue extend 的使用

 代码:

<template> <div id="root"></div> </template> <script> import RootEle from "../extend/index"; export default { data() { return {}; }, mounted() { const root = new RootEle({ propsData: { firstName: "这是父组件传递过来的数据", }, }).$mount("#root"); root.$on("some_event", function (e) { console.log(e); }); }, }; </script>

第四种:插槽数据

图片:vue extend 的使用

代码: 

import Vue from "vue"; var RootEle = Vue.extend({ template: `<p> { 
  {firstName}} { 
  {lastName}} aka { 
  {alias}} <slot name='footer'/> </p>`, props: ["firstName"], data: function () { return { lastName: "White", alias: "Heisenberg", }; }, }); export default RootEle;

图片:

vue extend 的使用

 代码:

<template> <div id="root"></div> </template> <script> import RootEle from "../extend/index"; export default { data() { return {}; }, mounted() { const root = new RootEle({ propsData: { firstName: "这是父组件传递过来的数据", }, }); const h = this.$createElement; root.$scopedSlots = { footer: function () { return [ h( "span", { style: { color: "red" } }, "这是父组件传递过来的插槽数据" ), ]; }, }; root.$mount("#root"); }, }; </script>

第五种:作用于插槽

图片:

vue extend 的使用

 代码:

import Vue from "vue"; var RootEle = Vue.extend({ template: `<p> { 
  {lastName}} aka { 
  {alias}} <slot name='footer' :message='firstName'/> </p>`, props: ["firstName"], data: function () { return { lastName: "White", alias: "Heisenberg", }; }, }); export default RootEle;

图片:

vue extend 的使用

 代码:

<template> <div id="root"></div> </template> <script> import RootEle from "../extend/index"; export default { data() { return {}; }, mounted() { const root = new RootEle({ propsData: { firstName: "这是父组件传递过来的数据", }, }); const h = this.$createElement; root.$scopedSlots = { footer: function (slotData) { return [h("span", { style: { color: "red" } }, slotData.message)]; }, }; root.$mount("#root"); }, }; </script>

另一种写法,不用js,直接用组件

图片:

vue extend 的使用

代码:

<template> <div> { 
  { lastName }} aka { 
  { alias }} <slot name="footer" :message="firstName" /> </div> </template> <script> export default { props: ["firstName"], data: function () { return { lastName: "White", alias: "Heisenberg", }; }, }; </script> 

 图片:vue extend 的使用

代码:

<template> <div id="root"></div> </template> <script> import Vue from "vue"; import ExtendExample from "./ExtendExample.vue"; export default { data() { return {}; }, mounted() { const RootEle = Vue.extend(ExtendExample); const root = new RootEle({ propsData: { firstName: "这是父组件传递过来的数据", }, }); const h = this.$createElement; root.$scopedSlots = { footer: function (slotData) { return [h("span", { style: { color: "red" } }, slotData.message)]; }, }; root.$mount("#root"); }, }; </script>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/230368.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月2日 下午5:01
下一篇 2026年3月2日 下午5:22


相关推荐

  • java环境_Java 开发环境配置

    java环境_Java 开发环境配置Java开发环境配置在本章节中我们将为大家介绍如何搭建Java开发环境。window系统安装java下载JDK在下载页面中你需要选择接受许可,并根据自己的系统选择对应的版本,本文以Window64位系统为例:下载后JDK的安装根据提示进行,还有安装JDK的时候也会安装JRE,一并安装就可以了。安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为C:\ProgramFil…

    2022年7月9日
    20
  • Django(60)Django内置User模型源码分析及自定义User

    Django(60)Django内置User模型源码分析及自定义User前言Django为我们提供了内置的User模型,不需要我们再额外定义用户模型,建立用户体系了。它的完整的路径是在django.contrib.auth.models.User。User模型源码分析

    2022年7月31日
    9
  • pycharm如何使用mysql_pycharm中的MySQL驱动

    pycharm如何使用mysql_pycharm中的MySQL驱动一般的开发过程中,我们需要使用pycharm来连接数据库,从而来进行对数据库的操作,这里主要连接的是mysql数据库,另外加了使用pandas模块读取数据库的操作,基本的操作如下所示:直接连接数据库importpymysqlconn=pymysql.connect(host=’localhost’,port=3306,db=’joker’,user=’root’,password=’root…

    2022年8月28日
    5
  • [ Laravel 5.6 文档 ] 安全系列 —— 重置密码

    [ Laravel 5.6 文档 ] 安全系列 —— 重置密码

    2021年10月24日
    37
  • vscode怎样新建项目和文件

    vscode怎样新建项目和文件vscode跟其他编辑器不太一样,今天咪咪我就来给大家分享一下vscode新建项目和文件的方法。需要用品:电脑vscode01、首先是新建文件,如果只是单一的文件,可以直接点击欢迎界面的“新建文件”,这样即可得到一个新的文件。02、而如果欢迎界面被你关闭掉了,则可以在文件菜单中来新建一个文件。当然,这两个方法都只是新建单一文件,并不是一个完整的项目哦。03、接着我们开始创建一个项目,首先…

    2022年6月29日
    69
  • 线性代数 — 矩阵求逆的4种方法

    线性代数 — 矩阵求逆的4种方法矩阵求逆的 4 种方法

    2025年8月15日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号