Vue干货分享

Vue干货分享

1.进入要创建项目的目录

cd 路径
#创建项目
vue init webpack luffycity
#进入项目目录,启动项目进行测试
npm run dev

2.常用组件安装

npm i element-ui -S --registry https://registry.npm.taobao.org
npm i axios -S --registry https://registry.npm.taobao.org

3.main.js文件配置如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kkC3Gxno-1623426367979)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210521080929915.png)]

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

// 注册并使用vue-video插件
import 'video.js/dist/video-js.css';
// require('video.js/dist/video-js.css'); 与上一句等同。

import 'vue-video-player/src/custom-theme.css';
// require('vue-video-player/src/custom-theme.css'); 与上一句等同。

import VideoPlayer from 'vue-video-player';
Vue.use(VideoPlayer);

Vue.config.productionTip = false;
Vue.use(ElementUI);
/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
});

4.router 下的index.js配置如下

在这里插入图片描述

此时一定要在App.vue中设置出口,否则不会自动匹配路由

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FnUcncDJ-1623426367985)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210521081257837.png)]

5.关于路径的问题

例如匹配静态路径使用
#这个路径是以src为根目录
<img src="@/assets/head-logo.svg" alt="">

坑:字典中的值为路径时,我们需要通过require( )将路径包裹起来,否则这个路径不可用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pBiCIC15-1623426367989)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210521081605896.png)]

6.常用方法及功能

token认证需要携带的参数

get请求

let token = localStorage.user_token || sessionStorage.user_token;
        this.$axios.get(`${this.$settings.Host}/users/information/${this.id}/`, {
          headers: {
            'Authorization': 'jwt ' + token,
          }
        }).then((res) => {
          console.log(res.data);
          this.mobile = res.data.mobile;
          this.WeChat = res.data.WeChat;
          this.email = res.data.email;
          this.username = res.data.username;
        })

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5dzqCp3N-1623426367990)(Vue%E5%9F%BA%E6%9C%AC%E9%85%8D%E7%BD%AE.assets/image-20210611233051467.png)]

post请求与put请求一样

let token = localStorage.user_token || sessionStorage.user_token;

this.$axios.put(`${this.$settings.Host}/users/information/${this.id}/`, {
          userid: this.id, username: this.username, WeChat: this.WeChat, email: this.email,

        }, {
          headers: {
            'Authorization': 'jwt ' + token,
          }
        }).then(data => {
          console.log(data);
          this.$message({
            message: '修改信息成功',
            type: 'success'
          });

7.错误展示

let data = {'mobile': '手机号码', 'password': '密码', 'WeChat': '微信', 'email': "邮箱", 'username': "用户名"};
          let ret = error.response.data;
          let msg = '';
          for (let key in ret) {
            // console.log(ret[key]);
            if (!data[key]) {
              msg = ret.non_field_errors[0];
            } else {
              let s = ret[key][0];
              console.log(s);
              msg = s.replace(/.*?字段/, data[key]);
            }
          }
          this.get_information();
          this.$message.error({'message': msg})

8.组件传值

父组件像子组件传值

父组件

          <CartItem v-for="(value,index) in cart_list" :key="value.id" :cart="value"></CartItem>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SPSFULPN-1623426367991)(Vue%E5%9F%BA%E6%9C%AC%E9%85%8D%E7%BD%AE.assets/image-20210611233500821.png)]

子组件接收
    props: ['cart']

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TGQoW0Hm-1623426367993)(Vue%E5%9F%BA%E6%9C%AC%E9%85%8D%E7%BD%AE.assets/image-20210611233535104.png)]

9.配置vuex,及使用

官网:https://vuex.vuejs.org/zh/

安装
https://vuex.vuejs.org/zh/

这个状态自管理应用包含以下几个部分:

创建如下目录

  • state,驱动应用的数据源;

  • view,以声明方式将 state 映射到视图;

  • actions,响应在 view 上的用户输入导致的状态变化。

index.js 文件

import Vue from 'vue'
import Vuex from 'vuex'
import {default} from "vuex/dist/vuex";

Vue.use(Vuex)

export default new Vuex.Store({
  // 数据仓库,类似于vue中的data
  state: {
    cart: {
      cart_length: 0,
    }
  },
  // 操作数据的具体方法 类似于vue的methods
  mutations: {
    add_cart(state, cart_len) {
      state.cart.cart_length = cart_len;
      
    }
  }
})

在main.js中将store挂载进去

此时我们所有的 应用就可以使用公共使用store了

  • 具体使用
例如获取购物车中的条数
         <b>{{$store.state.cart.cart_length}}</b>

  • 调用其具体的方法

            this.$axios.get(`${this.$settings.Host}/cart/course_len/`, {
    
    

10.配置vue-video

  • 安装vue-video

    npm install vue-video-player --save
    
  • main中注册

    在main.js中注册加载组件

    require('video.js/dist/video-js.css');
    require('vue-video-player/src/custom-theme.css');
    import VideoPlayer from 'vue-video-player'
    Vue.use(VideoPlayer);
    
  • detail.vue

<div class="wrap-left">
          <video-player class="video-player vjs-custom-skin"
                        ref="videoPlayer"
                        :playsinline="true"
                        :options="playerOptions">
          </video-player>
        </div>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值