槽口
槽口是什么?
用来混合父组件与子组件自己的模板(就是可以在组件被调用的时候向其内部插入新的dom节点)槽口也是组件提高复用的技术之一 props如果是只能向组件内部插入数据的话 那么槽口就是可以向组件内部插入新的dom节点
基础用法
默认情况在组建是一个自定义标签,但是在组件被调用得到时候不能直接插入dom节点,所以在这个时候需要给组件内部设置一个插槽 来接受外部插入的数据
语法
<div>
zizizizizziizziz
<slot></slot>
</div>
上面这种写法 后期插入的内容多个就不好维护了 所以在开发的时候使用的很少
具名槽口
带有名字的槽口 给槽口在定义的时候起个名字
语法:
在定义的时候 <slot name="给槽口起个名字随便写"></slot>
在插入内容的时候:
<组件>
<p slot="你要插入的slot的namne"></p>
子组件
<template>
<div>
zizizizizziizziz
<div class="red">
<slot name="xiaoming"></slot>
</div>
<hr>
<div class="yellow">
<slot name="xiaohong"></slot>
</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
.red>h1{
color:red;
}
.yellow>h1{
color:yellow;
}
</style>
父组件
<template>
<div>
fufufufuffufufu
<Sz>
<h1 slot="xiaohong">插入内容1</h1>
<h1>插入内容2</h1>
<h1>插入内容3</h1>
<h1>插入内容4</h1>
<h1 slot="xiaoming">插入内容5</h1>
<h1>插入内容6</h1>
<h1>插入内容7</h1>
<h1>插入内容8</h1>
<h1 slot="xiaoming">插入内容9</h1>
<h1>插入内容0</h1>
</Sz>
</div>
</template>
<script>
import Sz from "./slotzi.vue"
export default {
components:{
Sz
}
}
</script>
<style>
</style>
路由
传统的项目怎样切换跳转页面
1.新建很多的html文件
2.使用 标签的方式进行跳转(a标签)或者使用js的方式进行跳转(window.location。href)
传统的项目称之为多页面项目
路由基本概念
根据url的不同来渲染不同的组件页面
SPA --- 单页面应用 在用户切换页面的时候 没有那种传统页面的白屏问题 提高了用户的体验
路由基本创建
vue-cl自动创建
在创建脚手架的时候选择自定义,再选择router空格选中,一路回车即可
在创建完项目之后 会在src中多了两个文件夹
router ---》当前文件夹就是配置路由的文件夹
views ---》当前文件夹就是来写路由页面组件的
带有路由的空项目怎么办?
1.删除compontents里面的helloword.vue 与views里面的home.vue about.vue文件
2.views下创建你所需要的组件页面
3.需要 配置路由规则 去router下的index.js中配置
3.1引用你所想要的页面到index.js下 import from
3.2在index.js的数组对象中 进行规则的配置
// 引用vue
import Vue from 'vue'
// 引用vue的路由功能模块
import VueRouter from 'vue-router'
// 引用你要配置的路由页面
// @ 只要在路径中出现 无论是在那个层级 只要写@就指向src
import Home from "@/views/home.vue"
import Jingxi from "@/views/jingxi.vue"
import Phone from "@/views/phone.vue"
import Shop from "@/views/shop.vue"
import User from "@/views/user.vue"
// 在vue中 使用 vue路由
Vue.use(VueRouter)
// 配置路由规则的地方
const routes = [
// 配置路由规则
{
path: '/home', //url的路径
name: 'home',//给这个规则起个名字
component: Home //根据上后面的path路径 所渲染的组件页面
},
{
path: '/jingxi', //url的路径
name: 'jingxi',//给这个规则起个名字
component: Jingxi //根据上后面的path路径 所渲染的组件页面
},
{
path: '/phone', //url的路径
name: 'phone',//给这个规则起个名字
component: Phone //根据上后面的path路径 所渲染的组件页面
},
{
path: '/user', //url的路径
name: 'user',//给这个规则起个名字
component: User //根据上后面的path路径 所渲染的组件页面
},
{
path: '/shop', //url的路径
name: 'shop',//给这个规则起个名字
component: Shop //根据上后面的path路径 所渲染的组件页面
},
]
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
export default router
手动创建
路由导航
标签方式---声明式导航
使用router-link这个标签来完成也免得跳转 其中有个to属性就是 你要去哪里的路径
<template>
<div class="bar">
<!-- 声明式导航 -->
<router-link to="/home">首页 </router-link>
<router-link to="/jingxi">惊喜 </router-link>
<router-link to="/phone">手机 </router-link>
<router-link to="/shop">购物 </router-link>
<router-link to="/user">我的 </router-link>
</div>
</template>
声明式导航选中样式类
每当我们选中那个声明式导航之后 vue会自动给这个导航添加一个router-link-active的类名 那么我们就可以根据这个动态的类名添加样式
js的方式---编程式导航
1.跳转 this.$router.push("/去哪里的路径")
2.替换 this.$router.replace("/替换的路径")
fun(){
this.$router.push("/home")
}
3.前进与后退this.$router.go() 正数 前进 负数 后退