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 相关文章推荐
Opacity.js
Jan 22 Javascript
记录几个javascript有关的小细节
Apr 02 Javascript
jquery live()重复绑定的解决方法介绍
Jan 03 Javascript
JavaScript中的定时器之Item23的合理使用
Oct 30 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
Dec 13 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
May 30 Javascript
jQuery实现淡入淡出的模态框
Feb 09 Javascript
BootStrap 动态表单效果
Jun 02 Javascript
javascript实现QQ空间相册展示源码
Dec 12 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
Aug 07 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
Nov 05 Javascript
Web应用开发TypeScript使用详解
May 25 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
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
2010/02/09 PHP
php调用dll的实例操作动画与代码分享
2012/08/14 PHP
PHP产生不重复随机数的5个方法总结
2014/11/12 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
2019/10/16 PHP
javascript定时保存表单数据的代码
2011/03/17 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
图片懒加载插件实例分享(含解析)
2017/01/09 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
2017/12/16 jQuery
element-ui中select组件绑定值改变,触发change事件方法
2018/08/24 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
详解vue挂载到dom上会发生什么
2019/01/20 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
React.js组件实现拖拽排序组件功能过程解析
2020/04/27 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
python中sys.argv参数用法实例分析
2015/05/20 Python
PyQt实现界面翻转切换效果
2018/04/20 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
numpy concatenate数组拼接方法示例介绍
2019/05/27 Python
Python如何实现强制数据类型转换
2019/11/22 Python
Python selenium环境搭建实现过程解析
2020/09/08 Python
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
使用useBean标志初始化BEAN时如何接受初始化参数
2012/02/11 面试题
Shell编程面试题
2016/05/29 面试题
大学生求职推荐信
2013/11/27 职场文书
公益活动策划方案
2014/01/09 职场文书
市场营销求职信范文
2014/02/21 职场文书
公司周年庆活动方案
2014/08/25 职场文书
初中毕业生自我评价
2015/03/02 职场文书
幼儿园国庆节活动总结
2015/03/23 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书
Python利用folium实现地图可视化
2021/05/23 Python
JavaScript流程控制(分支)
2021/12/06 Javascript