路由跳转
- this.$router.push('/course');
- this.$router.push({
- name:'course'
- })
- this.$router.go(-1) // JS 逻辑使用 history, 完成返回上一页
- this.$router.go(1) // 前进一页
- <router-link to="/course"> 课程页 </router-link>
- <router-link :to="{name:'course'}"> 课程页 </router-link>
路由传参
第一种
router.JS
- routes: [
- // ...
- {
- 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.$route.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;
- }
- store
- export default new Vuex.Store({
- state: {
- title: '默认值'
- },
- mutations: {
- // mutations 为 state 中的属性提供 setter 方法
- // setter 方法名随意, 但是参数列表固定两个: state, newValue
- setTitle(state, newValue) {
- state.title = newValue;
- }
- },
- actions: {}
- })
赋值
- this.$store.state.title = 'newTitle'
- this.$store.commit('setTitle', 'newTitle')
取值
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
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
来源: http://www.bubuko.com/infodetail-3235925.html