VUE 之 项目常规配置详解

2023-11-10

Vue 项目的常规配置可以分为以下几个方面:

  1. 路由配置:使用 Vue Router 进行路由配置,需要在 src/router/index.js 文件中配置路由表和路由守卫。

  2. 状态管理:使用 Vuex 进行状态管理,需要在 src/store 目录中定义状态、操作状态的方法、监听状态变化等。

  3. UI 组件库:可以使用 Element UI、Ant Design Vue 等 UI 组件库,需要在 main.js 中引入对应的组件和样式。

  4. Axios 配置:使用 Axios 发送请求时需要进行一些基础配置,如设置请求头、请求超时时间等。可以在 src/main.js 中全局配置 Axios。

  5. ESLint 配置:ESLint 是一个用于代码检查的工具,可以在 package.json 中配置 ESLint 规则和插件。

  6. 静态资源管理:可以在 vue.config.js 中配置静态资源路径,以及打包输出的路径。

  7. 环境变量配置:可以在 src 目录下创建 .env.env.development.env.production 等文件,配置环境变量和相关配置信息。

以上是 Vue 项目的常规配置,通过配置可以使项目更加规范化和高效化。

下面将分别详细介绍:

一、路由配置

在 Vue 项目中,路由配置使用 Vue Router 进行实现,可以通过以下步骤完成:

1、安装 Vue Router

在项目中使用 Vue Router 首先需要安装它,可以通过以下命令进行安装:

npm install vue-router --save 

​​​​​​​2、创建路由实例

src/router 目录下创建一个 index.js 文件,并编写以下代码:

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

export default new Router({
  routes: [
    // 路由配置信息
  ]
})

在这段代码中,我们首先引入了 Vue 和 Vue Router,并将其注册到 Vue 实例中。然后,我们创建了一个 Router 实例,并通过 routes 属性来配置路由表。

3、配置路由表

routes 数组中,每个元素代表一个路由配置项,包含以下属性:

  • path:表示路由路径,可以包含参数,如 /user/:id

  • name:表示路由名称,用于在代码中进行跳转和匹配路由。

  • component:表示路由组件,可以是一个组件对象,也可以是一个异步组件函数,如 () => import('@/views/Home')

  • meta:表示路由元信息,可以用于存储一些额外的信息,如页面标题、权限验证等等。具体介绍:

meta 是一种 HTML 元素,用于描述网页文档的一些元数据,例如网页的标题、作者、关键字、描述、编码方式等。meta 元素通常放置在 head 标签中,不会直接影响网页的内容,但对搜索引擎优化、网页访问性能、浏览器渲染等方面具有重要的作用。

常见的 meta 元素包括:

  1. meta charset:指定网页文档使用的字符编码方式,例如 UTF-8。

  2. meta viewport:指定网页的视口大小和缩放比例,用于适配不同的设备和屏幕尺寸。

  3. meta name="keywords":指定网页的关键字,用于 SEO 优化和搜索引擎收录。

  4. meta name="description":指定网页的描述信息,用于搜索引擎结果页的展示和用户体验。

  5. meta name="author":指定网页的作者信息。

  6. meta http-equiv="refresh":指定网页自动刷新或重定向的时间间隔和目标 URL。

  7. meta name="robots":控制搜索引擎的爬取行为,例如禁止搜索引擎抓取或索引网页。

除了这些常见的 meta 元素,还有许多其他的 meta 元素可以用于控制浏览器行为、防止 XSS 攻击、指定 Apple Touch 图标等功能。开发者可以根据实际需求选择使用。

下面是一个简单的路由配置示例:

import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/views/Home'
import About from '@/views/About'
import User from '@/views/User'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'home',
      component: Home,
      meta: { title: '首页' }
    },
    {
      path: '/about',
      name: 'about',
      component: About,
      meta: { title: '关于我们' }
    },
    {
      path: '/user/:id',
      name: 'user',
      component: User,
      meta: { title: '用户详情' }
    }
  ]
})

4、使用路由 

在组件中使用路由可以通过以下方式实现:

  • 使用 this.$router.push() 方法进行跳转。

this.$router.push() 是 Vue.js 路由机制中的一个方法,用于实现页面的跳转,其基本语法如下:

this.$router.push(location, onComplete, onAbort)

其中,location 参数可以是一个字符串路径,也可以是一个描述地址的对象。onComplete 和 onAbort 分别是路由成功和失败时的回调函数,可选参数。

使用该方法可以实现页面的导航功能,将用户从当前页面导航到另一个页面。例如,可以在一个按钮的点击事件中使用 this.$router.push() 来实现跳转:

<template>
  <button @click="gotoAbout">关于我们</button>
</template>

<script>
export default {
  methods: {
    gotoAbout() {
      this.$router.push('/about')
    }
  }
}
</script>

 在这个例子中,当用户点击按钮时,会调用 gotoAbout() 方法,该方法使用 this.$router.push() 跳转到 '/about' 路径的页面。

  • 使用 this.$route.paramsthis.$route.query 获取路由参数和查询参数。

下面是一个简单的组件中使用路由的示例:
this.$route.params 是一个对象,包含了路由中的动态参数,例如在路由配置中定义了一个动态参数 id,可以通过 this.$route.params.id 来获取该参数的值。例如:

<template>
  <div>
    <h1>{{ title }}</h1>
    <p>用户 ID:{{ userId }}</p>
  </div>
</template>

<script>
export default {
  computed: {
    title() {
      return this.$route.meta.title || '默认标题'
    },
    userId() {
      return this.$route.params.id
    }
  }
}
</script>

this.$route.query 也是一个对象,包含了路由中的查询参数,例如在 URL 中包含了 ?name=value 的查询参数,可以通过 this.$route.query.name 来获取该参数的值。例如:

// 路由链接
<router-link :to="{ path: '/search', query: { keyword: 'vue' } }">搜索</router-link>

// 组件中使用
export default {
  mounted() {
    const keyword = this.$route.query.keyword
    // ...
  }
}

 在这个例子中,使用 <router-link> 组件生成一个路由链接,链接指向 /search 路径,并且带有查询参数 keyword。在 Search 组件中使用 this.$route.query.keyword 来获取该参数的值,可以根据该值来进行搜索操作。

需要注意的是,params 和 query 在使用时有一些区别:params 用于传递动态路由参数,query 用于传递查询参数,它们的使用方式和含义都是不同的。另外,params 是必选参数,如果没有指定动态参数,路由会匹配失败;而 query 是可选参数,可以在 URL 中省略查询参数。

以上是 Vue Router 的基本使用方法,通过路由配置可以实现页面的跳转和参数传递。

二、状态管理

在 Vue 项目中,状态管理使用 Vuex 进行实现,可以通过以下步骤完成:

1、安装 Vuex

在项目中使用 Vuex 首先需要安装它,可以通过以下命令进行安装:

npm install vuex --save

2、创建 Store 实例 

src/store 目录下创建一个 index.js 文件,并编写以下代码:

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    // 状态信息
  },
  mutations: {
    // 修改状态的方法
  },
  actions: {
    // 异步操作的方法
  },
  getters: {
    // 计算属性
  }
})

在这段代码中,我们首先引入了 Vue 和 Vuex,并将其注册到 Vue 实例中。然后,我们创建了一个 Store 实例,并通过 state 属性来存储状态信息,通过 mutations 属性来定义修改状态的方法,通过 actions 属性来定义异步操作的方法,通过 getters 属性来定义计算属性。

3、在组件中使用状态

在组件中使用状态可以通过以下方式实现:

  • 使用 mapState 辅助函数进行状态映射。

  • 使用 mapMutations 辅助函数进行状态修改。

  • 使用 mapActions 辅助函数进行异步操作。

  • 使用 mapGetters 辅助函数进行计算属性的映射。

下面是一个简单的组件中使用状态的示例:

<template>
  <div>
    <h1>{{ title }}</h1>
    <p>计数器:{{ count }}</p>
    <button @click="increment">增加</button>
  </div>
</template>

<script>
import { mapState, mapMutations } from 'vuex'

export default {
  computed: {
    ...mapState(['count']),
    title() {
      return `${this.count} - Vuex 状态管理`
    }
  },
  methods: {
    ...mapMutations(['increment'])
  }
}
</script>

以上是 Vuex 的基本使用方法,通过状态管理可以实现组件之间的状态共享和状态的统一管理。

三、 UI 组件库

UI 组件库是开发 Web 应用时常用的工具之一,它可以帮助我们快速构建出美观且功能丰富的用户界面。在 Vue 中,常用的 UI 组件库有以下几种:

1、Element UI

Element UI 是一款基于 Vue.js 的桌面端组件库,它提供了一套完整的组件库和丰富的主题,可以轻松地创建出符合标准的界面。Element UI 的文档详细,支持中文,易于使用和学习。

2、Ant Design Vue

Ant Design Vue 是 Ant Design 的 Vue 实现,是一套企业级 UI 设计语言和组件库,具有丰富的组件和模板,可以帮助开发者快速构建出高质量的应用程序。

3、Vuetify

Vuetify 是一个基于 Material Design 的 Vue 组件库,它提供了一套丰富的 UI 组件和可自定义的主题。Vuetify 支持响应式设计和各种屏幕尺寸,并且提供了许多实用工具和功能。

4、iview

iview 是一套基于 Vue.js 的高质量组件库,它提供了丰富的组件和主题,支持中文文档和多种语言的国际化。

5、Quasar

Quasar 是一个基于 Vue.js 的跨平台组件库,支持构建 Web、移动应用、电视应用、桌面应用等多种平台,提供了丰富的组件和主题。

这些 UI 组件库都是开源的,都有自己的特点和优势,在开发的时候可以根据项目需求和自身喜好进行选择和使用。

四、Axios 配置

Axios 是一个基于 Promise 的 HTTP 请求库,可以用于在浏览器和 Node.js 环境中发送 HTTP 请求。在 Vue.js 项目中使用 Axios 通常需要进行一些配置,以便更好地满足项目的需求。

下面是一些常见的 Axios 配置:

1、设置基础 URL:可以在创建 Axios 实例时设置一个基础 URL,这样在发送请求时就可以省略 URL 的前缀。例如:

import axios from 'axios'

const instance = axios.create({
  baseURL: 'https://api.example.com'
})

instance.get('/users') // 发送 GET https://api.example.com/users 请求

2、设置请求头:可以为每个请求设置自定义的请求头,例如认证信息、请求格式等。可以在 Axios 实例中使用 headers 属性进行设置,例如: 

import axios from 'axios'

const instance = axios.create({
  headers: {
    'Authorization': 'Bearer token',
    'Content-Type': 'application/json'
  }
})

instance.post('/users', { name: 'Alice' }) // 发送 POST /users 请求,包含认证信息和 JSON 格式的请求体

 3、设置请求拦截器和响应拦截器:可以使用 Axios 提供的拦截器机制,对请求和响应进行预处理,例如添加请求头、处理错误等。可以在 Axios 实例中使用 interceptors 属性来设置拦截器,例如:

import axios from 'axios'

const instance = axios.create()

instance.interceptors.request.use(config => {
  // 在请求发出之前对 config 进行处理
  config.headers['Authorization'] = 'Bearer token'
  return config
})

instance.interceptors.response.use(response => {
  // 在接收到响应后对 response 进行处理
  if (response.status === 200) {
    return response.data
  } else {
    return Promise.reject(new Error('请求出错'))
  }
})

在这个例子中,使用 request 拦截器添加了一个认证信息的请求头,在 response 拦截器中处理了响应,如果响应状态码为 200,则返回响应数据,否则返回一个错误的 Promise。

除了上述配置之外,还有很多其他的 Axios 配置和使用方式,具体可以参考 Axios 的官方文档。

五、ESLint 配置

ESLint 是一个开源的 JavaScript 代码检查工具,可以用来检查代码中的潜在问题和风格问题,以确保代码的一致性和可读性。在 Vue.js 项目中,通常会使用 ESLint 对代码进行检查,以确保代码质量。

ESLint 的配置可以通过 .eslintrc 文件来进行,这个文件可以在项目根目录下创建,也可以放在其他的位置。ESLint 的配置包括以下几个方面:

  1. 解析器:ESLint 需要知道代码使用的是哪种 JavaScript 语言规范,这可以通过配置解析器来指定。例如,对于 Vue.js 项目,可以使用 babel-eslint 或者 vue-eslint-parser 作为解析器。

  2. 规则:ESLint 通过配置规则来检查代码中的问题,包括语法问题、代码风格问题、安全问题等。规则可以被指定为 "off"、"warn" 或 "error",分别表示关闭规则、警告规则和错误规则。

  3. 插件:ESLint 可以通过插件来扩展其功能,例如在 Vue.js 项目中可以使用 eslint-plugin-vue 插件来检查 Vue 单文件组件中的代码。

  4. 配置文件的继承:ESLint 的配置文件可以通过 extends 属性继承其他的配置文件,这样可以减少重复的配置。例如,可以继承 eslint:recommended 配置文件来使用一些默认的规则。

下面是一个简单的 ESLint 配置文件示例:

{
  "parser": "babel-eslint",
  "extends": [
    "eslint:recommended",
    "plugin:vue/recommended"
  ],
  "rules": {
    "semi": ["error", "always"],
    "quotes": ["error", "single"],
    "no-console": "warn"
  },
  "plugins": [
    "vue"
  ]
}

在这个示例中,使用了 babel-eslint 解析器、继承了 eslint:recommendedplugin:vue/recommended 两个配置文件、定义了一些规则、使用了 vue 插件。根据实际情况,可以对这些配置进行调整,以满足项目的需求。

六、静态资源管理

在 Vue.js 项目中,静态资源包括图片、CSS 文件、JavaScript 文件等等。这些静态资源可以通过以下方式进行管理:

  1. public 目录中添加静态资源:在 Vue.js 项目的根目录中,可以创建一个名为 public 的目录,并将静态资源文件放入其中。这些静态资源可以通过相对路径进行访问。例如,如果在 public 目录中添加了一张图片 logo.png,则可以通过以下方式在代码中引用这张图片:

    <img src="./logo.png" />
    
  2. 使用 Webpack 进行打包:Vue.js 使用 Webpack 进行打包,在打包时可以将静态资源文件打包到输出目录中,通过相对路径进行访问。在 Vue.js 项目中,可以使用 vue-cli 工具进行创建和配置,其中默认的配置已经包含了 Webpack 打包的相关设置。

  3. 使用第三方静态资源 CDN:在某些情况下,可以使用第三方静态资源 CDN,以加快页面的加载速度。例如,可以使用 CDNJS 提供的静态资源 CDN 来引用 jQuery:

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    

总之,在 Vue.js 项目中,静态资源的管理是一个比较灵活的过程,可以根据实际情况进行选择和配置。

七、环境变量配置

在 Vue.js 项目中,可以通过配置环境变量来实现不同环境下的配置管理。通常来说,Vue.js 项目的环境变量主要包括以下三种:

  1. development 环境:用于开发环境,可以使用较为详细的日志输出、错误提示等功能。
  2. production 环境:用于生产环境,主要用于优化和压缩代码,减少代码的大小和运行时的开销。
  3. 自定义环境:根据实际情况,可以创建自定义环境变量,用于特定的场景下的配置。

在 Vue.js 项目中,可以通过 .env 文件来配置环境变量。.env 文件可以存在于项目根目录下,也可以存在于项目子目录中。同时,Vue.js 还支持通过不同后缀名的文件来配置不同的环境变量,例如 .env.development 用于开发环境,.env.production 用于生产环境等等。

.env 文件中定义的变量可以通过 process.env 对象来访问,例如:

console.log(process.env.NODE_ENV);

可以输出当前的环境变量。同时,也可以在 Vue.js 项目的配置文件中使用环境变量,例如:

// vue.config.js

module.exports = {
  publicPath: process.env.NODE_ENV === 'production'
    ? '/production-sub-path/'
    : '/',
  devServer: {
    port: process.env.VUE_APP_PORT,
  },
};

这里的 publicPathport 变量都是从环境变量中获取的。在这个例子中,publicPath 的值在生产环境下为 /production-sub-path/,在其他环境下为 /port 的值是通过环境变量 VUE_APP_PORT 获取的。

总之,环境变量是 Vue.js 项目中重要的配置管理方式,可以方便地实现不同环境下的配置管理,并提高项目的灵活性和可维护性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VUE 之 项目常规配置详解 的相关文章

随机推荐

  • 机器学习——KNN算法(K最近邻分类算法)(2020最新版)

    1 KNN的例子 转换为坐标 红色是爱情片 蓝色是动作片 黑色是需要判断的点 1 1 KNN具体的做法 其中 欧式距离 欧几里得距离 的计算方法 2 KNN的缺点 3 KNN的实现 coding utf 8 FileName knn alg
  • 静态联编与动态联编

    联编是指一个程序模块 代码之间相互关联的过程 静态联编 是程序的匹配 链接在编译阶段实现 也称早期匹配 重载函数就使用静态联编 编译的阶段 动态联编是指程序联编推迟到运行时候进行 又称晚期匹配 switch if语句就是动态联编的例子 执行
  • JVM调优几款好用的内存分析工具

    对于高并发访问量的电商 物联网 金融 社交等系统来说 JVM内存优化是非常有必要的 可以提高系统的吞吐量和性能 通常调优的首选方式是减少FGC次数或者FGC时间 以避免系统过多地暂停 FGC达到理想值后 比如一天或者两天触发一次FGC FC
  • (转载)jquery checkbox 设置选中和不选中

    https blog csdn net hantanxin article details 103187996 1 设置选中 hasApply prop checked true 设置不选中 hasApply prop checked fa
  • 使用openCV比对任意两张图片的相似度(亲测较准确)

    方案 使用openCV中的直方图算法做对比 测试效果较好 步骤 在java中使用openCV 1 引入openCV的依赖
  • openwrt 没有wifi

    wifi radio0 is disabled radio0 is disabled uci set wireless radio0 disabled 0
  • Web中什么是token,token的组成部分详解(jwt Token)

    token是计算机术语 令牌 令牌是一种能够控制站点占有媒体的特殊帧 以区别数据帧及其他控制帧 token其实说的更通俗点可以叫暗号 在一些数据传输之前 要先进行暗号的核对 不同的暗号被授权不同的数据操作 使用基于 Token 的身份验证方
  • K8s基础9——服务发现Coredns、Ingress Controller多种暴露方式、TLS+DaemonSet、Headless Services

    文章目录 一 服务发现机制 1 1 环境变量注入 1 2 DNS解析 二 Ingress 4 1 部署Ingress controller 4 2 暴露Ingress Controller 4 2 1 SVC NodePort方式 4 2
  • ElementUI 之el-form表单重置功能按钮

    业务场景 使用el form时 点击重置按钮或者取消按钮时会实现表单重置效果 重置功能按钮功能实现详细步骤 第一 首先给el form添加ref属性
  • 手把手教你做出数据可视化项目(四)动态模拟航班飞行路线

    数据可视化前言 https blog csdn net diviner s article details 115933789 项目最终效果图 此篇博客为自己学习pink老师的课后完成的项目的总结与记录 仅供交流参考 版权所有 转载请标注原
  • 服务器2016系统怎么添加用户名,windows-server-2016 – 如何在Nano Server中添加SMTP服务器角色?...

    使用 this TechNet page上的信息 我已经成功建立了一个远程PowerShell会话 其中包含在Hyper V VM中运行的2016 Preview 2 Nano Server 我现在想要添加SMTP服务器角色 我期待这是一个
  • android 史上最简单的下拉选择菜单DropDownMenu 几行代码轻松搞定!

    这是我在CSDN上第一篇原创文章 趁着从上家公司离职去考驾照的这段日子 想通过写技术博客的方式 锻炼一下自己的语言表达能力 以及对之前工作的总结 废话不多说了 直接进入正题 先给客官来张效果图 一 思路 下拉菜单首先让我想到了PopupWi
  • Java代码审计详解

    一 Fortify代码审计工具 1 Fortify简介 Fortify是Micro Focus旗下AST 应用程序安全测试 产品 其产品组合包括 Fortify Static Code Analyzer提供静态代码分析器 SAST Fort
  • 每日一道Leetcode——按奇偶排序数组II

    题目 我的解法一 双端队列 思路 用两个双端队列分别存储奇数和偶数 然后依次取一个 class Solution public int sortArrayByParityII int A Deque
  • 拓世AI

    2023年的小红书 发展趋势依旧昂扬向上 最新数据显示 小红书拥有逾3亿的月活用户 且超过80 的用户集中在20 30岁年龄段 这代表什么 广大的年轻用户基数和消费能力 正处于购买力上升期的年轻人 是品牌最想抓住的目标用户 巨大的红利吸引了
  • Visual C# 2010 实现菜单项和状态栏

    演练 向窗体提供标准菜单项 Visual Studio 2010 其他版本 此主题尚未评级 评价此主题 可以通过 MenuStrip 控件为窗体提供标准菜单 此演练演示如何使用 MenuStrip 控件创建标准菜单 窗体还将在用户选择菜单项
  • karatsuba大数乘法问题及其高效算法

    转载自 iTimeTraveler博客 题目 编写两个任意位数的大数相乘的程序 给出计算结果 比如 题目描述 输出两个不超过100位的大整数的乘积 输入 输入两个大整数 如1234567 和 123 输出 输出乘积 如 151851741
  • arcgis应用程序无法正常启动0xc0000906

    第一 在开始 运行里输入CMD确定 在命令行窗口下输入以下内容后按回车for 1 in windir system32 ocx do regsvr32 s 1完了后 再输入以下内容并回车 第二 再输入以下内容并回车for 1 in wind
  • Android 代码混淆语法讲解及常用模板,app架构图

    keepclassmembers class R public static 表示不混淆 R 类中 的 static 变量 在 R 类中 这些资源 ID 是系统自动帮我们生成的 混淆了就无法找到相应的资源 dontwarn android
  • VUE 之 项目常规配置详解

    Vue 项目的常规配置可以分为以下几个方面 路由配置 使用 Vue Router 进行路由配置 需要在 src router index js 文件中配置路由表和路由守卫 状态管理 使用 Vuex 进行状态管理 需要在 src store