<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<script src="vue.js"></script>
<body>
<div id="app">
<!-- 如果要使用组件,直接把组件的名称,以HTML标签的形式,引用到页面中去,即可 -->
<!-- 注意使用规则 -->
<!-- // 注意:如果使用vue.componentd定义全局组件的时候,组件使用了驼峰命名,则在引用的时候,需要把大写的驼峰改为小写字母同时,
// 在两个单词之间用-链接;如果不使用驼峰,则直接拿名称来使用即可 -->
<my-com1></my-com1>
<!-- <myCom1></myCom1> -->
</div>
<script>
// 1.使用vue.extend来创建全局组件
var com1= Vue.extend({
template:'<div><h1>这是直接用Vue.componet创建出来的组件</h1><span>123</span></div>'
// 通过temolate属性;指定了组件要展示的html结构
})
// 返回一个模板对象
// 1.2使用vue.componnet('组件名称',创建出来的组件模板对象);然后注册一个组件
Vue.component('myCom1',com1)
// 注意:如果使用vue.componentd定义全局组件的时候,组件使用了驼峰命名,则在引用的时候,需要把大写的驼峰改为小写字母同时,
// 在两个单词之间用-链接;如果不使用驼峰,则直接拿名称来使用即可
var vm=new Vue({
el:'#app',
data:{
msg:'父组件中的数据123'
},
})
</script>
</body>
</html>

简写方式

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<script src="vue.js"></script>
<body>
<div id="app">
<!-- 如果要使用组件,直接把组件的名称,以HTML标签的形式,引用到页面中去,即可 -->
<!-- 注意使用规则 -->
<!-- // 注意:如果使用vue.componentd定义全局组件的时候,组件使用了驼峰命名,则在引用的时候,需要把大写的驼峰改为小写字母同时,
// 在两个单词之间用-链接;如果不使用驼峰,则直接拿名称来使用即可 -->
<my-com1></my-com1>
<!-- <myCom1></myCom1> -->
</div>
<script>
// 1.使用vue.extend来创建全局组件
// var com1= Vue.extend({
// template:'<div><h1>这是直接用Vue.componet创建出来的组件</h1><span>123</span></div>'
// // 通过temolate属性;指定了组件要展示的html结构
// })
// // 返回一个模板对象
// // 1.2使用vue.componnet('组件名称',创建出来的组件模板对象);然后注册一个组件
// Vue.component('myCom1',com1)
// 上面的写法可以简化为
Vue.component('myCom1',Vue.extend({
template:'<div><h1>这是直接用Vue.componet创建出来的组件</h1><span>123</span></div>'
// 通过temolate属性;指定了组件要展示的html结构
}))
// 注意:Vue.component第一个参数:组件的名称,将来在引用组件的时候,就是一个标签形式来引入它的
// 第二个参数是:Vue.extend创建的组件,其中tempalte就是组件将来要展示的html内容
var vm=new Vue({
el:'#app',
data:{
msg:'父组件中的数据123'
},
})
</script>
</body>
</html>

组件的创建方式第二种方式

vue.component

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="vue.js"> </script>
</head>
<body>
<div id="app">
<!-- 还是使用标签的形式引用自己的组件 -->
<mycom2></mycom2>
</div>
<script>
Vue.component('mycom2',{
template:'<div><h1>这是直接用Vue.componet创建出来的组件</h1><span>123</span></div>'
// 注意:无论是哪种方式创建的组件,组件的tempalte属性指向的模板内容,必须有且只能有唯一的一个根元素
})
var vm=new Vue({
el:'#app'
}) </script>
</body>
</html>

组件的创建方式第三种方式:把模板抽离出去的方式

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="vue.js"> </script>
</head>
<body>
<div id="app">
<mycom3></mycom3>
</div>
<!-- 注意:在被控制的#app外面,使用template元素,定义组件的html模板结构 -->
<template id="temp1">
<div>
<h1>这是通过tempale元素,在外部定义的组件结构,这个方式,有代码的只能提示和高亮</h1>
<span>好用,不错</span>
</div>
</template>
<script>
Vue.component('mycom3',{
template:'#temp1'
})
var vm=new Vue({
el:'#app'
}) </script>
</body>
</html>

注意:以上是全局组件的创建方式

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="vue.js"> </script>
</head>
<body>
<div id="app">
<mycom3></mycom3>
</div>
<div id="app2">
<mycom3></mycom3>
</div>
<!-- 注意:在被控制的#app外面,使用template元素,定义组件的html模板结构 -->
<template id="temp1">
<div>
<h1>这是通过tempale元素,在外部定义的组件结构,这个方式,有代码的只能提示和高亮</h1>
<span>好用,不错</span>
</div>
</template>
<script>
Vue.component('mycom3',{
template:'#temp1'
})
var vm=new Vue({
el:'#app'
})
var vm2=new Vue({
el:'#app2'
}) </script>
</body>
</html>

下面来看下怎么定义局部组件

使用components定义私有组件

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="vue.js"> </script>
</head>
<body>
<div id="app">
<mycom2></mycom2>
<!-- <login></login> -->
<!-- 注释这里会报错,因为他是vm2实例的私有组件 -->
</div>
<div id="app2">
<mycom2></mycom2>
<login></login>
</div>
<script>
// 全局组件
Vue.component('mycom2',{
template:'<div><h1>这是直接用Vue.componet创建出来的全局组件</h1><span>123</span></div>'
// 注意:无论是哪种方式创建的组件,组件的tempalte属性指向的模板内容,必须有且只能有唯一的一个根元素
}) var vm=new Vue({
el:'#app'
});
var vm2 =new Vue({
el:'#app2',
components:{
// 定义实例内部的私有组件
login:{
// template:'#temp2'
template:'<h1>这是私有的login组件</h1>'
}
}
})
</script>
</body>
</html>

可以把私有组件的模板分离出去  改写成这样

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="vue.js"> </script>
</head>
<body>
<div id="app">
<mycom2></mycom2>
<!-- <login></login> -->
<!-- 注释这里会报错,因为他是vm2实例的私有组件 -->
</div>
<div id="app2">
<mycom2></mycom2>
<login></login>
</div>
<template id="temp2">
<h1>这是私有的login组件</h1>
</template>
<script>
// 全局组件
Vue.component('mycom2',{
template:'<div><h1>这是直接用Vue.componet创建出来的全局组件</h1><span>123</span></div>'
// 注意:无论是哪种方式创建的组件,组件的tempalte属性指向的模板内容,必须有且只能有唯一的一个根元素
}) var vm=new Vue({
el:'#app'
});
var vm2 =new Vue({
el:'#app2',
components:{
// 定义实例内部的私有组件
login:{
template:'#temp2'
// template:'<h1>这是私有的login组件</h1>'
}
}
})
</script>
</body>
</html>

vue组件创建学习总结的更多相关文章

  1. 黑马vue---56-58、vue组件创建的三种方式

    黑马vue---56-58.vue组件创建的三种方式 一.总结 一句话总结: 不论是哪种方式创建出来的组件,组件的 template 属性指向的模板内容,必须有且只能有唯一的一个根元素 1.使用 Vu ...

  2. 使用VUE组件创建SpreadJS自定义单元格(二)

    在上篇中,我们介绍了如何通过设置runtimeCompiler为true,在Vue中实现了动态创建电子表格组件.想了解具体内容可看点击查看使用VUE组件创建SpreadJS自定义单元格(一). 但是在 ...

  3. vue组件创建的三种方式

    1.使用Vue.extend创建全局的Vue组件 //1.1 使用vue.extend创建组件 var com1 = Vue.extend({ //通过template属性指定组件要展示的html结构 ...

  4. Vue系列之 => vue组件创建

    创建方式 一 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  5. vue 组件创建与销毁

    vue 组件(如对话框组件)实时创建与销毁: 使用v-if <search-history :show="showSearchHistory" @close="sh ...

  6. Vue组件创建和组件传值

    Vue创建组件的方式 使用Vue.Extend()和Vue.component全局注册组件 首先我们定义一个组件并接收 var com1 =Vue.extend({ template:"&l ...

  7. JS vue 组件创建过程

    https://www.jianshu.com/p/3504a1edba42 vue.js原生组件化开发(一)——组件开发基础 0.3472017.05.09 12:00:54字数 1120阅读 33 ...

  8. 使用VUE组件创建SpreadJS自定义单元格(一)

    作为近五年都冲在热门框架排行榜首的Vue,大家一定会学到的一部分就是组件的使用.前端开发的模块化,可以让代码逻辑更加简单清晰,项目的扩展性大大加强.对于Vue而言,模块化的体现集中在组件之上,以组件为 ...

  9. VUE组件的学习

    参考:https://blog.csdn.net/baidu_23142899/article/details/79130225

随机推荐

  1. SHAREDPOOL使用率的监控部署及思考

    [系统环境]: 系统环境:Sun Solaris10 U11  +  ORACLE  11.2.0.4.0  RAC [背景描述]: 从2016年11月起,生产的数据库期的出现了两次m0001进程12 ...

  2. Vorticity directions 1: self-improving property of the vorticity

    在 [Li, Siran. "On Vortex Alignment and Boundedness of $ L^ q $ Norm of Vorticity." arXiv p ...

  3. [物理学与PDEs]第1章第6节 电磁场的标势与矢势 6.3 例 --- 电偶极辐射

    1. 偶极子: 相距为 $l$, 带电量分别为 $\pm q$ 的一对电荷组成的系统. 称 $$\bex {\bf m}=q{\bf l} \eex$$ 为电偶极矩, 其中 ${\bf l}$ 为 $ ...

  4. gitlab升级迁移(二)

    前面我们写了一篇gitlab升级迁移的文章(https://www.cnblogs.com/liangyou666/p/9434158.html),这次我们主要是讲另一种升级迁移方法和其中遇到的一些问 ...

  5. 字符串常量池和String.intern()方法在jdk1.6、1.7、1.8中的变化

    字符串常量池也是运行时常量池 jdk1.6中,它是在方法区中,属于“永久代” jdk1.7中,它被移除方法区,放在java堆中 jdk1.8中,取消了“永久代”,将常量池放在元空间,与堆独立了 pub ...

  6. Windows下VSCode编译调试c/c++

    参考链接:  https://blog.csdn.net/c_duoduo/article/details/51615381 支持makefile编译: https://www.cnblogs.com ...

  7. hadoop集群完全分布式搭建

    Hadoop环境搭建:完全分布式 集群规划: ip                 hostname 192.168.204.154     master      namenode   resour ...

  8. Centos7.5 安装VirtualBox增强工具

    一.安装 1.自带tools:  选择VirtualBox工具栏 => 设备 => 安装增强功能 2.挂载光驱 3.进入光驱目录,执行(一定要用root权限执行) ①安装gcc yum i ...

  9. POJ 1556 The Doors(线段相交+最短路)

    题目: Description You are to find the length of the shortest path through a chamber containing obstruc ...

  10. 利用jQuery如何获取当前被点击的按钮

    如下代码 <tr> <td><a href="javascript:void(0)">点我1</a></td> < ...