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 相关文章推荐
JavaScript Cookie 直接浏览网站分网址
Dec 08 Javascript
jQuery制作拼图小游戏
Jan 12 Javascript
javascript时间差插件分享
Jul 18 Javascript
微信小程序 教程之wxapp 视图容器 view
Oct 19 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
Mar 09 Javascript
AngularJS常见过滤器用法实例总结
Jul 06 Javascript
React-Native左右联动List的示例代码
Sep 21 Javascript
浅谈react受控组件与非受控组件(小结)
Feb 09 Javascript
vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)
Feb 11 Javascript
javascript canvas API内容整理
Feb 16 Javascript
vue使用nprogress加载路由进度条的方法
Jun 04 Javascript
JSONObject与JSONArray使用方法解析
Sep 28 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
PHP 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
php中in_array函数用法探究
2014/11/25 PHP
PHP数组操作简单案例分析
2016/10/15 PHP
php无限级分类实现方法分析
2016/10/19 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
2014/10/31 Javascript
JS实现的网页倒计时数字时钟效果
2015/03/02 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
js完整倒计时代码分享
2016/09/18 Javascript
javascript中json基础知识详解
2017/01/19 Javascript
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
2017/09/14 Javascript
js实现转动骰子模型
2019/10/24 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
2020/04/17 Javascript
[01:01:31]2018DOTA2亚洲邀请赛3月29日小组赛B组 Mineski VS paiN
2018/03/30 DOTA
在Django框架中设置语言偏好的教程
2015/07/27 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
python安装教程
2018/02/28 Python
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
python3.5安装python3-tk详解
2019/04/26 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
2019/06/18 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
python实现mean-shift聚类算法
2020/06/10 Python
CSS3实现各种图形的示例代码
2016/10/19 HTML / CSS
英国时尚泳装品牌:Maru Swimwear
2019/10/06 全球购物
秘书岗位职责
2013/11/18 职场文书
班级体育活动总结
2014/07/05 职场文书
2015年企业工作总结范文
2015/04/28 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
Python  lambda匿名函数和三元运算符
2022/04/19 Python