vite+vue3.0 + TypeScript+element-plus环境搭建

news2025/1/17 5:49:39

1、环境要求:node版本16+以上

2、搭建vite项目

npm create vite@latest

 

cmd运行下面命令

cd vite-project

npm install

npm run dev

 

谷歌浏览器访问http://127.0.0.1:5173/  查看效果

3、安装element-plus组件

npm运行以下命令进行安装element-plus

 npm install element-plus -S

 

在vue的main.ts文件里面,全局引用elementUI

import { createApp } from 'vue'
import './style.css'
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')
<el-row class="mb-4">
    <el-button>Default</el-button>
    <el-button type="primary">Primary</el-button>
    <el-button type="success">Success</el-button>
    <el-button type="info">Info</el-button>
    <el-button type="warning">Warning</el-button>
    <el-button type="danger">Danger</el-button>
  </el-row>

 

4、VSCode编辑器扩展调整

 原因: 因为vue3已经不支持vetur插件。

在扩展里面进行搜索Vetur插件,进行禁用或卸载;

在 VScode扩展里面搜索并下载对应插件: Vue Language Features (Volar)和TypeScript Vue Plugin (Volar)

如果提示下载失败,需要手动进行下载;(原因:可能是VScode版本太低,需要升级最新版本,菜单栏-》帮助-》检查更新...)

 

 VScode编辑器设置ref()自动补全.value命令;

 5、调整web端口配置

//vite.config.ts
server: {
    port: 8090,
    open: false,
    proxy: {
      
    },
  },

 6、下载安装其他依赖包

6.1 安装@types/node,配置@=src目录路径

npm install @types/node --save-dev 

在vite.config.ts文件添加配置 

import { resolve } from 'path'
resolve: {
  extensions: [
      ".mjs",
      ".js",
      ".ts",
      ".jsx",
      ".tsx",
      ".json",
      ".vue",
      ".ttf",
    ],
    alias: {
      "@": resolve(__dirname, "./src"),
    }
  },

在tsconfig.json文件里面添加配置 

"baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    }

 6.2 安装sass依赖包

处理使用css使用lang="scss"报错问题

npm install sass --save-dev 

参考资料: https://www.w3cschool.cn/sass/ 

 6.3、安装vue-router

npm install vue-router@4 

参考资料: https://router.vuejs.org/zh/installation.html 

6.4、安装pinia

npm install pinia 

 

参考资料: https://pinia.vuejs.org/zh/getting-started.html 

6.5、安装vuex(可安装)

Pinia 起源于一次探索 Vuex 下一个迭代的实验,因此结合了 Vuex 5 核心团队讨论中的许多想法。最后,我们意识到 Pinia 已经实现了我们在 Vuex 5 中想要的大部分功能,所以决定将其作为新的推荐方案来代替 Vuex。

与 Vuex 相比,Pinia 不仅提供了一个更简单的 API,也提供了符合组合式 API 风格的 API,最重要的是,搭配 TypeScript 一起使用时有非常可靠的类型推断支持。

 npm install vuex@next --save

 

参考资料: https://vuex.vuejs.org/zh/installation.html 

6.6、安装axios

npm install axios --save 

参考资料: https://www.w3cschool.cn/jquti/jquti-kb3a35x1.html 

6.7、安装echarts

npm install echarts --save 

 参考资料: https://echarts.apache.org/examples/zh/index.html

6.8、安装lodash

npm install lodash --save 

参考资料: https://www.lodashjs.com/ 

6.9、安装moment

npm install moment --save 

 参考资料: http://momentjs.cn/docs/#/use-it/

6.10、安装@ant/g6

npm install --save @antv/g6 

参考资料: https://antv-g6.gitee.io/zh/docs/manual/getting-started 

6.11、安装nprogress

npm install --save nprogress 

参考资料: https://blog.csdn.net/qq_31968791/article/details/106790179 

6.12、 安装jquery

npm install --save jquery 

 参考资料: https://www.runoob.com/jquery/jquery-tutorial.html

7、组件使用

7.1、vue-router和router-view使用

APP.vue文件里面添加

<script setup lang="ts">

</script>

<template>
  <div class="frame-container">
    <router-view/>
  </div>
</template>

<style scoped>
html,
body {
  margin: 0px;
  height: 100%;
}
.frame-container {
  width: 100%;
  height: 100%;
}
</style>

src下新增router/index.ts文件

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

const appRoutes: Array<RouteRecordRaw> = [
  {
    path: "/",
    name: "home",
    component: () => import("@/components/HelloWorld.vue")
  },
  {
    path: "/HelloWorld",
    name: "HelloWorld",
    component: () => import("@/components/HelloWorld.vue")
  },
];
const router = createRouter({
  // 4. 内部提供了 history 模式的实现。为了简单起见,我们在这里使用 hash 模式。
  history: createWebHashHistory(),
  routes: [ ...appRoutes ]
});
export default router;

在main.ts文件里面添加引用

import { createApp } from 'vue'
import App from './App.vue'
import router from "@/router";


const app = createApp(App)
app.use(router)
app.mount('#app')

7.2 jQuery使用

在main.ts文件中添加

declare const window: any;
import jQuery from 'jquery';
window.$ = window.jQuery = jQuery;

 在.vue文件中使用

declare const $: any;
$.ajax({
  url: "",
  type: "GET",
  dataType: "JSON"
}).then( (res:any) =>{
  //to some thing
});

 7.3、引用svg图片

安装依赖插件vite-plugin-svg-icons和fast-glob

npm install vite-plugin-svg-icons --save 

npm install fast-glob --save

在vite.config.ts文件修改配置

import {createSvgIconsPlugin} from 'vite-plugin-svg-icons';

createSvgIconsPlugin({

      // 需要自动导入的 svg 文件目录(可修改)

      iconDirs: [resolve(process.cwd(), "src/svgIcon/svg")],

      // 执行icon name的格式(可修改)

      symbolId: "icon-[name]",

    })

封装svg-icon图标

在src目录下面创建svgIcon文件夹,svg文件夹下放.svg图片;index.vue封装svg-icon组件;


<template>
  <svg class="svg-icon" aria-hidden="true" v-bind="$attrs" v-on="$listeners">
    <use :xlink:href="symbolId" />
  </svg>
</template>
<script setup lang="ts">
import { computed, toRefs } from "vue";
const props = defineProps({
  name: {
    type: String
  },
});
const { name } = toRefs(props);
const symbolId = computed(() => `#icon-${name.value}`);
</script>

<style scoped lang="scss">
.svg-icon {
  width: 1em;
  height: 1em;
  vertical-align: middle;
  fill: currentColor;
  overflow: hidden;
  transition-duration: 0.3s;
  border-radius: 4px;
  box-sizing: border-box;
}

</style>

 在main.ts文件引用

import svgIcon from '@/svgIcon/index.vue'
import "virtual:svg-icons-register";
app.component('svg-icon',svgIcon)

import { createApp } from 'vue'
import App from './App.vue'
import svgIcon from '@/svgIcon/index.vue'
import "virtual:svg-icons-register";

const app = createApp(App)
app.component('svg-icon',svgIcon)
app.mount('#app')

.vue文件引用组件

<svg-icon

        class="logo"

        name="vue"

      ></svg-icon>

7.4、引用pinia

在main.ts文件中添加


import { createApp } from 'vue'
import App from './App.vue'
import { createPinia } from 'pinia'
const pinia = createPinia()

const app = createApp(App)
app.use(pinia)
app.mount('#app')

 新增src/store/pinia/index.ts文件

import { defineStore } from "pinia";

// 你可以对 `defineStore()` 的返回值进行任意命名,但最好使用 store 的名字,同时以 `use` 开头且以 `Store` 结尾。(比如 `useUserStore`,`useCartStore`,`useProductStore`)
// 第一个参数是你的应用中 Store 的唯一 ID。
export const useAppConfigStore = defineStore('appConfig', {
  state() {
    return {
      count: 0
    }
  },
  getters: {
    double: (state) => {
      return state.count * 2
    }
  },
  actions: {
    increment() {
      this.count++
    },
  }
});


 在.vue文件中使用

<script setup lang="ts">
import { useAppConfigStore } from '@/store/pinia/index.ts'
const appConfig = useAppConfigStore()
function handleCount() {
  appConfig.increment();
}

</script>

<template>
  <div>
    <el-button type="button" @click="handleCount()">操作appConfit.count</el-button>
    <p>appConfig.count: {{ appConfig.count }}</p>
    <p>appConfig.double: {{ appConfig.double }}</p>
  </div>
</template>

 

7.5、引用tailwindcss组件

参考资料: https://www.tailwindcss.cn/docs/installation

npm install -D tailwindcss

npm install postcss

npm install autoprefixer

npx tailwindcss init -p

 生成/src/tailwind.config.js和/src/postcss.config.js配置文件

在/src/tailwind.config.js配置文件中添加所有模板文件路径

新建/src/resources/tailwind.var.css文件;在文件中添加:

@tailwind base;
@tailwind components;
@tailwind utilities;

在/src/main.ts中进行引用

import "./resources/tailwind.var.css";

 在vue文件中使用

<template>
  <div class="h-full">
    <h1 class="text-3xl font-bold underline">Hello world!</h1>
    <div class="flex">
      <div class="flex-none h-10 w-[80px] bg-red-400" >11</div>
      <div class="flex-1 h-10 bg-orange-400">22</div>
      <div class="flex-1 h-10 bg-lime-400">33</div>
    </div>
  </div>
</template>

<script setup lang="ts"></script>

<style lang="scss" scoped>

</style>

 

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

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

相关文章

汽车屏类产品(二):360全景环视(SVC)、多分割显示、行车记录

前言 随着新能源汽车的快速发展,带动了车载器件的大发展,大的比如域控,小的创新更是不断涌现。而车载显示屏可以说是一大类产品,产品形态也是愈发多样化,比如:仪表cluster、中控IVI、副驾屏、行车记录仪、流媒体后视镜、透明A柱屏、方向盘屏(替代方向盘按键)、门饰板显…

基因组的Phasing原理

1.Phasing的概念 Phasing&#xff0c;或者说Genotype Phasing&#xff0c;它的中文名有很多&#xff1a;基因定相、基因分型、单倍体分型、单倍体构建等在不同的语境下都有人说过。但不管如何&#xff0c;所谓Phasing就是要把一个二倍体&#xff08;甚至是多倍体&#xff09;基…

Vue 网络处理 - axios 异步请求的使用,请求响应拦截器(最佳实践)

目录 一、axiox 1.1、axios 简介 1.2、axios 基本使用 1.2.1、下载核心 js 文件. 1.2.2、发送 GET 异步请求 1.2.3、发送 POST 异步请求 1.2.4、发送 GET、POST 请求最佳实践 1.3、请求响应拦截器 1.3.1、拦截器解释 1.3.2、请求拦截器的使用 1.3.3、响应拦截器的使…

配电房智能化改造在加油站等的应用

随着科技的发展和智能化趋势的推进&#xff0c;对加油站配电房进行智能化改造成为了一个必然的选择。智能化改造不仅可以提高加油站的工作效率&#xff0c;减少事故发生率&#xff0c;还可以实现能源的合理利用&#xff0c;提高经济效益。 力安科技加油站智能化改造升级是一种高…

深度学习——卷积神经网络(CNN)基础三

深度学习——卷积神经网络&#xff08;CNN&#xff09;基础三 文章目录 前言五、汇聚层&#xff08;池化层&#xff09;5.1. 最大池化和平均池化5.2. 填充和步幅5.3. 多个通道5.3. 小结 六、卷积神经网络&#xff08;LeNet&#xff09;6.1. LeNet6.2. 模型训练6.3. 小结 总结 前…

Centos7 安装 MySQL5.7 步骤

Centos7 安装 MySQL5.7 步骤 前言&#xff1a;一 .使用yum源方式安装1、卸载系统自带 mariadb查看并卸载系统自带的 Mariadb 2、下载并安装MySQL官方的 Yum2.1 下载mysql的yum源配置2.2 安装mysql的yum源2.3 使用yum方式安装mysql2.3.1 安装过程中报错解决问题描述解决方案 3、…

JTS-通过Coordinate点截断几何Geometry

背景 通过一堆点&#xff0c;线上的点或者靠近线的点&#xff0c;来截取线段&#xff0c;将线段截取成多段 代码片段 /*** 通过点截取线&#xff0c;点可以是线上的形状点也可以是靠近线的点** 线 ------------------------------------------* 点 . . . …

YOLO目标检测——复杂场景人员数据集【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;安防监控、人群管理、自动驾驶、城市规划、人机交互等等数据集说明&#xff1a;YOLO目标检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富。使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;含voc(xml)、coco(j…

C++模版初阶讲解

今日为大家分享C的模版&#xff0c;这里先把模版的初阶讲解一下&#xff0c;以后再讲解模版进阶&#xff01; 前言&#xff1a;模版的引入 在我们进行学习的编程中&#xff0c;常常会有许多函数的功能相同&#xff0c;有些不同点可能就是其中的数据类型不同&#xff01;如果我…

Jmeter连接Mysql数据库

一.下载mysql数据驱动 https://dev.mysql.com/downloads/connector/j/ 二、在Jmeter测试计划中添加驱动包 三、jmeter添加配置元件&#xff1a;JDBC Connection Configuration 四、Jmeter发送JDBC请求 五、提取mysql查询结果

工业交换机的应用场景

在选择工业交换机的时候&#xff0c;很多人会疑惑自己的场景是否适用工业交换机&#xff0c;工业交换机广泛应用于以下场景&#xff0c;大家可以参考了解 1. 工业自动化&#xff1a;工业交换机用于连接各种工业设备&#xff0c;如PLC&#xff08;可编程逻辑控制器&#xff09;、…

【探索C++】三大特性以及类和对象(包括类的特殊函数成员)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…

遇到的问题总结

1、在实验室服务器里运行新项目的时候遇到 conda activate pytorch3_7(我的环境名字) conda install -c anaconda tensorboard (失败 一直堵在"Solving environment" &#xff09; pip install tensorboard

VS使用Visual Assist添加代码说明信息

写代码时&#xff0c;我们一般需要在代码的最前面添加一些说明信息&#xff0c;作者的联系方式等等。一些高级的 IDE 工具提供修改代码模板的功能&#xff0c;这样就能够在创建新代码时自动加上版权信息。Visual Studio 虽然没有提供这样的操作界面&#xff0c;但是我们可以通过…

Cron表达式每周三周五18点执行

Cron表达式每周三周五18点执行 0 0 18 ? * WED,FRI验证正确性&#xff1a;

C# Winform编程(5)菜单栏和工具栏

菜单和菜单组件 添加菜单编辑菜单菜单栏和工具栏 添加菜单 将MenuStrip控件拖拽到Form窗体顶部添加菜单 编辑菜单 添加菜单项&#xff0c;编辑菜单属性等功能。 右键单击已添加的菜单项可以弹出右键菜单&#xff1a; 可以设置菜单图标&#xff0c;使能菜单&#xff0c;显示…

[Python中常用的回归模型算法大全:从线性回归到XGBoost]

文章目录 概要保序回归&#xff1a;理论与实践多项式回归&#xff1a;探索数据曲线关系多输出回归的示例 概要 在数据科学和机器学习领域&#xff0c;回归分析是一项关键任务&#xff0c;用于预测连续型变量的数值。除了传统的线性回归模型外&#xff0c;Python提供了丰富多样…

每周电子W4——电路与电路模型

文章目录 每周电子W4——电路与电路模型电路电路模型电流和电压的参考方向电流的参考方向电压的参考方向 电功率 每周电子W4——电路与电路模型 电路 实际电路&#xff1a;由电工设备和电气器件按预期目的连接构成的电流的通路。 为完成某种预期的目的而设计、安装、运行的&a…

latex:表格水平宽度调整

解决方案 结果如下&#xff1a; 源代码如下&#xff1a; \documentclass{article} % \usepackage[utf8]{ctex} \usepackage{multirow} \usepackage{graphicx} \usepackage{booktabs} \usepackage{caption}\begin{document}\captionsetup{font{large}}\begin{table}[] \centeri…

数据结构 - 7(Map和Set 15000字详解)

一&#xff1a; 二叉搜索树 1.1 二叉搜索树的概念 概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所…