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 相关文章推荐
用js实现手把手教你月入万刀(转贴)
Nov 07 Javascript
基于jQuery的图片左右无缝滚动插件
May 23 Javascript
Jquery中ajax方法data参数的用法小结
Feb 12 Javascript
JavaScript中数组成员的添加、删除介绍
Dec 30 Javascript
Google 地图类型详解及示例代码
Aug 06 Javascript
jquery自动补齐功能插件flexselect用法示例
Aug 06 Javascript
Javascript 引擎工作机制详解
Nov 30 Javascript
vue.js学习笔记:如何加载本地json文件
Jan 17 Javascript
js案例之鼠标跟随jquery版(实例讲解)
Jul 21 jQuery
ES6 class的应用实例分析
Jun 27 Javascript
vue2.0 获取从http接口中获取数据,组件开发,路由配置方式
Nov 04 Javascript
构建大型 Vue.js 项目的10条建议(小结)
Nov 14 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 文件上传类代码
2011/08/06 PHP
PHP中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
判断一个对象是否为jquery对象的方法
2014/03/12 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
Python科学计算环境推荐——Anaconda
2014/06/30 Python
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
介绍Python中内置的itertools模块
2015/04/29 Python
django模板语法学习之include示例详解
2017/12/17 Python
Random 在 Python 中的使用方法
2018/08/09 Python
Django数据库连接丢失问题的解决方法
2018/12/29 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
windows支持哪个版本的python
2020/07/03 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
Python基于traceback模块获取异常信息
2020/07/23 Python
HTML5进度条特效
2014/12/18 HTML / CSS
Fossil美国官网:Fossil手表、手袋、珠宝及配件
2017/02/01 全球购物
两道JAVA笔试题
2016/09/14 面试题
文明礼仪小标兵事迹
2014/01/12 职场文书
公务员试用期满考核材料
2014/05/22 职场文书
年终晚会活动方案
2014/08/21 职场文书
爱牙日活动总结
2014/08/29 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
暑期社会实践个人总结
2015/03/06 职场文书
英语投诉信范文
2015/07/03 职场文书
2017年寒假社区服务活动总结
2016/04/06 职场文书
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers