vue_04day 路由初始

目录

  • vue_04 项目初始:
    • vue 文件构造:
    • vue项目目录结构:
      • 项目入口(main.js):
      • vue项目启动生命周期:
      • 根组件(vue.js):
      • router.js:
      • 创建的页面:
      • 全局样式文件配置(css样式):
      • js类的原型:类属性
      • vue组件的生命周期钩子:
      • 路由跳转方式:
    • 路由小结:

vue_04 项目初始:

vue 文件构造:

1.vue 文件:
    # 1) template:有且只有一个根标签
    # 2) script:必须将组件对象导出 export default {}
    # 3) style: style标签明确scoped属性,代表该样式只在组件内部起作用(样式的组件化)
    
2.vue文件 必须先export default {} 倒出,才会被使用·

3.vue 文件样式:







vue项目目录结构:

 #vue项目目录结构分析

```
├── v-proj
|   ├── node_modules    // 当前项目所有依赖,一般不可以移植给其他电脑环境
|   ├── public          
|   |   ├── favicon.ico // 标签图标
|   |   └── index.html  // 当前项目唯一的页面
|   ├── src
|   |   ├── assets      // 静态资源img、css、js
|   |   ├── components  // 小组件
|   |   ├── views       // 页面组件
|   |   ├── App.vue     // 根组件
|   |   ├── main.js     // 全局脚本文件(项目的入口)
|   |   ├── router
|   |   |   └── index.js// 路由脚本文件(配置路由 url链接 与 页面组件的映射关系)
|   |   └── store   
|   |   |   └── index.js// 仓库脚本文件(vuex插件的配置文件,数据仓库)
|   ├── README.md
└   └── package.json等配置文件
```

项目入口(main.js):

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

Vue.config.productionTip = false

new Vue({
    router,
    store,
    render: h => h(App)
}).$mount('#app')

解析:
import Vue from 'vue'  // 加载vue环境
import App from './App.vue'  // 加载根组件
import router from './router'  // 加载路由环境
import store from './store'  // 加载数据仓库环境

Vue.config.productionTip = false  (app软件启动时的tip指引)
new Vue({
    el: '#app',
    router, // router = router
    store,
    render: function (readFn) {
        return readFn(App);   //替换
    },
});

vue项目启动生命周期:

简单的请求流程:
1) 加载mian.js启动项目
    1) 加载mian.js启动项目
    i) import Vue from 'vue' 为项目加载vue环境
    ii) import App from './App.vue' 加载根组件用于渲染替换挂载点
    iii) import router from './router' 加载路由脚本文件,进入路由相关配置
    
2) 加载router.js文件,为项目提供路由服务,并加载已配置的路由(链接与页面组件的映射关系)
    注:不管当前渲染的是什么路由,页面渲染的一定是根组件,链接匹配到的页面组件只是替换根组件中的
    
    
3) 如果请求链接改变(路由改变),就会匹配新链接对应的页面组件,新页面组件会替换渲染router-view标签,替换掉之前的页面标签(就是完成了页面跳转)

根组件(vue.js):



文件结构内容不变动!!!

router.js:

import 别名 from './views/xxxx'  #导入的文件

export default new Router({
    mode: 'history',
    base: process.env.BASE_URL,
    routes: [
        {
            path: '/xx',
            name: 'xxx',
            component: xx     导入的文件(.vue)
      },

创建的页面:

eg:
    

全局样式文件配置(css样式):

# assets/css/global.css

html, body, h1, h2, ul, p {
    margin: 0;
    padding: 0;
}
ul {
    list-style: none;
}
a {
    color: black;
    text-decoration: none;
}

main.js配置:

import '@/assets/css/global.css'  
require('@/assets/css/global.css');

js类的原型:类属性

vue组件的生命周期钩子:

    1)一个组件从创建到销毁的整个过程,就称之为组件的生命周期
    # 2)在组件创建到销毁的过程中,会出现众多关键的时间节点,如 组件要创建了、组件创建完毕了、组件数据渲染完毕了、组件要被销毁了、组件销毁完毕了 等等时间节点,每一个时间节点,vue都为其提供了一个回调函数(在该组件到达该时间节点时,就会触发对应的回调函数,在函数中就可以完成该节点需要完成的业务逻辑)
    # 3)生命周期钩子函数就是 vue实例 成员


# 任何一个组件:在vue组件的script的export default导出字典中直接写钩子函数

export default {
    // ...
    beforeCreate() {
        console.log('组件创建了,但数据和方法还未提供');
        // console.log(this.$data);
        // console.log(this.$options.methods);
        console.log(this.title);
        console.log(this.alterTitle);
    },
    // 该钩子需要掌握,一般该组件请求后台的数据,都是在该钩子中完成
    // 1)请求来的数据可以给页面变量进行赋值
    // 2)该节点还只停留在虚拟DOM范畴,如果数据还需要做二次修改再渲染到页面,
    //  可以在beforeMount、mounted钩子中添加逻辑处理


  beforeCreate() {
            console.log('开始创建组件');
            console.log(this.title);
            console.log(this.printTitle);
            this.title = '呵呵';
        },
        created() {  // 重点
            console.log('组件创建成功');
            console.log(this.title);
            console.log(this.printTitle);
            // 请求后台数据,完成数据的更新
            this.title = '嘿嘿';
        },
        beforeMount() {
            console.log('组件开始渲染');
        },
        mounted() {
            console.log('组件渲染成功');
            this.title = '嘻嘻';
        },
        beforeUpdate() {
            console.log('数据开始更新');
        },
        updated() {
            console.log('数据更新完毕');
        },
        activated() {
            console.log('组件激活');
        },
        deactivated() {
            console.log('组件停用');
        },
        destroyed() {
            console.log('组件销毁成功');
        }

路由跳转方式:

this.$router.push({name: '路由名', query: {拼接的参数}})
this.$router.go(number)  //前进 | 后退


路由配置:
方式一:
    {
    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

路由小结:

 概括: 
    1)路由配置:router/index.js
    2)路由跳转与路由渲染:router-link、router-view、$router.push、$router.go
    3)路由传参:两种传参

新增页面三步骤:
    1) 在views文件夹中创建视图组件

    2) 在router.js文件中配置路由

    3) 设置路由跳转,在指定路由下渲染该页面组件(替换根组件中的router-view标签)

你可能感兴趣的:(vue_04day 路由初始)