千家信息网

Vue项目中实用小技巧有哪些

发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,这篇文章将为大家详细讲解有关Vue项目中实用小技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。需求一:为路径配置别名在开发过程中,我们经常需要引入各种文件,
千家信息网最后更新 2025年11月16日Vue项目中实用小技巧有哪些

这篇文章将为大家详细讲解有关Vue项目中实用小技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

需求一:为路径配置别名

在开发过程中,我们经常需要引入各种文件,如图片、CSS、JS等,为了避免写很长的相对路径(../),我们可以为不同的目录配置一个别名。

找到 webpack.base.config.js 中的 resolve 配置项,在其 alias 中增加别名,如下:

创建一个 CSS 文件,随便写点样式:

.avatar display: flex; justify-content: center; align-items: center;.avatar-img padding 20px border solid 1px #ccc border-radius 5px

接着,在我们需要引入的文件中就可以直接使用了:

需要注意的是,如果不是通过 import 引入则需要在别名前加上 ~,效果如下:

需求二:要求实现在生产包中直接修改api地址

这个需求,怎么说呢,反正就是需求,就想办法实现吧。

假设有一个 apiConfig.js 文件,用于对 axios 做一些配置,如下:

import axios from 'axios';axios.defaults.timeout = 10000;axios.defaults.retry = 3;axios.defaults.retryDelay = 2000;axios.defaults.responseType = 'json';axios.defaults.withCredentials = true;axios.defaults.headers.post["Content-type"] = "application/json";// Add a request interceptoraxios.interceptors.request.use(function (config) { // Do something before request is sent return config;}, function (error) { // Do something with request error return Promise.reject(error);});// Add a response interceptoraxios.interceptors.response.use(function (response) { // Do something with response data return response;}, function (error) { // Do something with response error return Promise.reject(error);});export default axios

在 static 文件夹中增加一个 config.json 文件,用于统一管理所有的 api 地址:

{ "base": "/api", "static": "//static.com/api", "news": "//news.com.api"}

打开 main.js,写入下列代码:

// 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';import axios from 'js/apiConfig'; //import直接引入,不用添加~Vue.config.productionTip = false;Vue.use(ElementUI);/* eslint-disable no-new */let startApp = function () { let randomStamp = new Date().getTime(); axios.get(`/static/config.json?t=${randomStamp}`).then((data) => { axios.defaults.baseURL = data.base; //设置一个默认的根路径 Vue.prototype.$axios = axios; Vue.prototype.$apiURL = data; //将所有路径配置挂载到 Vue 原型上 /* eslint-disable no-new */ new Vue({ el: '#app', router, components: {App}, template: '' }); })};startApp();

就是先用 axios 获取 api 文件,然后再初始化。

需求三:由后台根据用户权限值返回菜单

菜单是树形结构(PS:就算不是树形结构,你也得处理成树形结构),我这里使用的是 ElementUI ,参考了道友的这篇文章,实现如下:

新建一个 Menu.vue 文件,写入如下代码:

这里主要用到两个东西,一个是 render 函数,一个是递归,如果不熟悉 render 函数的道友请点这里。可能有道友会问为什么不用模板,因为······做不到啊?,在 template 中只能有一个根元素,而 Vue 限制了不能对根元素使用 v-for;再者,通过在浏览器中查看代码可以知道,菜单就是 ul 加上 li,如果有了根元素会破坏标签结构(虽然不影响功能,但还是觉得不舒服?)。然后,在需要使用的地方:

效果如下:

需求四:这个 Select 选项是树形结构,一定得是树形结构

树形结构就树形结构吧,不就是样式嘛,改改应该就可以了。

因为 option 接收的是一个一维数组,所以通过递归展平树形结构,在展平的时候设置每项的层级,通过层级来设置缩进及前缀符号,效果如下:

之所以这样做,是因为是管理系统,简单有效,没必要因为这一个组件引个新的插件或者自己写一个(以后用得着的除外哈);也可以用 input 加上 tree 控件来模拟。

关于"Vue项目中实用小技巧有哪些"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

导航 这是 结构 树形 文件 需求 菜单 配置 别名 就是 篇文章 路径 递归 代码 元素 效果 技巧 项目 中实 不用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 信息系统建设数据库指标要求 固网打印服务器 驱动 广德智能软件开发服务商家 数据库文件中的最大页数 数据库营销策划方案 计算机也有网络技术基本知识 我的世界开服侠怎么改服务器ip 智慧城市该如何应对网络安全挑战 东安区钟珀软件开发店 数据库触发器向另外表插数据 山西企业软件开发定制企业 长沙互联网科技 查询数据库数据条数据类型 方舟服务器管理器商店设置 怎么重启linux服务器 开封网络安全等级保护测试 js怎么自动获取数据库图片地址 安徽第三方软件开发公司 怎么样游戏软件开发 研究计算机网络技术的目的 网络安全相关标语 网络安全违法违规案例 idc运维和软件开发 数据库中有什么对象 怎么黑入百度文库数据库 oracle数据库选择语句加法 用json存数据库 简述软件开发的主要步骤 数据库创建时怎么加密 网络安全 中心保障方案
0