vue3创建vite项目

news2024/9/21 14:38:22

一、创建vue3 vite项目:

命令行创建:npm create vite@latest vue3-tdly-demo -- --template vue

(1)先进入项目文件夹,cd vue3-tdly-demo

(2)之后执行, npm install

(3)最后运行,npm run dev

将main.js文件内容改成如下:

import { createApp } from 'vue'
import App from './App.vue'

const app = createApp(App);

app.mount('#app');

设置别名:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path';

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue()
  ],
  // 添加别名
  resolve:{
    alias:[
      {
        find:"@",
        replacement: path.resolve(__dirname,'src')
      },
      {
        find:'components',
        replacement: path.resolve(__dirname,'src/components')
      }
    ]
  }
})

二、项目创建后下载必要依赖:

npm install @arcgis/core (ArcGIS 依赖)

1、router依赖

命令行:npm install vue-router@4 --save

src文件夹下创建router文件夹,并在该文件夹下创建index.js文件,文件中引入以下内容

import {createRouter, createWebHashHistory} from "vue-router";

// 制定路由规则
const routes = [
     {
        path:'/',
        name:'main',
        component: () => import("@/views/Main.vue"),
     },
     {
        path:'/home',
        name:'home',
        component: () => import("@/views/home/Home.vue"),
     }
];

/**创建路由 */
const router = createRouter({
    // 设置路由模式 
    history: createWebHashHistory(),
    routes,
});

export default router;

在main.js主文件中引入以下内容

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'

import ElementPlus from 'element-plus';
import 'element-plus/dist/index.css'

const app = createApp(App);

app.use(router);
app.use(ElementPlus);

app.mount('#app');

注意:这是创建vue项目,不是vite项目

如果报错如下:

E:\VSWorkSpace\vue3-tdly-demo\src\views\home\home.vue

  1:1  error  Component name "home" should always be multi-word  vue/multi-word-component-names

解决方法:

vue.config.js 文件中修改如下添加标红代码:

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave: false
})

2、element-plus依赖 

官网:https://element-plus.org/zh-CN/

命令行:npm install element-plus --save

在main.js主文件中引入以下内容

import { createApp } from 'vue'
import App from './App.vue'
import ElementPlus from 'element-plus';
import 'element-plus/dist/index.css'

const app = createApp(App);

app.use(ElementPlus);

app.mount('#app');

自动导入需要安装插件:

命令行:npm install -D unplugin-vue-components unplugin-auto-import

修改vite.config.js文件内容:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path';
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    // element-plus自动导入
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
  // 添加别名
  resolve:{
    alias:[
      {
        find:"@",
        replacement: path.resolve(__dirname,'src')
      },
      {
        find:'components',
        replacement: path.resolve(__dirname,'src/components')
      }
    ]
  }
})

注意:

// 使用自动导入无需在main.js中引入如下文件

//import ElementPlus from 'element-plus';

//import 'element-plus/dist/index.css'

3、less依赖

命令行:

npm install less --save

使用:

<style lang="less" scoped>
    ***
    ***
</style>

4、@element-plus/icons依赖

命令行:

npm install @element-plus/icons --save

在main.js配置如下:

import { createApp } from 'vue'
import App from './App.vue'
import router from '@/router'
// 使用自动导入无需在main.js中引入如下文件
//import ElementPlus from 'element-plus';
//import 'element-plus/dist/index.css'
//图标
import * as ElementPlusIconsVue from '@element-plus/icons-vue';

const app = createApp(App);

app.use(router)
//app.use(ElementPlus)

for(const [key,componemt] of Object.entries(ElementPlusIconsVue)){
    app.component(key,componemt);
}

app.mount('#app');

5、pinia依赖 

官网:简介 | Pinia

命令行:npm install pinia -D

在main.js引入pinia:

import { createApp } from 'vue'
import App from './App.vue'
import router from '@/router'
// 使用自动导入无需在main.js中引入如下文件
//import ElementPlus from 'element-plus';
//import 'element-plus/dist/index.css'
//图标
import * as ElementPlusIconsVue from '@element-plus/icons-vue';
import {createPinia} from 'pinia'

const pinia = createPinia();

const app = createApp(App);

app.use(pinia)
app.use(router);
//app.use(ElementPlus)

for(const [key,componemt] of Object.entries(ElementPlusIconsVue)){
    app.component(key,componemt);
};

app.mount('#app');

src文件夹下新建stores文件夹,并在该文件夹下创建index.js文件,内容如下:

import {defineStore} from 'pinia';
import {ref} from "vue";

function initState(){
    return {
        // 根据需要进行属性的增加和修改
        isCollapse:false,
    }
}

export const useAllDataStore = defineStore("allData",() => {
    // ref state属性
    // computed getters
    // function actions

    const state = ref(initState());

    return {
        state,
    };

});

 

使用方法:

(1)在*.vue中引入

import {useAllDataStore} from "@/stores"

(2)创建

const store = useAllDataStore()

(3)赋值使用

console.log("store",store.state.isCollapse)
function demoClick(){
    store.state.isCollapse = !store.state.isCollapse
}

6、axios依赖

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

命令行:npm install axios -D

封装axios请求

在src文件夹下创建api文件夹,并在该文件夹中创建request.js文件,内容如下:

import axios from "axios";
import { ElMessage } from "element-plus";

    // 1. 创建axios实例
    const instance = axios.create({
        baseURL: "http://jsonplaceholder.typicode.com",//请求的域名  url = baseURL + requestUrl
        timeout: 5000,// 请求超时时间
        // headers: { //设置请求头
        //   "Content-Type": "application/x-www-form-urlencoded;charset=utf-8",
        // },
      });
  
      // ​2. axios拦截器的使用
      /** 需要拦截请求的原因
       *   1.config中包含了某些不符合服务器要求的信息
       *   2.发送网络请求的时候需要向用户展示一些加载中的图标
       *   3.网站需要登录才能请求资源,也就是需要token才能请求资源
       */
  
      // 2.1 添加请求拦截器
      // 添加公共请求头、处理请求参数等
      instance.interceptors.request.use(
        (config) => {
          // 在发送请求之前做些什么
  
          const token = localStorage.getItem('token')
          if (token) {
              config.headers.Authorization = `Bearer ${token}`;
          }
  
          
          return config; //拦截器里一定要记得将拦截的结果处理后返回,否则无法进行数据获取
        },
        (err) => {
          // 对请求错误做些什么
  
  
          return Promise.reject(err); // 在请求错误的时候的逻辑处理
        }
      );
  
      
      // 2.2 添加响应拦截器
      // 修改响应信息,比如数据转换、错误处理等
      instance.interceptors.response.use(
        (res) => {
          // 在请求成功后对响应数据做处理
          // console.log(res.data);
          if (res.status === 200) {
            return res.data;
          } 
        },
        (err) => {
          // 对响应错误做些什么
          if(err.response.status){
              switch (err.response.status) {
                  case 400:
                  // 处理错误信息,例如抛出错误信息提示,或者跳转页面等处理方式。
                    err.message = "错误请求";
                    break;
                  case 401:
                    err.message = "未授权,请重新登录";
                    break;
                  case 403:
                    err.message = "拒绝访问";
                    break;
                  case 404:
                    err.message = "请求错误,未找到该资源!!!!";
                    alert(err.message)
                    break;
                  case 405:
                    err.message = "请求方法未允许";
                    break;
                  case 408:
                    err.message = "请求超时";
                    break;
                  case 500:
                    err.message = "服务器端出错";
                    break;
                  case 501:
                    err.message = "网络未实现";
                    break;
                  case 502:
                    err.message = "网络错误";
                    break;
                  case 503:
                    err.message = "服务不可用";
                    break;
                  case 504:
                    err.message = "网络超时";
                    break;
                  case 505:
                    err.message = "http版本不支持该请求";
                    break;
                  default:
                    err.message = `连接错误${err.response.status}`;
              }
          }

          ElMessage.error(err.message);
          
          return Promise.reject(err); // 在响应错误的时候的逻辑处理
        }
      );
  
  
  
  export default instance;

在api文件下创建api.js,进行而出封装,内容如下:

import http from "./request.js";

export const getInfo = () =>{
    return http({
        url:"/posts",
        method:"get"
    });
}

export const getInfoDetail = (params)=>{
    return http({
        url:"/posts",
        method:"get",
        params
    })
}

export const postInfo = () =>{
    return http({
        url:"/posts",
        method:"post"
    });
}

 使用方法:

在所需文件中引入import {getInfo,getInfoDetail,postInfo} from "@/api/api"
执行如下代码:


get();
// 异步请求
async function get(){
    const allData = await getInfo();
    console.log("allData",allData);

    const data = await getInfoDetail({id:2});
    console.log("data",data);

    const postData = await postInfo();
    console.log("postData",postData);

}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1947259.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ML.NET:一个.NET开源、免费、跨平台的机器学习框架

前言 今天大姚给大家分享一个.NET开源、免费、跨平台&#xff08;支持Windows、Linux、macOS多个操作系统&#xff09;的机器学习框架&#xff1a;ML.NET。并且本文将会带你快速使用ML.NET训练一个属于自己的图像分类模型&#xff0c;对图像进行分类。 ML.NET框架介绍 ML.NET…

计算机网络之网络基础(含图解和知识点思维导图通俗易懂)

绪论​ “一个人在科学探索的道路上&#xff0c;走过弯路&#xff0c;犯过错误&#xff0c;并不是坏事&#xff0c;更不是什么耻辱&#xff0c;要在实践中勇于承认和改正错误。——爱因斯坦”。本章将是网络的第一章&#xff0c;计算机网络是我们计算机行业必须了解并掌握的知识…

Linux中的fopen,fclose,fread,fwrite,fseek相关函数的知识点

这几个函数都是标准的c库函数&#xff0c;在man 2中查找不到&#xff0c;所以我们可以利用man 手册直接查找 对应的open,close,write,fread都是Linux系统内核调用 可移植性&#xff1a;fopen 强过于 open ... fopen 在用户态是缓存的 open 在用户态是没有缓存的 fopen函数 f…

TCP粘包问题详解和解决方案【C语言】

1.什么是TCP粘包 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输协议&#xff0c;它保证了数据的可靠性和顺序性。然而&#xff0c;由于TCP是基于字节流而不是消息的&#xff0c;因此在传输过…

javaEE-01-tomcat

文章目录 javaWebTomcat启动 Tomcat 服务器测试服务器是否成功停止tomcat服务器修改服务器的端口号 Idea整合tomcat服务器 javaWeb 所有通过 Java 语言编写可以通过浏览器访问的程序的总称,是基于请求和响应来开发的。 请求: 客户端给服务器发送数据(Request)响应: 服务器给客…

LINUX环境下使用yum安装JDK1.8并配置环境变量

LINUX环境下使用yum安装JDK1.8并配置环境变量 1.查看CentOS自带JDK是否已安装 yum list installed |grep java2.批量卸载JDK rpm -qa | grep java | xargs rpm -e --nodeps3.直接yum安装1.8.0版本openjdk(其他版本请自行修改版本号) yum install java-1.8.0-openjdk* -y4.默…

4 Go语言的操作符

本专栏将从基础开始&#xff0c;循序渐进&#xff0c;由浅入深讲解Go语言&#xff0c;希望大家都能够从中有所收获&#xff0c;也请大家多多支持。 查看相关资料与知识库 专栏地址:Go专栏 如果文章知识点有错误的地方&#xff0c;请指正&#xff01;大家一起学习&#xff0c;…

智慧园区整体一站式解决方案(PPT原件完整版)

软件全套资料部分文档清单&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产品需求规格说明书&#xff0c;需求调研计划&#xff0c;用户需求调查单&#xff0c;用户需求说明书&#xff0c;概要设计说明书&#xff0c;技术解决方…

SQL labs-SQL注入(四,sqlmap对于post传参方式的注入)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 序言&#xff1a;本文主要讲解基于SQL labs靶场&#xff0c;sqlmap工具进行的post传参方式的SQL注入。 传参方式有两类&#xff0c;一类是直接在url栏内进行url编码后进行的传参&am…

批量打断相交线——ArcGIS 解决方法

在数据处理&#xff0c;特别是地理空间数据处理或是任何涉及图形和线条分析的场景中&#xff0c;有时候需要把相交的线全部从交点打断一个常见的需求。这个过程对于后续的分析、编辑、或是可视化展现都至关重要&#xff0c;因为它可以确保每条线都是独立的&#xff0c;避免了因…

LabVIEW放大器自动测量系统

开发了一个基于LabVIEW平台的多路前置放大器自动测量系统的开发与实施。该系统集成了硬件控制与软件编程&#xff0c;能够实现放大器各项性能指标的快速自动测量&#xff0c;有效提高了测试的精确性和效率。系统设计采用了虚拟仪器技术&#xff0c;结合了先进的测量与控制策略&…

Redis 7.x 系列【30】集群管理命令

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 集群信息2.1 CLUSTER INFO 3. 节点管理3.1 CLUSTER MYID3.2 CLUSTER NODES3…

UI界面卡顿检测工具--UIHaltDetector

引言&#xff1a; 在日常工作当中&#xff0c;我们经常会遇到软件的界面出现卡顿的问题&#xff0c;而为了确定卡顿原因&#xff0c;我特地写了一个UI界面卡顿的小工具&#xff1a;UIHaltDetector&#xff1b;该工具可以在检测到目标窗口出现卡顿的时候直接打印堆栈日志和输出…

Windows系统安全加固方案:快速上手系统加固指南 (下)

这里写目录标题 一、概述二、IP协议安全配置启用SYN攻击保护 三、文件权限3.1 关闭默认共享3.2 查看共享文件夹权限3.3 删除默认共享 四、服务安全4.1禁用TCP/IP 上的NetBIOS4.2 ### 禁用不必要的服务 五、安全选项5.1启动安全选项5.2禁用未登录前关机 六、其他安全配置**6.1防…

基于 HTML+ECharts 实现的数据可视化大屏案例(含源码)

数据可视化大屏案例&#xff1a;基于 HTML 和 ECharts 的实现 数据可视化已成为企业决策和业务分析的重要工具。通过直观、动态的图表展示&#xff0c;数据可视化大屏能够帮助用户快速理解复杂的数据关系&#xff0c;发现潜在的业务趋势。本文将介绍如何利用 HTML 和 ECharts 实…

基于JAVA+SpringBoot+Vue的前后端分离的医院后勤管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 医院后勤管理系统是一…

LLama 405B 技术报告解读

LLama 405B 技术报告解读 果然传的消息都是真的&#xff0c;meta在24号凌晨发布了llama 3的405B版本&#xff0c;这次还是做一个技术报告解读。 值得一提的是&#xff0c;在技术报告的开头&#xff0c;meta特意强调了一个 Managing complexity&#xff0c;大意是管控复杂度。…

echarts实现在市级行政区点击县级行政区,显示单个县级行政区地图数据

因需兼容ie&#xff0c;此处所有变量声明都用var。如无需支持&#xff0c;可另做let修改。 这里以常州市为例,我们可以去阿里云提供的地理工具去截取地图json数据DataV.GeoAtlas地理小工具系列 点击所选区域&#xff0c;右侧会对应显示json数据&#xff0c;再次点击右侧红框内…

【Hec-Ras】案例1:韩国Seung-gi stream稳定流/非稳定流模拟

Hec-Ras案例1&#xff1a;韩国Seung-gi stream 研究区域&#xff1a;Seung-gi stream&#xff08;韩国&#xff09;研究数据降水数据&#xff08;Rainfall data&#xff09; 步骤1&#xff1a;创建工程文件/打开已有工程文件步骤2&#xff1a;参数调整步骤2.1&#xff1a;数据导…

Android .rc规则详解与init 启动

系列文章请扫关注公众号&#xff01; 简介 Android的init进程是启动各种服务的核心进程&#xff0c;并处理属性设置等。怎么启动各个服务和监听属性的呢&#xff1f;启动过程中会解析rc文件,并存下来。当系统属性更改或启动某项服务时&#xff0c;init就会按照rc中的设置运行对…