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>

### 前端开发干货分享内容和主题推荐 #### 主题一:Vue.js 生态圈优质资源 对于热爱 Vue.js 框架的开发者而言,探索由社区维护的相关项目库无疑是一次灵感之旅[^1]。这些资源不仅限于基础组件或者模板样式,还包括完整的解决方案如仪表盘设计等。例如,“Vue Paper Dashboard PRO” 提供了一个优雅而现代化的数据可视化界面选项集合,适用于多种业务场景下的需求满足。 ```html <!-- 示例代码 --> <template> <div id="app"> <!-- 使用PaperDashboard组件 --> <paper-dashboard></paper-dashboard> </div> </template> <script> import PaperDashboard from 'vue-paper-dashboard'; export default { components: { PaperDashboard } } </script> ``` --- #### 主题二:JavaScript 中 this 关键字深入浅出 尽管 `this` 的指向规则看似复杂多变,但在实际编码过程中却是不可或缺的一部分[^2]。与其纠结记忆各种特殊情况下的行为表现,不如尝试从更高层次去理解其背后的设计哲学——即函数执行上下文环境是如何决定当前实例引用关系的确立过程。这种思维方式转换有助于提高解决问题效率的同时也能增强程序健壮性。 --- #### 主题三:浏览器特性探秘 - Navigator 对象详解 Navigator 是 JavaScript 中用于获取有关用户代理及其配置信息的一个全局对象[^3]。它包含了诸如操作系统类型、屏幕分辨率大小乃至插件列表等一系列详尽描述终端设备状态的数据字段。熟练掌握这部分API接口调用方式可以在跨平台适配调试阶段发挥重要作用。 ```javascript // 获取浏览器基本信息示例 console.log(navigator.userAgent); // 显示完整User Agent字符串 console.log(navigator.platform); // 当前运行OS名称 if (/iPhone|iPad|iPod/.test(navigator.userAgent)) { alert('您正在使用iOS设备访问'); } ``` --- #### 主题四:Redis TCP 超时重传现象分析 在网络通信层面遇到的问题往往隐藏着深层次的原因待解密[^4]。比如当 Redis 客户端长时间处于空闲状态期间可能会因为缺乏有效交互而导致连接断开情况发生。此时通过抓取网络报文进一步定位根本原因是解决此类难题的关键步骤之一。 --- #### 主题五:IT 技术类文章创作指南 随着自媒体行业的蓬勃发展,越来越多的技术爱好者加入到知识共享行列当中来[^5]。然而要想写出既具吸引力又能切实帮助读者成长的文章并非易事。这就需要作者具备扎实的专业功底同时还应注重表达形式上的创新求变,使得原本晦涩难懂的概念变得通俗易懂起来。 ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值