.vue文件
template
模板 ,只能有一个根节点
script
逻辑,style
样式
<template>
<div class="box">
div>
template>
<script>
script>
<style lang="less" scoped="scoped">
style>
<template>
<div>
<h1>首页h1>
<p>{{msg}}p>
<p @click="say()">点击p>
<Content>Content>
div>
template>
<script>
// 导入组件
import Content from '../components/Content.vue'
export default {
name : "Home",
components : {
Content
},
data() {return {
msg : "你好vue"
}},
methods : {
say() {
alert(this.msg);
}
}
}
</script>
components文件夹
里面创建一个vue文件
,就是组件,与view文件夹下vue文件格式一样
view文件夹里面导入
,创建的组件
import Content from '../components/组件名字.vue'
import Content from '@/components/组件名字.vue'
注册到view文件夹下的vue文件中
,谁调用谁注册
components : {组件的名字}
,多组件用逗号隔开<组件的名字>组件的名字>
<template>
<div>
<h1>首页h1>
<p>{{msg}}p>
<p @click="say()">点击p>
<Content>Content>
div>
template>
<script>
// 导入组件
import Content from '../components/Content.vue'
import Content from '@/components/Content.vue'
export default {
name : "Home",
components : {
Content
},
data() {return {
msg : "你好vue"
}},
methods : {
say() {
alert(this.msg);
}
}
}
script>
<style lang="less" scoped="scoped">
style>
less语法
则需要在style标签上写入lang="less"
scoped="scoped"
进行css语法隔离impprt "@/地址/xxx.css"
<script>
// 导入css
import '@/assets/base.css'
script>
<style lang="less" scoped="scoped">
.box {
width : 200px;
height : 200px
}
style>
beforeCreate
创建之前created
当vue创建完毕 常用,可以获取到组件的实例的this
beforeMount
挂载之前mounted
挂载之后,挂载完毕,组件已经首次喧嚷到页面
beforeUpdate
更新之前Updated
更新之后beforeDestroy
卸载之前,常用
destroyed
卸载之后render() {}
fatch("请求地址").then(res => { return res.json()}).then(res => { js代码,赋值等等})
;export default {
data() {return {
jokers : [] // 初始化笑话数据,为数组
}},
created() {
this.getJoks();
// 在生命周期的created 指向 获取笑话数据的方法
},
methods : {
getJoks() {
// fatch H5 Ajax api
fetch("http://www.520mg.com/mi/list.php?page=1")
.then( res => {
return res.json(); // 吧获取的数据转换为json
})
.then( res => {
console.log(res);
// 吧以前的笑话数据和当前的笑话数据合并
this.jokers = this.jokers.concat(res.result);
})
}
}
}
ctrl+shift+i
打开调试面板network
打开网络请求选项卡刷新
,查看时先刷新1. 查看这个请求地址是否错误
Request URL:http://www.520mg.com/mi/list.php?page=1
2. 产看请求参数
Query string parameters
// 1. 查看响应码
Status Code:200
// 如果 响应码为200,页能看到数据,则一定是js代码写错
.ten( res => {})
请求成功.catch( err => {})
请求失败<div class="joker">
<div class="joker" v-if="jokers.length">
<div class="box" v-for="item in jokers" :key="item.docid" >
{{item.summary}}
<hr />
div>
<p class="center" @click="getJoks()" v-if="can">加载更多...p>
div>
<div v-else>
{{empty}}
div>
div>
.catch( err => {
this.empty = "数据请求失败,请稍后再试"
})
父传子
props
属性来接收created
生命周期时,把传过来的数据赋值为子组件自己的数据data() {return {
// 创建子组件自己的数据
count : 0
}},
props : {
"接收的数据名" : {type : 类型 , default : 默认值}
},
created() {
// 将传递过来的数据赋值给自己的数据
this.count = this.num;
}
子传父
this.$emit(“发送的事件名”,发送的数据) ,将改变的数据进行发送,在子组件中
接收数据,在父组件中,的子组件的标记标签上
子组件的代码
<button @click="count++;$emit('numchange',count);">{{count}}button>
<template>
<div>
<Step @numchange="numchange($event)">Step>
{{num}}
div>
template>
// 父组件
methods : {
// 定义的事件,传递参数
numchange(e) {
this.num = e;
}
},
组件间传参—非父子间传参—小数据,大数据vuex
// 导入Vue
import Vue from 'vue';
// 导出vue实例,拥有vue的所有的方法和属性
export default new Vue();
import 名字 from '../utils/名字.js'
导入的vue实例文件的名字.$emit("发送的事件",发送的数据);
$emit();
发射事件<div class="btn">
<button @click="send('red')">红button>
<button @click="send('green')">绿button>
<button @click="send('blue')">蓝button>
div>
// 导入中间文件Bus ,
import Bus from '../utils/Bus.js'
export default {
name : "Btn",
methods : {
// 触发事件,发送数据
send(str) {
Bus.$emit("colorChange",str);
}
}
}
导入的vue实例文件的名字.$on("发送的事件",$event => {});
,在created生命周期进行$on();
监听事件<div class="color">
<p :style="{color : color}">真是美丽的颜色p>
div>
export default {
name : "Color",
data() {return {
color : "red"
}},
created() {
// 监听数据 colorChange,$event,是传递过来的数据
Bus.$on("colorChange",$event => {
this.color = $event;
})
}
}