Vue.js之组件嵌套小demo
Vue.js之组件嵌套的小demo项目
第一步:初始化一个wabpack项目,这里不在复述。
第二步:在components文件夹下新建Header.vue Footer.vue和Users.vue三个组件文件
Header.vue文件:
<!--1模板:html结构 -->
<template>
<header>
<h1>{{title}}</h1>
</header>
</template> <!--2行为:处理逻辑 -->
<script>
export default {
name: 'app-header',
data () {
return {
title:"Vue.js Demo"
}
}
}
</script> <!--3样式:解决样式 -->
<style scoped>
header{
background: pink;
padding: 10px;
}
h1{
color: #222;
text-align: center;
}
</style>
Users.vue文件:
<template>
<div class="users">
<ul>
<li v-for="user in users"
@click="user.show = !user.show">
<h2 >{{user.name}}</h2>
<h3 v-show="user.show">{{user.Position}}</h3>
</li>
</ul>
</div>
</template> <script>
export default {
name: 'users',
data () {
return {
users:[
{name:"Henry",Position:"Java工程师",show:false},
{name:"Lily",Position:"Java工程师",show:false},
{name:"KangKang",Position:"Java工程师",show:false},
{name:"Maria",Position:"Java工程师",show:false},
{name:"Sally",Position:"Java工程师",show:false},
{name:"Elinna",Position:"Java工程师",show:false}
]
}
}
}
</script> <style scoped>
users{
width: 100%;
max-width: 1200px;
margin:40px auto;
padding: 0 20px;
box-sizing: border-box;
}
ul{
display: flex; //所有li在一行
flex-wrap: wrap; //所有li在容器里,不会超出容器
list-style-type: none;
padding: 0; //去掉浏览器自带的padding值
}
li{
flex-grow: 1; //如果一行之有一个会撑满整行,如果有两个,两个撑满整行
flex-basis: 200px; //每一个li200px的宽度
text-align: center;
padding: 30px;
border: 1px solid #666;
margin: 10px;
}
</style>
Footer.vue文件:
<template>
<footer>
<p>{{copyright}}</p>
</footer>
</template> <script>
export default {
data () {
return {
copyright:"Copyright 2018 Vue Demo" }
}
}
</script> <style scoped>
footer{
background: #666;
padding: 6px;
}
footer p{
color: pink;
text-align: center;
}
</style>
第三步:编写App.vue文件:在此文件中要在script中通过import引用刚才编写的三个组件,然后通过组件的别名使用组件。
App.vue文件:项目入口文件中引入的组件
<!--模板-->
<template>
<div id="app">
<app-header></app-header>
<users></users>
<app-footer></app-footer>
</div>
</template> <!--行为-->
<script>
//局部注册组件
import Users from './components/Users'
import Header from './components/Header'
import Footer from './components/Footer' export default {
name: 'App',
components:{
"users":Users,
"app-header":Header,
"app-footer":Footer
}
}
</script> <!--样式-->
<style >
</style>
html文件:项目的入口文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>vue-playlist</title>
</head>
<body>
<div id="app"></div>
</body>
</html>
main.js文件:项目的入口js文件
import Vue from 'vue'
import App from './App' Vue.config.productionTip = false
new Vue({
el: '#app',
components: { App },
template: '<App/>'
})
然后启动项目,就能看到生成一个组件嵌套形成的小demo
项目加载流程:
index.html是入口文件,加载html时候会调用main.js文件,main.js文件会实例化vue组件App.vue,然后App.vue会把其他组件也加载进来,最后渲染整个页面。
Vue.js之组件嵌套小demo的更多相关文章
- Vue.js多重组件嵌套
Vue.js多重组件嵌套 Vue.js中提供了非常棒的组件化思想,组件提高了代码的复用性.今天我们来实现一个形如 <app> <app-header></app-head ...
- Vue.js之组件嵌套
Vue.js中组件嵌套有两种方式 第一种:注册全局组件 例如在components文件夹下新建一个User.vue组件,然后在main.js文件中注册全局组件 //注册全局组件 Vue.compone ...
- 【Vue课堂】Vue.js 父子组件之间通信的十种方式
这篇文章介绍了Vue.js 父子组件之间通信的十种方式,不管是初学者还是已经在用 Vue 的开发者都会有所收获.无可否认,现在无论大厂还是小厂都已经用上了 Vue.js 框架,简单易上手不说,教程详尽 ...
- Vue.js 和 MVVM 的小细节
Vue.js 和 MVVM 的小细节 转载 作者:流云诸葛 链接:www.cnblogs.com/lyzg/p/6067766.html MVVM 是Model-View-ViewModel 的缩写, ...
- 【Vue.js实战案例】- Vue.js递归组件实现组织架构树和选人功能
大家好!先上图看看本次案例的整体效果. 浪奔,浪流,万里涛涛江水永不休.如果在jq时代来实这个功能简直有些噩梦了,但是自从前端思想发展到现在的以MVVM为主流的大背景下,来实现一个这样繁杂的功能简直不 ...
- Vue.js之组件传值
Vue.js之组件传值 属性传值可以从父组件到子组件,也可以从子组件到父组件. 这里讲一下从父组件到子组件的传值 还以上次的demo为例,demo里有APP.vue是父组件,Header.vue,Us ...
- vue.js 同级组件之间的值传递方法(uni-app通用)
vue.js 兄弟组件之间的值传递方法 https://blog.csdn.net/jingtian678/article/details/81634149
- Vue.js之组件(component)
从结构上看,组件之于实例,就好比轮子之于汽车.从属性和方法来看,组件有实例的大部分方法,如果Vue实例是孙悟空,组件就好比实例的一个毫毛,变化多端却为Vue实例所用. 目录: 组件的注册 is的作用 ...
- 用Vue.js递归组件构建一个可折叠的树形菜单
在Vue.js中一个递归组件调用的是其本身,如: Vue.component('recursive-component', { template: `<!--Invoking myself! ...
随机推荐
- SHOW CREATE DATABASE Syntax
SHOW CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name Shows the CREATE DATABASE statement that cre ...
- 更改 easyUI 的皮肤样式
我的版本是:jquery-easyui-1.3.2.根据官方提供的皮肤样式,——在theme 里面: 只需要在引入的 页面中 link样式的地址改变即可: <link rel="sty ...
- Python MySQLdb 使用utf-8 编码插入中文数据
参考地址:http://blog.csdn.net/dkman803/article/details/1925326/ 本人在使用python,mysqldb操作数据库的时候,发现如下问题,编码如下: ...
- javascript学习笔记(三)
1.与命名空间相关的方法以及属性 2.任何支持style特性的HTML元素在Javascript中都有一个对应的style属性.这个属性是CSSStyleDecalration的实例, 包含着通过HT ...
- 把sqlserver查询结果复制到Excel出现数据记录遗漏
问题:今天在sqlserver查询,总共有10000记录,把结果复制到Excel,发现少掉352条,用导出csv也是如此. 原因:经排查发现缺少的记录是因为商品名称字段包含英文双引号". 解 ...
- PHP经常使用正則表達式汇总
1. 平时做站点常常要用正則表達式,以下是一些解说和样例,仅供大家參考和改动使用: 2. "^\d+$" //非负整数(正整数 + 0) 3. "^ ...
- 图片扩展---基于opencv-python实现
目标: 将一张长方形图片扩展成一张正方形图片,例如: 200x300x3的一张图片扩展成一张300x300x3的图片,填充部分使用白色. 代码: import cv2 import os imglis ...
- Android开发系列之性能优化
一直想整理一篇关于Android性能优化的博客,正好今天借鉴一些书籍资料,总结一下自己对于这块的一些认识.相信大家都听说过16ms的原则,即每两个画面之间的绘制时间间隔不能超过16ms,否则人眼能够感 ...
- 26. Remove Duplicates from Sorted Array【easy】
26. Remove Duplicates from Sorted Array[easy] Given a sorted array, remove the duplicates in place s ...
- UITabelViewFootView(转)
在处理UITableView表格时,我们希望在View底部添加按钮. 用户拖动UITableView时按钮能跟随移动. 如题,实现如下界面: - (CGFloat)tableView:(UITable ...