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

通用管理后台项目笔记 - Vue3+Vite安装环境、封装路由

概述

从0打造通用的后台管理系统,系列的第一篇博客,开发环境Node+Yarn+Vite的开发环境,这是记录的学习笔记。

Node环境

本地使用的是Node v18.18.2,npm v9.8.1,安装脚手架工具,npm、cnpm、yarn3种方式,如果你安装的是旧版本的vue-cli,需要提前卸载,npm uninstall vue-cli -gyarn global remove vue-cli,然后从新安装@vue/cli,这里我使用的是yarn。

npm install @vue/cli -g
cnpm install @vue/cli -g
yarn global add @vue/cli

使用vue --version,目前4.x以上版本支持创建Vue3项目,vue-cli官方中文文档https://cli.vuejs.org/zh/guide/

使用vite创建项目

官方文档 https://cn.vitejs.dev

node v18+使用创建项目命令 yarn create vite,在输入项目名称和选项,交互的界面非常友好,如下图:

WX20231025-071937@2x.png

其他版本的创建项目的命令:

npm init @vitejs/app

cnpm init @vitejs/app 

yarn create @vitejs/app manager-fe

创建成功后,执行命令:

cd stark
yarn
yarn dev

WX20231025-080211@2x.png

安装项目所需的依赖

# 安装项目生产依赖
yarn add vue-router@next vuex@next element-plus axios -S
# 安装项目开发依赖
yarn add sass -D

在应用市场里,VsCode 安装需要的插件:

Eslint
Vetur
TypeScript
Prettier

配置vite中的server配置,官方文档https://cn.vitejs.dev/config/

server:{
host:"localhost",
port:8080
}

可以在项目入口的main.js,打印获取环境变量,如果想更改配置文件在根目录package.json,修改scripts,加入--mode dev,更详细的参考官方文档https://cn.vitejs.dev/guide/env-and-mode.html

  "scripts": {
    "dev": "vite --mode dev",
    "build": "vite build",
    "preview": "vite preview"
  },

3.png

console.log("环境变量=>",import.meta.env);

至此,环境搭建完成了,可以开始开发项目代码了。

环境配置

软件项目都会经历本地开发、测试服、生产环境不同的运行环境,项目在最开始的时候都会定义config文件,对环境进行区分,方便切换环境,提高工作中的开发效率,也可以在本地部署自己的mock环境,我的项目后期会使用PHP作为后端服务,实现Api接口。

const env = import.meta.env.MODE || 'prod'
const EnvConfig = {
    dev:{
        baseApi:'/',
        mockApi:''
    },
    test:{
        baseApi:'',
        mockApi:''
    },
    prod:{
        baseApi:'',
        mockApi:''
    }
}
export default {
    env:'dev',
    mock:true,
    ...EnvConfig[env]
}

使用Config 配置的环境,比如可以在封装在axios中的引用:

import config from "../config";

//在axios中的引用
const service = axios.create({
    baseURL: config.baseApi,
    timeout: config.timeout
})

路由封装

一个项目,最开始的时候都要配置好路由环境,路由跳转的三种方式(router-link 、传统跳转 、Composition API跳转),我们分别去分步骤讲解和实现它们:

1. main.js 全局加载路由加载路由的过程就相当于引入文件。

import router from './router';
app.use(router).mount('#app')

2.在App.vue的文件需要引入router组件。

<template>
  <router-view></router-view>
</template>

3.使用

router-link 方式

<router-link to="/login">登录</router-link>

传统跳转

<template> 
	<el-button @click="goHome">回首页</el-button> 
</template> 
<script> 
	export default { 
		name:'login', 
		methods:{ 
			goHome(){ 
				this.$router.push('/welcome') 
				} 
			} 
	}
</script>

Composition API跳转:

<script setup> 
import { useRouter } from 'vue-router' 
let router = useRouter() 
const goHome = ()=>{ 
    router.push('/welcome') 
}
</script>

封装axios

封装axios更能提高效率,对Http 请求(request)、响应(response)进行token验证,和返回参数拦截。

import axios from "axios";

//创建axios实例对象,添加全局配置
const service = axios.create({
    baseURL: config.baseApi,
    timeout: 8000
})

//请求拦截
service.interceptors.request.use((req) => {
    //请求拦截具体逻辑代码实现
    return req;
})

//响应拦截
service.interceptors.response.use((res) => {
    //响应拦截具体逻辑代码实现
})

function request(options){
    options.method = options.method || 'get'
    if(options.method.toLowerCase() === 'get'){
        options.params = options.data;
    }

    if(config.env === 'prod'){
        service.defaults.baseURL = config.baseApi
    } else {
        service.defaults.baseURL = config.mock ? config.mockApi : config.baseApi
    }
    return service(options)
}

['get','post','put','delete','patch'].forEach((item) => {
    request[item] = (url,data,options) => {
        return request({
            url,
            data,
            method:item,
            ...options
        })
    }
})

export default request;

在控制器中的使用的时候 在main.js中全局导入组件,使用:

app.config.globalProperties.$request = request;
this.$request({
  method: 'get',
  url: 'http://192.168.88.140/test.php',
}).then((res) => {
  console.log(res)
})

相关文章:

  • el-input输入内容类型为大于0的数字
  • 安防视频监控平台EasyCVR前端解码与后端解码的区别介绍
  • 【MySql】10- 实践篇(八)
  • 几个常用的nosql数据库的操作方式
  • 模块化时代的必备工具:Webpack详解,为你的项目注入新活力
  • 浅谈Vue3——如何使用Push
  • 将字符串中符合规则的元素替换为指定元素 re.sub()
  • 如何在用pip配置文件设置HTTP爬虫IP
  • 初学编程入门基础教学视频,中文编程开发语言工具箱之豪华编辑构件,免费版中文编程软件下载
  • Bootstrap知识点目录
  • 【Java笔试强训】Day7(WY22 Fibonacci数列、CM46 合法括号序列判断)
  • 软考网工历年简答题汇总(2016下半年~2023年上半年)
  • 在excel中如何打出上标、下标
  • 算法刷题-栈与队列
  • python赋值运算符,及查询表
  • 大数据笔记-关于Cassandra的删除问题
  • uboot - 驱动开发 - 驱动模型
  • 从瀑布模式到水母模式:ChatGPT如何赋能软件研发全流程
  • 【2023.10.25练习】数据库-函数1
  • Shader入门知识—光照
  • 西宁那有做网站的/怎么做信息流广告代理商
  • 三亚推广公司/淘宝seo培训
  • 网站下拉菜单设计/商丘网站优化公司
  • 注册公司北京/深圳优化网站
  • 怎么做音乐网站/重庆seo关键词优化服务
  • pjax wordpress/软件网站关键词优化