zoukankan      html  css  js  c++  java
  • Vue之路由跳转传参,插件安装与配置

    路由跳转

    this.$router.push('/course');               
    this.$router.push({name:course});
    
    this.$router.go(-1);   //后退一页
    this.$router.go(1);  // 前进一页
    
    <router-link to = "/course">课程页</router-link>
    <router-link  :to="{name:'course'}"> 课程页  </router-link>

    路由传参

    第一种

    router.js

    routers:[
        //...
        {
            path:'/course/:id/detail',   
            name:'course-detail',
            component:CourseDetail
        }
    ]    

    跳转.vue

    <template>
        <router-link  :to="`/course/${course.id}/detail`">{{course.name}}</router-link>
    </template>
    
    <script>
        //...
        goDetail(){
               this.$router.push(`/course/${this.course.id}/detail`);
        }
    
    </script>

    接收.vue

    created(){
       let id = this.$router.params.id;
    }

    第二种

    router.js

    routes: [
        // ...
        {
            path: '/course/detail',
            name: 'course-detail',
            component: CourseDetail
        },
    ]

    跳转.vue

    <template>
        <router-link :to="{
                name: 'course-detail',
                query: {id: course.id}
            }">{{ course.name }}</router-link>
    </template>
    <script>
        // ...
        goDetail() {
            this.$router.push({
                name: 'course-detail',
                query: {
                    id: this.course.id
                }
            });
        }
    </script>

    接收.vue

    created() {
        let id = this.$route.query.id;
    }

    组件之间的数据交互  (跨组件传参)

    组件可以有父子关系,也可以无关系

    有父子关系  可以通过  子传父  父传子 的方法

    如果没有父子关系  我们则需要通过一种数据存储的方式  来完成无关联的组件之间的数据交互  也成为跨组件传参

    跨组件传参的4种方式

    1.localSorage :永久存储数据库

    2.sessionStorage:临时存储数据(刷新页面数据不重置,关闭再重新开启页面数据重置)

    3.cookie:临时或永久存储数据(由过期事件决定)

    4.vuex的仓库(store.js) :临时存储数据(刷新页面数据重置)

    vuex的仓库(store.js)

    store.js

    export default new Vuex.Store({
        state: {
            title: '默认值'
        },
        mutations: {
            // mutations 为 state 中的属性提供setter方法
            // setter方法名随意,但是参数列表固定两个:state, newValue
            setTitle(state, newValue) {
                state.title = newValue;
            }
        },
        actions: {}
    })

    赋值.vue

    this.$store.state.title = 'newTitle'  //直接通过 state字典
    this.$store.commit('setTitle', 'newTitle') //通过 mutations 中的属性方法

    取值.vue

    console.log(this.$store.state.title)

    插件使用

    vue-cookie插件

    安装

    cnpm install vue-cookies

    main.js  配置

    //第一种
    import cookies from 'vue-cookies'   //导入插件
    Vue.use(cookies);        //加载插件
    new Vue({
        //...
        cookies,                 //配置使用插件原型  $cookies
    }).$mount('#app');
    
    
    //第二种
    import  cookies  from  'vue-cookies'   //导入插件
    Vue.prototype.$cookies = cookies;    //直接配置插件原型  $cookies

    使用

    // 增(改): key,value,exp(过期时间)
    // 1 = '1s' | '1m' | '1h' | '1d'
    this.$cookies.set('token', token, '1y');
    
    // 查:key
    this.token = this.$cookies.get('token');
    
    // 删:key
    this.$cookies.remove('token');

    注: cookie一般都是用来存储token的

    1.什么是token: 安全认证的字符串
    2.谁产生的: 后台产生的
    3.谁来存储:后台存储(session表,文件,内存缓存),前台存储(cookie)
    4.如何使用:服务器先生成反馈给前台(登录认证过程),前台提交给后台完成认证(需要登陆后的请求)
    5.前后台分离项目:后台生成token,返回给前台=>前台自己存储,发送携带token请求=>后台完成token校验 =>后台得到登录用户

    axios插件

    安装

    cnpm install axios

    main.js配置

    import axios from 'axios'    // 导入插件
    Vue.prototype.$axios = axios;    // 直接配置插件原型 $axios

    使用

    this.axios({
        url: '请求接口',
        method: 'get|post请求',
        data: {post等提交的数据},
        params: {get提交的数据}
    }).then(请求成功的回调函数).catch(请求失败的回调函数)

    此时前端与后端做数据交互时  会出现错误   这是 跨域问题

    跨域问题(同源策略)

    // 后台接收到前台的请求,可以接收前台数据与请求信息,发现请求的信息不是自身服务器发来的请求,拒绝响应数据,这种情况称之为 - 跨域问题(同源策略 CORS)
    
    // 导致跨域情况有三种
    // 1) 端口不一致
    // 2) IP不一致
    // 3) 协议不一致
    
    // Django如何解决 - django-cors-headers模块
    // 1) 安装:pip3 install django-cors-headers
    // 2) 注册:
    INSTALLED_APPS = [
        ...
        'corsheaders'
    ]
    // 3) 设置中间件:
    MIDDLEWARE = [
        ...
        'corsheaders.middleware.CorsMiddleware'
    ]
    // 4) 设置跨域:
    CORS_ORIGIN_ALLOW_ALL = True

    django  settings  国际化配置

    LANGUAGE_CODE = 'zh-hans'
    
    TIME_ZONE = 'Asia/shanghai'
    
    USE_I18N = True
    
    USE_L10N = True
    
    USE_TZ = False

    element-ui插件

    安装

    cnpm i element-ui -S

    main.js配置

    import ElementUI from 'element-ui';
    import 'element-ui/lib/theme-chalk/index.css';
    Vue.use(ElementUI);

    使用

    依照官网 https://element.eleme.cn/#/zh-CN/component/installation api

    bootstrap插件

    安装

    cnpm install bootstrap@3

    main.js配置

    import 'bootstrap'
    import 'bootstrap/dist/css/bootstrap.min.css'

    jquery插件

    安装

    cnpm install jquery

    配置   需要现在根目录创建一个 vue.config.js 文件

    vue.config.js

    const webpack = require("webpack");
    
    module.exports = {
        configureWebpack: {
            plugins: [
                new webpack.ProvidePlugin({
                    $: "jquery",
                    jQuery: "jquery",
                    "window.jQuery": "jquery",
                    Popper: ["popper.js", "default"]
                })
            ]
        }
    };
    万般皆下品,唯有读书高!
  • 相关阅读:
    BNU 51002 BQG's Complexity Analysis
    BNU OJ 51003 BQG's Confusing Sequence
    BNU OJ 51000 BQG's Random String
    BNU OJ 50999 BQG's Approaching Deadline
    BNU OJ 50998 BQG's Messy Code
    BNU OJ 50997 BQG's Programming Contest
    CodeForces 609D Gadgets for dollars and pounds
    CodeForces 609C Load Balancing
    CodeForces 609B The Best Gift
    CodeForces 609A USB Flash Drives
  • 原文地址:https://www.cnblogs.com/s686zhou/p/11668042.html
Copyright © 2011-2022 走看看