Vue extend的基本用法(实例详解)


Posted in Javascript onDecember 09, 2019

Vue.extend 属于 Vue 的全局 API,在实际业务开发中我们很少使用,因为相比常用的 Vue.component 写法使用 extend 步骤要更加繁琐一些。

我们创建Vue实例时,都会有一个el选项,来指定实例的根节点,如果不写el选项,那组件就处于未挂载状态。Vue.extend 的作用,就是基于 Vue 构造器,创建一个‘ 子类 ',它的参数跟new Vue的基本一样,但data要跟组件一样,是个函数,再配合$mount,就可以渲染组件,并且挂载到任意指定的节点上,比如body(这是单文件组件做不到的)

下面我们就来看两个例子:

1.在单文件组件中使用

<template>
 <div id="about"></div>
</template>
<script>
import Vue from 'vue/dist/vue.js'
var Profile = Vue.extend({
 template: '<p>{{firstName}} {{lastName}} aka {{alias}}</p>',
 data: function () {
  return {
   firstName: 'Walter',
   lastName: 'White',
   alias: 'Heisenberg'
  }
 }
})
// 创建 Profile 实例,并挂载到一个元素上。
let profile=new Profile().$mount();
 
export default {
 mounted(){
  let divid=document.getElementById('about');
  divid.appendChild(profile.$el)
 }
}
</script>

这里需要注意几个点:

报错信息

Vue extend的基本用法(实例详解)

如果有小伙伴遇到了这个问题,那么你导入的是

import Vue from 'vue'

这个时候只需要修改成即可解决问题

import Vue from 'vue/dist/vue.js'

在单文件组件中的挂载问题:

因为这里是通过获取节点的方式添加到某个元素内,所以一定要在钩子函数中挂载,确保当前页面的dom节点加载完成。

mounted(){
  let divid=document.getElementById('about');
  divid.appendChild(profile.$el)
 }

2.单独构建js文件

//index.js
 
import Vue from 'vue/dist/vue.js'
 
export default function Create(node){
  var notiful=Vue.extend({
    template:`<p>{{name}}</p>`,
    data(){
      return {
        name:"liuhuas"
      }
    }
  })
  
  var noti=new notiful().$mount();
  document.getElementById(node).appendChild(noti.$el);
}

创建完成后我们就可以在任何地方引入这个js文件 ,并执行Create方法,注意的是这里的Create方法里面也获取了dom,那么就需要在相应的钩子函数中去执行这个方法。

总结

以上所述是小编给大家介绍的Vue extend的基本用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
Firefox 无法获取cssRules 的解决办法
Oct 11 Javascript
javascript网页关闭时提醒效果脚本
Oct 22 Javascript
js jquery验证银行卡号信息正则学习
Jan 21 Javascript
微信企业号开发之微信考勤Cookies的使用
Sep 11 Javascript
javascript实现五星评分功能
Nov 10 Javascript
使用jQuery给input标签设置默认值
Jun 20 Javascript
node.js连接MongoDB数据库的2种方法教程
May 17 Javascript
bootstrap table单元格新增行并编辑
May 19 Javascript
jQuery、layer实现弹出层的打开、关闭功能
Jun 28 jQuery
详解关于vue-area-linkage走过的坑
Jun 27 Javascript
angular5 子组件监听父组件传入值的变化方法
Sep 30 Javascript
微信小程序使用车牌号输入法的示例代码
Aug 20 Javascript
vue基于v-charts封装双向条形图的实现代码
Dec 09 #Javascript
微信小程序图片加载失败时替换为默认图片的方法
Dec 09 #Javascript
vue如何使用async、await实现同步请求
Dec 09 #Javascript
Vue替代marquee标签超出宽度文字横向滚动效果
Dec 09 #Javascript
vue新建项目并配置标准路由过程解析
Dec 09 #Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
Dec 09 #Javascript
简述Vue中容易被忽视的知识点
Dec 09 #Javascript
You might like
IP138 IP地址查询小偷实现代码
2010/02/15 PHP
深入phpMyAdmin的安装与配置的详细步骤
2013/05/07 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
thinkphp3.2.3 分页代码分享
2016/07/28 PHP
php redis实现对200w用户的即时推送
2017/03/04 PHP
javascript编程起步(第二课)
2007/02/27 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
十分钟教你上手ES2020新特性
2020/02/12 Javascript
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
Python3使用requests发闪存的方法
2016/05/11 Python
Python实现桶排序与快速排序算法结合应用示例
2017/11/22 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
python如何写个俄罗斯方块
2020/11/06 Python
python实现文件分片上传的接口自动化
2020/11/19 Python
python进行二次方程式计算的实例讲解
2020/12/06 Python
使用HTML5进行SVG矢量图形绘制的入门教程
2016/02/19 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
美国全球旅游运营商:Pacific Holidays
2018/06/18 全球购物
如何利用find命令查找文件
2015/02/07 面试题
大学生自我鉴定范文
2013/12/28 职场文书
田径运动会开幕式及主持词
2014/03/28 职场文书
文明班级建设方案
2014/05/15 职场文书
法律专业求职信
2014/05/24 职场文书
七夕相亲活动策划方案
2014/08/31 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
pandas提升计算效率的一些方法汇总
2021/05/30 Python
html粘性页脚的具体使用
2022/01/18 HTML / CSS
Nginx+Tomcat负载均衡多实例详解
2022/04/11 Servers
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android