当前位置: 首页 > article >正文

vue项目常见模块的安装及使用

文章目录

  • nodejs安装及创建vue项目参考文章
  • element-ui
    • element-ui官网
    • 安装element-ui
  • vue-router
    • 官网
    • 安装vue-router
    • vue-router使用
  • axios
    • 官网
    • 安装
    • 使用axios
      • 简单使用
      • 对请求方法进行加工使用
  • vuex
    • 简介
    • 官网
    • 安装vuex
    • 使用vuex
  • js-cookie
    • 安装
    • 使用
  • qs
    • 简介
    • 安装
    • 使用
    • qs特点

nodejs安装及创建vue项目参考文章

nodejs安装及vue项目创建

element-ui

element-ui官网

elementUI

安装element-ui

  • 安装element-ui
npm install element-ui -S
  • 完整引用
import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import App from './App.vue';

Vue.use(ElementUI);

new Vue({
  el: '#app',
  render: h => h(App)
})
  • 按需引入

借助 babel-plugin-component,我们可以只引入需要的组件,以达到减小项目体积的目的。

首先,安装 babel-plugin-component:

npm install babel-plugin-component -D

然后,将 .babelrc 修改为:

{
  "presets": [["es2015", { "modules": false }]],
  "plugins": [
    [
      "component",
      {
        "libraryName": "element-ui",
        "styleLibraryName": "theme-chalk"
      }
    ]
  ]
}

接下来,如果你只希望引入部分组件,比如 Button 和 Select,那么需要在 main.js 中写入以下内容:

import Vue from 'vue';
import { Button, Select } from 'element-ui';
import App from './App.vue';

Vue.component(Button.name, Button);
Vue.component(Select.name, Select);
/* 或写为
 * Vue.use(Button)
 * Vue.use(Select)
 */

new Vue({
  el: '#app',
  render: h => h(App)
});

vue-router

官网

vuerouter官网:https://v3.router.vuejs.org/zh/installation.html

安装vue-router

npm install vue-router@3 --save

vue-router使用

  • 在src文件夹下新建router文件夹
  • 在router文件夹下新建index.js
import Vue from "vue";
import VueRouter from "vue-router";
import FileList from "@/components/FileList.vue";

Vue.use(VueRouter);
// 创建不同的路由放到routes列表中
const routes = [
    {
    path: '/file',
    name: 'file',
    component: FileList
    }
]
//创建router实例
const router = new VueRouter({
    mode: "hash",
    routes: routes
})
// 向外暴露router
export default router;

axios

官网

axios官网:https://www.axios-http.cn/docs/intro

安装

npm install axios --save

使用axios

简单使用

  • 创建request文件夹
  • 在request文件夹下创建http.js
  • 在使用的地方引入http.js进行发送请求
    import axios from "axios";
    const http =axios.create({
        //通用请求的地址前缀
        baseURL: '/api',
        timeout: 10000, //超时时间
    })

    //添加请求拦截器
    http.interceptors.request.use(function (config) {
        // 在发送请求之前做些什么
        return config;
    },function (error){
        //对请求错误做些什么
        return Promise.reject(error);
    })

    //添加响应拦截器
    http.interceptors.response.use(function (response){
        //对响应数据做点什么
        return response;
    },function (error) {
        //对响应错误做点什么
        return Promise.reject(error)
    })

    export default http

对请求方法进行加工使用

  • 新建libs文件夹
  • 在libs文件夹下新建axios.js
  • 在api模块引用不同的请求方法,进行请求
import axios from 'axios';
import { getStore, setStore } from './storage';
import { router } from '../router/index';
import { Message } from 'view-design';
import Cookies from 'js-cookie';
let base = '/zwz';

axios.defaults.timeout = 15000;
axios.interceptors.request.use(config => {
    return config;
}, err => {
    Message.error('请求超时');
    return Promise.resolve(err);
});

axios.interceptors.response.use(response => {
    const data = response.data;

    switch (data.code) {
        case 401:
            Cookies.set('userInfo', '');
            setStore('accessToken', '');
            if (router.history.current.name != "login") {
                if (data.message !== null) {
                    Message.error(data.message);
                } else {
                    Message.error("未知错误,请重新登录");
                }
                router.push('/login');
            }
            break;
        case 403:
            if (data.message !== null) {
                Message.error(data.message);
            } else {
                Message.error("未知错误");
            }
            break;
        case 500:
            if (data.message !== null) {
                Message.error(data.message);
            } else {
                Message.error("未知错误");
            }
            break;
        default:
            return data;
    }

    return data;
}, (err) => {
    Message.error(err.toString());
    return Promise.resolve(err);
});

export const getRequest = (url, params) => {
    let accessToken = getStore('accessToken');
    return axios({
        method: 'get',
        url: `${base}${url}`,
        params: params,
        headers: {
            'accessToken': accessToken
        }
    });
};

export const postRequest = (url, params) => {
    let accessToken = getStore("accessToken");
    return axios({
        method: 'post',
        url: `${base}${url}`,
        data: params,
        transformRequest: [function (data) {
            let ret = '';
            for (let it in data) {
                ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&';
            }
            ret = ret.substring(0, ret.length - 1);
            return ret;
        }],
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            'accessToken': accessToken
        }
    });
};

export const putRequest = (url, params) => {
    let accessToken = getStore("accessToken");
    return axios({
        method: 'put',
        url: `${base}${url}`,
        data: params,
        transformRequest: [function (data) {
            let ret = '';
            for (let it in data) {
                ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&';
            }
            ret = ret.substring(0, ret.length - 1);
            return ret;
        }],
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            'accessToken': accessToken
        }
    });
};

export const postBodyRequest = (url, params) => {
    let accessToken = getStore('accessToken');
    return axios({
        method: 'post',
        url: `${base}${url}`,
        data: params,
        headers: {
            'accessToken': accessToken
        }
    });
};

export const getNoAuthRequest = (url, params) => {
    return axios({
        method: 'get',
        url: `${base}${url}`,
        params: params
    });
};

export const postNoAuthRequest = (url, params) => {
    return axios({
        method: 'post',
        url: `${base}${url}`,
        data: params,
        transformRequest: [function (data) {
            let ret = '';
            for (let it in data) {
                ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&';
            }
            ret = ret.substring(0, ret.length - 1);
            return ret;
        }],
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        }
    });
};

vuex

简介

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

官网

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

安装vuex

npm install vuex --save 
//安装过程中可能会因为版本不同进行报错,安装合适版本
npm install vuex@3.6.2 --save

使用vuex

  • src下新建store文件夹
  • store文件夹下创建index.js
  • store文件夹下创建modules文件夹存在模块文件

index.js

import Vue from 'vue';
import Vuex from 'vuex';
import app from './modules/app';
import user from './modules/user';
Vue.use(Vuex);
const store = new Vuex.Store({
    state: {
    },
    mutations: {},
    actions: {},
    modules: {
        app,
        user
    }
});
export default store;

创建不同模块文件
app.js

const app = {
    state: {
        menuList: [],
    },
    mutations: {
        updateMenulist(state, routes) {
            state.menuList = routes;
        }
    }
};
export default app;

user.js

import Cookies from 'js-cookie';
const user = {
    state: {},
    mutations: {
        logout () {
            Cookies.remove('userInfo');
            localStorage.clear();
        }
    }
};
export default user;

js-cookie

安装

npm install js-cookie

使用

  • 当前页面使用
import Cookies from "js-cookie";
  • 全局引用
  • 在main.js中引入
  • 设置Vue.prototype.$cookie = Cookies
import Cookies from 'js-cookie'
Vue.prototype.$cookie = Cookies

qs

简介

qs是一个JavaScript库,主要用于查询字符串的解析和序列化。它提供了一些附加安全性的特性,是处理URL查询字符串(如将对象序列化为查询字符串或将查询字符串解析为对象)的理想工具。

安装

npm install qs --save

使用

  • 全局引入
    • 在main.js引入qs
    • 设置prototype:Vue.prototype.$qs = qs
    • this.$qs进行qs使用
import qs from 'qs'
Vue.prototype.$qs = qs
this.$qs
  • 需要的时候引入
    • 在需要的地方引入qs
import Qs from 'qs'

qs特点

qs参考博客

  1. qs.parse():功能:将URL的查询字符串解析成JavaScript对象的形式。
    示例:给定查询字符串method=queryTestData&id=12&appToken=123,使用qs.parse()可以将其解析为对象{ method: ‘queryTestData’, id: ‘12’, appToken: ‘123’ }。
  2. qs.stringify():功能:将JavaScript对象序列化成URL的查询字符串形式,多个键值对之间用&进行拼接。
    示例:给定对象{ name: ‘nihao’, age: 30 },使用qs.stringify()可以将其序列化为查询字符串name=nihao&age=30。

http://www.kler.cn/news/368672.html

相关文章:

  • C语言:水仙花树,要求三位以上的N位整数每位的N次方等于数本身,全部输出出来
  • ReactNative 启动应用(2)
  • Python金色流星雨
  • 二、Spring的执行流程
  • 【redis】初识非关系型数据库——redis
  • [LeetCode] 77. 组合
  • 【Qt】系统相关——多线程、Qt多线程介绍、常用函数、线程安全、网络、UDP Socket、TCP Socket
  • Axios与Java Spring交互:RESTful API设计与实现全解析
  • 图像变换的知识
  • Bash 中的 ${} 和 $() 有什么区别 ?
  • 使用田口实验获取优化算法的参数最优组合
  • 【系统面试篇】进程和线程的区别
  • GEE app:全球地表水使用 ui.root.onResize() 演示移动友好型用户界面
  • 2025选题推荐|基于SpringBoot+Vue实现大学生双创竟赛项目申报与路演管理系统
  • Unity DOTS
  • 利用ADPF性能提示优化Android应用体验
  • Flink Python作业快速入门
  • 百度搜索推广和信息流推广的区别,分别适用于什么场景!
  • Html提高——HTML5 新增的 input 类型
  • 天工 2.0.0 |支持AI画画、AI作曲、文章撰写
  • 面试总结一
  • SRIO接口,FPGA实现,学习笔记。
  • 系统思考—啤酒游戏经营决策沙盘
  • 基于SSM+VUE电影网站视频网站JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解
  • RN 中的createNativeStackNavigator,为什么出现顶部的 header
  • 海亮科技亮相第84届中国教装展 尽显生于校园 长于校园教育基因