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 相关文章推荐
FLASH 广告之外的链接
Dec 16 Javascript
JavaScript 函数调用规则
Sep 14 Javascript
jquery ui resize 中border-box的bug修正
Apr 26 Javascript
原生js和jQuery实现淡入淡出轮播效果
Dec 25 Javascript
jQuery表单验证插件解析(推荐)
Jul 21 Javascript
老生常谈javascript变量的命名规范和注释
Sep 29 Javascript
Bootstrap组合上、下拉框简单实现代码
Mar 06 Javascript
js实现显示手机号码效果
Mar 09 Javascript
angularjs封装$http为factory的方法
May 18 Javascript
angular6的响应式表单的实现
Oct 10 Javascript
js继承的这6种方式!(上)
Apr 23 Javascript
vue实现同时设置多个倒计时
May 20 Vue.js
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
PHP 读取Postgresql中的数组
2013/04/14 PHP
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
使用CodeIgniter的类库做图片上传
2014/06/12 PHP
PHP registerXPathNamespace()函数讲解
2019/02/03 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
ASP小贴士/ASP Tips javascript tips可以当桌面
2009/12/10 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
jq实现酷炫的鼠标经过图片翻滚效果
2014/03/12 Javascript
关于javaScript注册click事件传递参数的不成功问题
2014/07/18 Javascript
javascript学习笔记(六)数据类型和JSON格式
2014/10/08 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
2016/03/07 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
vue.js开发环境安装教程
2017/03/17 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
浅谈React Event实现原理
2018/09/20 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
[13:21]DOTA2国际邀请赛采访专栏:RSnake战队国士无双,Fnatic.Fly
2013/08/06 DOTA
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
python异步任务队列示例
2014/04/01 Python
Python实现115网盘自动下载的方法
2014/09/30 Python
Python功能键的读取方法
2015/05/28 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
如何在django中添加日志功能
2020/02/06 Python
茵宝(Umbro)英国官方商店:英国足球服装生产商
2016/12/29 全球购物
do you have any Best Practice for testing
2016/06/04 面试题
人事行政主管岗位职责
2013/12/22 职场文书
公司任命书模板
2014/06/06 职场文书
工作求职信
2014/07/04 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
mysql通过group by分组取最大时间对应数据的两种有效方法
2022/09/23 MySQL