day 68小结

js原型补充

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <div id="app">
    </div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {

        }
    })
</script>
<script>

    function A() {}

    let a1 = new A();
    let a2 = new A();

    // 为A类添加原型 => 类似于类属性
    A.prototype.num = 100;

    console.log(a1.num);
    console.log(a2.num);


    // ES6语法下类
    class B {
        constructor(name) {
            this.name = name;
        }
    }
    let b1 = new B('Tom');
    let b2 = new B('Ben');
    B.prototype.count = 666;
    console.log(b1.count);
    console.log(b2.count);

    console.log(b1.name);
    console.log(b2.name);

    // 推导
    Vue.prototype.$ajax = 12345;
    // this.$ajax

</script>
</html>

vue项目生命周期(重点)

1, 启动项目,加载主脚本文件 main.js
加载vue环境, 创建根组件完成渲染
加载系统已有的第三方环境: router,store
加载自定义的第三方环境与自己配置的环境: 后期项目不断添加

2, router被加载, 就会解析router文件夹下的index.js 脚本文件,完成 路由-组件 的映射关系

3, 新建视图组件 . vue(在views文件夹中) 在路由中配置(在router的index.js中), 设置路由跳转(在导航栏组件中Nav.vue)

配置自定义全局样式

配置全局样式: @就代表src文件夹的绝对路径, 官方提供require加载静态文件

// import '@/assets/css/global.css'
reuqire('@assets/css/global.css')

路由逻辑跳转(重点)

<script>
	export default {
        name:"Nav",
        methods: {
            goHome() {
                //console.log(this.$router); //控制路由跳转
                //console.log(this.$route);	//控制路由数据
                
                if (this.$route.path !=='/') {
                    //this.$router.push('/');	// 往下再跳转一页
                    //this.$rouoter.go(2);	//go是历史记录前进后退,正数是前进,负数是后退
                }
            }
        }
    }

</script>

组件的生命周期钩子

​ 1, 一个组件从创建到销毁的众多时间节点回调的方法
​ 2, 这些方法都是vue组件实例的成员
​ 3, 生命周期钩子的作用就是满足在不同的时间节点做需要完成的事

<script>
    import Nav from '../components/Nav'
	export default {
        data() {
            return {}
        },
        methods: {}
        components: {
            Nav,
        },
        beforeCreate() {
       		console.log('Home组件要创建了')
    }
    	creaeted() { // 重要方法: 在该钩子中完成后台数据的请求
            console.log('Home组件创建成功了')
        }
    	beforeMount() {
            console.log('Home组件准备加载')
        }
    	mounted() { // 特别耗时的数据请求, 可以延后到组件初步加载成功后,再慢慢请求
            console.log('Home组件加载完成')
        }
    	destroyed() {
            console.log('Home组件要销毁了')
        }
</script>

路由配置

{
	path: '/course/detail',
	name: 'course-detail',
    component: CourseDetail
}
{
	path: '/detail',
    redirect: '/course/detail'
}
this.$router.push('/course/detail');  ==  this.$router.push('/detail');
this.$router.push('/course/detail?pk=1');  => this.$route.query.pk

​```````````````````````````````````````````````````````````````````````
{
	path: '/course/detail/:pk',
	name: 'course-detail',
    component: CourseDetail
}
this.$router.push('/course/detail/10');  => this.$route.params.pk

路由传参

第一种

<!--vue文件中-->
<router-link :"`/course/detail?pk=${course.id}`">{{ course.title }}</router-link>
<router-link :to="{
                  name: 'course-detail',
                  query: {pk: course.id}
                  }">{{ course.title }}
</router-link>

js路由配置

{
    path: '/course/detail',
    name: 'course-detail',
    component: CourseDetail
}

第二种

<router-link :to="`/course/${course.id}/detail`">{{ course.title }}</router-link>

js路由配置

{
    path: '/course/:pk/:uid/detail',
    name: 'course-detail',
    component: CourseDetail
}

总结:

1、创建项目:vue create 项目名  -  babel、vue-router、vuex

2、项目目录:
	node_modules依赖(不同电脑依赖需要重新构建)
	views:页面组件
	components:小组件
	router/index.js:路由配置文件 - 路径与页面组件对应关系
	App.vue:根组件,固定五行话(看代码)
	main.js:项目总脚本文件 - 配置所有环境,加载根组件
	
3、vue请求生命周期:
	浏览器请求/user => router插件映射User.vue组件 => User.vue组件替换App.vue中的<router-view />占位符
	注: i) 可以用 <router-link to="/user">用户页</router-link>完成标签跳转
		ii) this.$router.push('/user')完成逻辑跳转
		
4、vue组件的生命周期钩子:组件 创建 到 销毁 中的时间节点回调的方法
	created(){}  |  mounted(){}
	
5、路由跳转
this.$router.push({name: '路由名', query: {拼接的参数}})
this.$router.go(number)

6、路由配置
{
	path: '/course/detail',
	name: 'course-detail',
    component: CourseDetail
}
{
	path: '/detail',
    redirect: '/course/detail'
}
this.$router.push('/course/detail');  ==  this.$router.push('/detail');
this.$router.push('/course/detail?pk=1');  => this.$route.query.pk

​```````````````````````````````````````````````````````````````````````
{
	path: '/course/detail/:pk',
	name: 'course-detail',
    component: CourseDetail
}
this.$router.push('/course/detail/10');  => this.$route.params.pk


7、js类的原型:类属性

8、配置全局css样式
import '@/assets/css/global.css'
require('@/assets/css/global.css');


路由知识点概况:
	1)路由配置:router/index.js
	2)路由跳转与路由渲染:router-link、router-view、$router.push、$router.go
	3)路由传参:两种传参
"""
posted @ 2019-12-19 23:39  LZF_GD  阅读(91)  评论(0编辑  收藏  举报
Live2D