vue系统总结2
<div id="app">
<mycpn></mycpn>
</div>
<script src="../js/vue.js"></script>
<script>
//1.创建组件构造器对象
const cpn = Vue.extend({
template: `
<div>
<h2>我是标题</h2>
<p>我是内容,哈哈哈哈</p>
<p>我是内容,呵呵呵呵呵呵</p>
</div>`
}) Vue.component('mycpn',cpn) const app = new Vue({
el: '#app',
data: { }
})
</script>
<div id="app">
<mycpn></mycpn>
<cpn></cpn>
</div>
<script src="../js/vue.js"></script>
<script>
//1.创建组件构造器
const cpn = Vue.extend({
template: `
<div>
<h2>我是标题1</h2>
<p>我是内容 哈哈哈哈</p>
</div>
`
})
// 2.注册组件(全局组件,意味着可以再多个vue实例中使用)
Vue.component('mycpn',cpn) const app = new Vue({
el: '#app',
data: {
message: '你好啊'
},
components: {
cpn:cpn
}
})
</script>
<div id="app">
<cpn2></cpn2>
<h2>--------</h2>
<cpn1></cpn1>
</div> <script src="../js/vue.js"></script> <script>
// 1.创建第一个组件构造器
const cpn1 = Vue.extend({
template: `<div>
<h2>我是子组件标题</h2>
<p>我是子组件内容 哈哈哈</p>
</div>`
}) //2.创建第二个组件构造器
const cpn2 = Vue.extend({
template:`<div>
<h2>我是父组件标题</h2>
<p>我是父组件内容 呵呵呵呵呵</p>
<cpn1></cpn1>
</div>`,
//在组件内部使用带s的components
components:{
cpn1: cpn1
}
})
const app = new Vue({
el:'#app',
data:{
},
components:{
cpn2: cpn2,
cpn1: cpn1
}
})
</script>
<div id="app">
<cpn></cpn>
</div>
<script src="../js/vue.js"></script>
<script> //一.全局组件注册的语法糖
//1.创造组件构造器
// const cpn1 = Vue.extend() //2.注册组件
// Vue.component('cpn',{
// template: `<div>
// <h2>我是全局组件标题</h2>
// <p>我是全局组件内容 呵呵呵呵呵</p>
// </div>`
// }) const app = new Vue({
el: '#app',
data: {
},
components:{
cpn: {
template: `<div>
<h2>我是局部组件标题</h2>
<p>我是局部组件内容 呵呵呵呵呵</p>
</div>`
}
}
})
</script>
<div id="app">
<cpn></cpn>
<cpn></cpn>
<cpn></cpn>
</div> <!-- 第一种模板 注意:必须是text/x-template类型-->
<!-- <script type="text/x-template" id="cpn">
<div>
<h2>我是标题</h2>
<p>我是内容</p>
</div>
</script> --> <!-- 第二种模板:template -->
<template id="cpn">
<div>
<h2>这是标题哈哈</h2>
<p>这是内容哈哈</p>
</div>
</template> <script src="../js/vue.js"></script>
<script> // 1.注册一个全局组件
Vue.component('cpn',{
template: '#cpn'
}) const app = new Vue({
el: '#app',
data: {
message: '你好啊'
}
})
</script>
<div id="app">
<cpn></cpn>
<cpn></cpn>
<cpn></cpn>
</div> <!-- 第一种模板 注意:必须是text/x-template类型-->
<!-- <script type="text/x-template" id="cpn">
<div>
<h2>我是标题</h2>
<p>我是内容</p>
</div>
</script> --> <!-- 第二种模板:template -->
<template id="cpn">
<div>
<h2>{{title}}</h2>
<p>这是内容哈哈</p>
</div>
</template> <script src="../js/vue.js"></script>
<script> // 1.注册一个全局组件
Vue.component('cpn',{
template: '#cpn',
data() {
return {
title: '测试文件' }
}
}) const app = new Vue({
el: '#app',
data: {
message: '你好啊'
}
})
</script>
<div id="app">
<cpn></cpn>
<cpn></cpn>
<cpn></cpn>
</div>
<template id="cpn">
<div>
<h2>当前计数是 : {{counter}}</h2>
<button @click='innerment'>+</button>
<button @click='denerment'>-</button>
</div>
</template>
<script src="../js/vue.js"></script>
<script> Vue.component('cpn',{
template: '#cpn',
data () {
return {
counter: 0
}
},
methods:{
innerment(){
this.counter++
},
denerment(){
this.counter--
},
}
}) const app = new Vue({
el: '#app',
data: {
message: '你好啊'
}
})
</script>
<body>
<div id="app">
<!-- 使用cpn子组件 动态绑定movies和message -->
<cpn :cmovies="movies" :cmessage="message"></cpn>
</div> <!-- 子组件模板 -->
<template id="cpn">
<div>
<ul>
<!-- 循环cmovies的电影 -->
<li v-for="item in cmovies">{{item}}</li>
</ul>
<h2>{{cmessage}}</h2>
</div>
</template>
<!-- 引入vue文件 -->
<script src="../js/vue.js"></script>
<script>
//实例化子组件
const cpn = {
//模板对象,和el挂载点相似,注意:template必须要有id为cpn的
template: '#cpn',
//子组件data必须是一个函数,每个组件调用的时候不能是同一个对象,
//只能是一个函数,必须带有return返回值
data(){
return {}
},
methods:{},
//父组件向子组件传递信息使用props方法
props:{
cmovies:{
type:Array,
default(){
return []
},
required: true
},
cmessage: {
type:String,
default: 'aaaa',
required: true
}
}
} //根组件,也可以算父组件,实例化vue对象
const app = new Vue({
//挂载点:#app
el: '#app',
//对象中数据现在不用函数
data: {
message: '测试文件',
movies:['肖申克的救赎','当幸福来敲门','加勒比海盗','了不起的盖茨比']
},
//注册组件
components:{
cpn
}
})
</script>
<div id="app">
<cpn @itembtn="cpnclick"></cpn>
</div> <template id="cpn">
<div>
<button v-for="item in categories"
@click="itemclick(item)">{{item.name}}</button>
</div>
</template> <script src="../js/vue.js"></script>
<script>
const cpn = {
template: '#cpn',
data () {
return {
categories: [
{id: 'aaa',name: '打开应用'},
{id: 'bbb',name: '获取应用'},
{id: 'ccc',name: '新建应用'},
{id: 'ddd',name: '保存应用'},
{id: 'eee',name: '关闭应用'},
]
}
},
methods: {
itemclick (item) {
console.log(item.id)
this.$emit('itembtn',item)
}
}
} const app = new Vue({
el: '#app',
data: {
message: '你好啊'
},
components: {
cpn
},
methods:{
cpnclick (item) {
console.log(item.id)
}
}
})
</script>
<div id="app">
<cpn ref="ccc"></cpn>
<cpn ref="bbb"></cpn>
<cpn ref="aaa"></cpn>
<button @click='btnClick'>测试按钮</button>
</div> <template id="cpn">
<div>
<h2>我是子组件</h2>
</div>
</template> <script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
message: '你好啊'
},
methods: {
btnClick() {
//1$children 用法比较少 是获取全部的自组件里面方法
// console.log(this.$children)
// // this.$children[0].showMessage()
// for(let c of this.$children){
// c.showMessage()
// console.log(c.name)
// } //2 $refs 用的最多 注意此处写的 是refs ,上面写的是ref=""
// $refs => 对象类型 ,默认是一个空的对象 如果使用上面要用 ref="bbb"
console.log(this.$refs.aaa.name)
this.$refs.aaa.showMessage()
console.log(this.$refs.bbb.name)
this.$refs.bbb.showMessage()
console.log(this.$refs.ccc.name)
this.$refs.ccc.showMessage() }
},
components: {
cpn: {
template: '#cpn',
data() {
return {
name: `中级的欲望 通过努力可以获得
低级的欲望 通过放纵可以获得`
}
},
methods: {
showMessage() {
console.log('顶级的欲望 通过煎熬才能获得')
}
}
}
}
})
</script>
<div id="app">
<h2>这是vue实例</h2>
<cpn></cpn>
</div> <template id="cpn">
<div>
<h2>这是自组件</h2>
<ccpn></ccpn>
</div>
</template> <template id="ccpn">
<div>
<h2>我是子组件内部组件</h2>
<button @click="btnClick">点击按钮</button>
</div>
</template> <script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
message: '你好啊'
},
components: {
cpn: {
template: '#cpn',
data(){
return {
name: `
低级的欲望 通过放纵就可获得
高级的欲望 通过自律方可获得
顶级的欲望 通过骄傲才可获得`
}
},
components: {
ccpn: {
template: '#ccpn',
methods: {
btnClick() {
//1第一种 $parent 只能访问父级组件的数据,但是耦合性很高,不能扩展
// console.log(this.$parent)
// console.log(this.$parent.name) //2第二种,通过root 获取根组件的数据
console.log(this.$root)
console.log(this.$root.message)
}
}
}
}
}
}
})
</script>
<div id="app">
<cpn>
<span>姓名</span>
<input type="text" name='username' placeholder="请输入姓名">
</cpn>
<cpn>
<span>密码</span>
<input type="text" name="password" placeholder="请输入密码">
</cpn>
<cpn>
<button>登录</button>
<button>注册</button>
</cpn>
</div> <template id="cpn">
<div>
<!-- <h2>使用slot</h2>
<button>slot</button> -->
<slot>
<button>初始按钮</button>
</slot>
</div>
</template> <script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
message: 'hell Vue.js'
},
components: {
cpn: {
template: '#cpn',
data() {
return {}
},
methods:{}
}
}
})
</script>
<div id="app">
<cpn>
<button slot="left">返回</button>
</cpn>
<cpn>
<span slot="left">姓名</span>
<input type="text" slot="center" placeholder="请输入姓名">
</cpn>
<cpn>
<span slot="left">密码</span>
<input type="text" slot="center" placeholder="请输入密码">
</cpn>
<cpn>
<button slot="left">登录</button>
<button slot="right">注册</button>
</cpn>
</div> <template id="cpn">
<div>
<slot name="left"></slot>
<slot name="center"></slot>
<slot name="right"></slot>
<slot name="noname"></slot>
</div>
</template> <script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
message: 'hello Vue.js'
},
components:{
cpn: {
template: '#cpn',
methods:{},
data() {
return {}
},
props:{},
computed:{}
}
}
})
</script>
<div id="app">
<cpn v-show="isShow"></cpn>
</div> <template id="cpn">
<div>
<h2>我是子组件</h2>
<h3>你有为自己努力过吗</h3>
<button v-show="isShow"></button>
</div>
</template> <script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
message: 'hello Vue.js',
isShow: true
},
components: {
cpn: {
template: '#cpn',
props:{},
methods:{},
data () {
return {
isShow: false
}
}
} }
})
</script>
<div id="app">
<cpn></cpn>
<cpn>
<span slot="aaa">测试文件</span>
</cpn>
<cpn>
<div slot="aaa" slot-scope="slot">
<span v-for="item in slot.data">{{item}} -</span>
</div>
</cpn>
<cpn>
<div slot="aaa" slot-scope="slot">
<span v-for="item in slot.data">{{item}} $</span>
</div>
</cpn>
<cpn>
<div slot="aaa" slot-scope='slot'>
<!-- <span v-for="item in slot.data">{{item}}</span> -->
<span>{{slot.data.join('--')}}</span>
</div>
</cpn>
</div> <template id="cpn">
<div>
<slot name='aaa' :data="pLanges">
<ul>
<li v-for="item in pLanges">{{item}}</li>
</ul>
</slot>
</div>
</template> <script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
message: 'hello Vue.js'
},
components:{
cpn: {
template: '#cpn',
data() {
return {
pLanges: ['C++','python','java','js','php']
}
}
}
}
})
</script>
vue系统总结2的更多相关文章
- 一天带你入门到放弃vue.js(一)
写在前面的话! 每个新的框架入手都会进行一些列的扯犊子!这里不多说那么多!简简单单说一下vue吧! Vue.js是目前三大框架(angular,vue,react)之一,是渐进式js框架,据说是摒弃了 ...
- vue 后台管理系统菜单权限管理
来自:https://www.cnblogs.com/fqh123/p/11094296.html 侵删 login登录方法 login() { if (!this.username) { retur ...
- vue自定义指令实例使用(实例说明自定义指令的作用)
在写vue项目的时候,我们经常需要对后台返回的数据进行大量的渲染操作,其中就包含了大量的对特殊数据的进一步处理,比如说时间戳.图片地址.特殊数据显示等等特殊数据处理改进. 其实遇到这种情况,通过Vue ...
- React技术实践(1)
随着系统越来越庞大,前端也变得越来越复杂,因此,构建一套组件化的前端变得很重要了. 之前一直在使用Asp.net来进行前端的组件化,Asp.net组件化有个很大的缺陷,就是和后台代码绑定太紧密了,不符 ...
- 若依管理系统RuoYi-Vue(二):权限系统设计详解
若依Vue系统中的权限管理部分的功能都集中在了系统管理菜单模块中,如下图所示.其中权限部分主要涉及到了用户管理.角色管理.菜单管理.部门管理这四个部分. 一.若依Vue系统中的权限分类 根据观察,若依 ...
- 若依管理系统RuoYi-Vue(三):代码生成器原理和实战
历史文章 若依管理系统RuoYi-Vue(一):项目启动和菜单创建 若依管理系统RuoYi-Vue(二):权限系统设计详解 本篇文章将会讲解ruoyi-vue系统下代码生成器的使用.原理分析以及将这部 ...
- 2012高校GIS论坛
江苏省会议中心 南京·钟山宾馆(2012年4月21-22日) 以"突破与提升"为主题的"2012高校GIS论坛"将于4月在南京举行,由南京大学和工程中心共同承办 ...
- 一个 Vue + Node + MongoDB 博客系统
源码 耗时半载(半个月)的大项目终于完成了.这是一个博客系统,使用 Vue 做前端框架,Node + express 做后端,数据库使用的是 MongoDB.实现了用户注册.用户登录.博客管理(文章的 ...
- 【Vue】Vue的依赖追踪系统 ——搞懂methods watch和compute
从作用机制和性质上看待methods,watch和computed的关系 <他三个是啥子关系呢?> 首先要说,methods,watch和computed都是以函数为基础的,但各自却都不同 ...
随机推荐
- 关于 .NET 与 JAVA 在 JIT 编译上的一些差异
最近因为公司的一些原因,我也开始学习一些 JAVA 的知识.虽然我一直是以 .NET 语言为主的程序员,但是我并不排斥任何其它语言.在此并不讨论 JAVA .NET 的好坏,仅仅是对 .NET 跟 J ...
- Skywalking-05:在Skywalking RocketBot上添加监控图表
在 Skywalking RocketBot 上添加监控图表 效果图 该图的一些配置信息如下: 标题为: JVM Thread State Count (Java Service) 指标为: read ...
- 构建前端第6篇之---内嵌css样式 <el-button style="width:100%"> 登录 </el-button>
张艳涛写于2021-1-20日 What: 如何让button的长度和input长度一致呢 最先想到的是给这个button加一个class ="buttonclass",然后在vu ...
- IBM SPSS Statistics 26.0 Mac Windows Linux安装破解教程
IBM SPSS Statistics 26.0是IBM公司推出的一款用于统计学分析运算.数据挖掘.预测分析和决策支持任务的软件产品及相关服务的程序. 下载 windows/mac/linux IBM ...
- Linux下如何查看定位当前正在运行软件的配置文件
netstat命令 用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况 netstat -lntup 说明: l:listening n:num t:tc ...
- 快速上手pandas(下)
和上文一样,先导入后面会频繁使用到的模块: In [1]: import numpy as np import pandas as pd import matplotlib.pyplot as p ...
- anyRTC 重磅推出在线实时 K 歌解决方案
在线音乐领域一直是各大资本巨头投资的热点,从抢占版权到现在的"云上之争", 主流平台的战火从版权资源转向创新领域扩延.而如今,在线K歌正在成为抢占"云音乐"市场 ...
- Jenkins配置下拉菜单联动效果
在使用Jenkins集成时,经常需要配置一些环境信息,由于测试.线上.预发布需要切换环境和域名,需要在Jenkins中配置下拉菜单联动效果. 首先选择参数化构建过程,然后首先配置环境,环境分为:测试环 ...
- 某学院m3u8视频解密获取分析实战分享
[免责声明]本文来源于作者个人学习整理,仅供学习交流使用,不构成商业目的.所有资源均系本人个人学习或网络收集,仅提供一个展示.介绍.观摩学习的博文,不对其内容的准确性.可靠性.正当性.安全性.合法性等 ...
- Android 键盘属性
键盘定义:通过Keyboard说明是一个软键盘定义文件,Row元素说明这是一行按键的定义,Key元素说明这是一个按键的定义.Key元素通过一些属性来定义每个按键,下面是一些常用的属性介绍: Codes ...