创建一个vue3 + ts + vite 项目

vite 官网: https://cn.vitejs.dev/guide/

兼容性注意

Vite 需要 Node.js 版本 18+,20+。然而,有些模板需要依赖更高的 Node
版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本。

安装项目

1. 使用npm 、yarn 、pnpm 其中一种命令安装即可

使用 NPM:

$ npm create vite@latest

使用 Yarn:

$ yarn create vite

使用 PNPM:

$ pnpm create vite

你还可以通过附加的命令行选项直接指定项目名称和你想要使用的模板。例如,要构建一个 Vite + Vue 项目,运行:

# npm 7+, extra double-dash is needed:
npm create vite@latest my-vue-app -- --template vue# yarn
yarn create vite my-vue-app --template vue# pnpm
pnpm create vite my-vue-app --template vue# bun
bun create vite my-vue-app --template vue

在这里插入图片描述

2. 输入vue项目名称,比如vue-vite-project

输入y并且回车,输入项目名称vue-vite-project
在这里插入图片描述
在这里插入图片描述

3. 选择模板,这里选择vue

在这里插入图片描述

4. 选择语法,这里选择TypeScript

在这里插入图片描述

5. 创建完成

在这里插入图片描述
至此项目创建完成,执行cd vue-vite-project,并且npm i 安装依赖就可以启动项目。
项目目录:
在这里插入图片描述


以上只是一个简单的 vue + vite 项目,我们要使用的话, 还要安装 vue-router/ sass/sass-loader/pinia/axios /Element Plus 等一系列生态。

6. 安装vue Router

npm install vue-router

在这里插入图片描述
配置router.ts文件

import { createRouter, createWebHashHistory, RouteRecordRaw } from "vue-router";
const routes: Array<RouteRecordRaw> = [{path: "/",name: "main",component: () => import("../views/Home/index.vue"),redirect: "/home",children: []},
];
const router = createRouter({scrollBehavior() {return { top: 0 };},history: createWebHashHistory(),routes,
});export default router;

配置app.vue

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

配置main.ts

在这里插入图片描述

7 安装Element Plus,并实现按需引入

官网:https://element-plus.gitee.io/zh-CN/guide/design.html

NPM

$ npm install element-plus --save

Yarn

$ yarn add element-plus

pnpm

$ pnpm install element-plus

在这里插入图片描述

官方提供了三种引入方式: 完整引入,按需导入,手动导入,推荐按需导入

首先你需要安装unplugin-vue-components 和 unplugin-auto-import这两款插件
npm install -D unplugin-vue-components unplugin-auto-import

然后把下列代码插入到你的 Vite 或 Webpack 的配置文件中

Vite

// vite.config.ts
import { defineConfig } from 'vite'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'export default defineConfig({// ...plugins: [// ...AutoImport({resolvers: [ElementPlusResolver()],}),Components({resolvers: [ElementPlusResolver()],}),],
})

添加全局配置:
在引入 ElementPlus 时,可以传入一个包含 size 和zIndex 属性的全局配置对象。

size 用于设置表单组件的默认尺寸
zIndex 用于设置弹出组件的层级,zIndex 的默认值为 2000
在这里插入图片描述
这样就可以使用element Plus啦。
在这里插入图片描述

8 安装css预处理器sass

在这里插入图片描述
vite.config配置
在这里插入图片描述

9. 配置路径别名 @

vite.config.ts


import { resolve } from 'path'resolve: {// ↓路径别名alias: {'@': resolve(__dirname, './src'),'~@': resolve(__dirname, './src')},// 忽略后缀名的配置选项extensions: ['.js', '.ts', '.vue', '.json']},

tsconfig.json配置:

// 配置@别名"baseUrl": ".","paths": {"@/*": ["src/*"]},

path-intellisense 插件(自动补全插件配置)

在这里插入图片描述

{"[typescript]": {"editor.defaultFormatter": "esbenp.prettier-vscode"},"path-intellisense.mappings": {"@/": "${workspaceFolder}/src","/": "${workspaceFolder}","lib": "${workspaceFolder}/lib","global": "/Users/dummy/globalLibs"},"path-intellisense.autoTriggerNextSuggestion": true
}

10. 安装eslint

npm i eslint -D

在这里插入图片描述
安装其他插件:

npm i -D eslint-plugin-import eslint-plugin-vue eslint-plugin-node eslint-plugin-prettier eslint-config-prettier eslint-plugin-node @babel/eslint-parser vue-eslint-parser  @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint-config-airbnb-base  eslint-define-config prettier-eslint

安装prettier

 npm i  -D eslint-plugin-prettier prettier eslint-config-prettier

.eslintignore 文件

*.sh
*.md
*.woff
*.ttf
.vscode
.idea
.husky
.local
dist
node_modules
Dockerfile
/public
/docs
/bin
iconfont.js

.eslintrc.js 文件

const { defineConfig } = require('eslint-define-config')module.exports = defineConfig({root: true, // 是否开启解析器env: {// 环境browser: true, // 浏览器环境中的全局变量。node: true, // Node.js 全局变量和 Node.js 作用域。es6: true // 启用除了 modules 以外的所有 ECMAScript 6 特性(该选项会自动设置 ecmaVersion 解析器选项为 6)。},parser: 'vue-eslint-parser', // 解析器parserOptions: {// 解析器配置parser: '@typescript-eslint/parser', //解析器ecmaVersion: 'latest', // 5(默认), 你可以使用 6、7、8、9 或 10 来指定你想要使用的 ECMAScript 版本。你也可以用年份命名的版本号,你也可以用 latest 来指向最新的版本。sourceType: 'module', // 设置为 "script" (默认)"module"(如果你的代码是 ECMAScript 模块)。jsxPragma: 'React', // 支持 ReactJSX 语法ecmaFeatures: {// 表示你想使用的额外的语言特性jsx: true // 启用 JSX}},extends: ['vue-global-api','plugin:vue/vue3-recommended','plugin:@typescript-eslint/recommended','prettier','plugin:prettier/recommended' // 一定要放在最后。因为 extends 中后引入的规则会覆盖前面的规则。],rules: {// @typescript-eslint'@typescript-eslint/explicit-function-return-type': 'off', // 需要函数和类方法的显式返回类型'@typescript-eslint/no-explicit-any': 'off', // 禁止使用该 any 类型'@typescript-eslint/no-var-requires': 'off', // 不允许使用 require 语句,除了在 import 语句中'@typescript-eslint/no-empty-function': 'off', // 禁止空函数'@typescript-eslint/no-use-before-define': 'off', // 在定义之前禁止使用变量'@typescript-eslint/ban-ts-comment': 'off', // 禁止 @ts-<directive> 使用评论或在指令后要求描述'@typescript-eslint/ban-types': 'off', // 禁止使用特定类型'@typescript-eslint/no-non-null-assertion': 'off', // '!'不允许使用后缀运算符的非空断言'@typescript-eslint/explicit-module-boundary-types': 'off', // 需要导出函数和类的公共类方法的显式返回和参数类型'@typescript-eslint/no-this-alias': ['off'], // 是否防止this变量和局部变量混淆'@typescript-eslint/no-unused-vars': ['error',{argsIgnorePattern: '^_',varsIgnorePattern: '^_'}], // 禁止未使用的变量// vue'vue/custom-event-name-casing': 'off', // 为自定义事件名称强制使用特定大小写'vue/attributes-order': 'off', // 强制执行属性顺序'vue/one-component-per-file': 'off', // 强制每个组件都应该在自己的文件中'vue/html-closing-bracket-newline': 'off', // 在标签的右括号之前要求或禁止换行'vue/multiline-html-element-content-newline': 'off', // 在多行元素的内容之前和之后需要换行符'vue/singleline-html-element-content-newline': 'off', // 在单行元素的内容之前和之后需要换行符'vue/attribute-hyphenation': 'off', // 对模板中的自定义组件强制执行属性命名样式'vue/require-default-prop': 'off', // 需要 props 的默认值'vue/html-indent': ['error', 2], // 在<template>中强制一致缩进'vue/html-self-closing': 'off', // 执行自闭合的风格'vue/max-attributes-per-line': 'off', // 强制每行属性的最大数量'vue/multi-word-component-names': 'off', // 是否开启组件命名规则校验(强制多个单词以驼峰或'-'链接的命名规则)// ESLint'no-use-before-define': 'off', // 禁止在变量定义之前使用它们'space-before-function-paren': 'off' // 强制在 function的左括号之前使用一致的空格}
})

.prettierignore文件

/dist/*
/public/*
/node_modules/**
.local
.output.js
**/*.svg
**/*.sh

.prettierrc.js文件

module.exports = {printWidth: 120, // 最大行长规则通常设置为 100120。tabWidth: 2, // 指定每个标签缩进级别的空格数。useTabs: false, // 使用制表符而不是空格缩进行。semi: false, // true(默认): 在每条语句的末尾添加一个分号。false:仅在可能导致 ASI 失败的行的开头添加分号。vueIndentScriptAndStyle: true, // Vue 文件脚本和样式标签缩进singleQuote: true, // 使用单引号而不是双引号quoteProps: 'as-needed', // 引用对象中的属性时,仅在需要时在对象属性周围添加引号。bracketSpacing: true, // 在对象文字中的括号之间打印空格。trailingComma: 'none', // "none":没有尾随逗号。"es5": 在 ES5 中有效的尾随逗号(对象、数组等),TypeScript 中的类型参数中没有尾随逗号。"all"- 尽可能使用尾随逗号。bracketSameLine: false, // 将>多行 HTML(HTML、JSX、Vue、Angular)元素放在最后一行的末尾,而不是单独放在下一行(不适用于自闭合元素)。jsxSingleQuote: false, // 在 JSX 中使用单引号而不是双引号。arrowParens: 'always', // 在唯一的箭头函数参数周围始终包含括号。insertPragma: false, // 插入编译指示requirePragma: false, // 需要编译指示proseWrap: 'never', // 如果散文超过打印宽度,则换行htmlWhitespaceSensitivity: 'strict', // 所有标签周围的空格(或缺少空格)被认为是重要的。endOfLine: 'auto', // 确保在文本文件中仅使用 ( \n)换行,常见于 Linux 和 macOS 以及 git repos 内部。rangeStart: 0 // 格式化文件时,回到包含所选语句的第一行的开头。
}

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

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

相关文章

Linux:TCP协议的三次握手和四次挥手

文章目录 三次握手四次挥手为什么要进行三次握手&#xff1f;三次握手也不安全 本篇解析的主要是TCP的三次握手和四次挥手的过程 三次握手 如图所示&#xff0c;在TCP要进行链接的时候&#xff0c;其实是要进行三次握手的 第一次握手是指&#xff0c;此时客户端要给服务器发送…

【Qt】QMainWindow

目录 一、概念 二、菜单栏 2.1 创建菜单栏 2.2 在菜单栏中添加菜单 2.3 创建菜单项 2.4 在菜单项之间添加分割线 三、工具栏 3.1 创建工具栏 3.2 设置停靠位置 3.3 设置浮动属性 3.4 设置移动属性 四、状态栏 4.1 状态栏的创建 4.2 显示实时消息 4.3 显示永久消…

Vue性能优化--gZip

一、gZip简单介绍 1.1 什么是gzip gzip是GNUzip的缩写&#xff0c;最早用于UNIX系统的文件压缩。HTTP协议上的gzip编码是一种用来改进web应用程序性能的技术&#xff0c;web服务器和客户端&#xff08;浏览器&#xff09;必须共同支持gzip。目前主流的浏览器&#xff0c;Chro…

【并发】第二篇 ThreadLocal详解

导航 一. ThreadLocal 简介二. ThreadLocal 源码解析1. get2. set3 .remove4. initialValue三. ThreadLocalMap 源码分析1. 构造方法2. getEntry()3. set()4. resize()5. expungeStaleEntries()6. cleanSomeSlots()7. nextIndex()8. remove()9. 总结ThreadLocalMap四. 内存泄漏…

超文本传输协议HTTP

HTTP协议 在网络通信中&#xff0c;我们可以自己进行定制协议&#xff0c;但是也有许多已经十分成熟的应用层协议&#xff0c;比如我们下面说的HTTP协议。 HTTP协议简介 HTTP&#xff08;Hyper Text Transfer Protocol&#xff09;协议又叫做超文本传输协议&#xff0c;是一…

带你学习现代C++并发编程

通过对C并发编程的理解&#xff0c;我总结了相关的文档&#xff0c;有需要的可以关注我公众号&#xff0c;并给我留言&#xff01; 这是目录

Cookie/Session

1.Cookie HTTP 协议自身是属于 "无状态" 协议. "无状态" 的含义指的是: 默认情况下 HTTP 协议的客户端和服务器之间的这次通信, 和下次通信之间没有直接的联系. 但是实际开发中, 我们很多时候是需要知道请求之间的关联关系的. 例如登陆网站成功后, 第二…

创建数据库管理账户以及授权

一、创建数据酷管理账户命令 为了保障数据库系统的安全性&#xff0c;以及让 其他用户协同管理数据库&#xff0c;可以在MariaDB数据库管理系统中为他们创建多个专用的数据库管理账户&#xff0c;然后再分配合理的权限&#xff0c;以满足他们的工作需求. 使用root管理员 登录…

自定义类型(二)结构体位段,联合体,枚举

这周一时兴起&#xff0c;想写两篇文章来拿个卷吧&#xff0c;今天也是又来写一篇博客了&#xff0c;也是该结束自定义类型的学习与巩固了。 常常会回顾努力的自己&#xff0c;所以要给自己的努力留下足迹。 为今天努力的自己打个卡&#xff0c;留个痕迹吧 2024.03.30 小闭…

LInux|命令行参数|环境变量

LInux|命令行参数|环境变量 命令行参数main的参数之argc&#xff0c;argv几个小知识<font color#0099ff size 5 face"黑体">1.子进程默认能看到并访问父进程的数据<font color#4b0082 size 5 face"黑体">2.命令行创建的程序父进程都是bash 环…

微分方程错题本

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

【Qt】:信号与槽(二)

信号与槽 一.带参数的信号和槽二.信号与槽的多对多连接三.信号与槽的断开四.lamda表达式定义槽函数 一.带参数的信号和槽 Qt的信号和槽也⽀持带有参数,同时也可以⽀持重载.此处我们要求,信号函数的参数列表要和对应连接的槽函数参数列表⼀致.&#xff08;一致指的是类型一致&a…

mysql安装遇到的问题

最近mysql安装遇到了许多问题 这个界面是下载器界面&#xff0c;reconfigure是重新配置这个版本&#xff0c;要新安装要点add 进入这个界面选择对应的版本下载

MySQL 数据库基础操作详解

文章目录 MySQL 数据库基础操作详解1. 基本概念2. 库的操作3. 表的操作4. 数据操作5. 示例示例一&#xff1a;创建表和插入数据示例二&#xff1a;查询数据示例三&#xff1a;更新数据示例四&#xff1a;删除数据 MySQL 数据库基础操作详解 MySQL 是一种常用的关系型数据库管理…

【目录整理】(五)

​​​​​Git 基础 Git 详细安装教程文章浏览阅读10w次&#xff0c;点赞9.6k次&#xff0c;收藏1.7w次。Git 是个免费的开源分布式版本控制系统&#xff0c;下载地址为git-scm.com 或者 gitforwindows.org&#xff0c;本文介绍 Git-2.40.0-64-bit.exe 版本的安装方法&#x…

python电商结合双轨制

最近又重新整合翻看以前的数据&#xff0c;图片&#xff0c;绘画&#xff0c;还有各种编程代码&#xff0c;python,leetcode,还有关于商业方面的一些见解,想起了大学时候和同学们并肩作战&#xff0c;熬夜编码的时光。还有大数据&#xff0c;八爪鱼爬虫。 下面是我的手稿电商打…

算法学习——LeetCode力扣动态规划篇9

算法学习——LeetCode力扣动态规划篇9 1035. 不相交的线 1035. 不相交的线 - 力扣&#xff08;LeetCode&#xff09; 描述 在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。 现在&#xff0c;可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线&#x…

JavaSE day16笔记 - string

第十六天课堂笔记 学习任务 Comparable接口★★★★ 接口 : 功能的封装 > 一组操作规范 一个抽象方法 -> 某一个功能的封装多个抽象方法 -> 一组操作规范 接口与抽象类的区别 1本质不同 接口是功能的封装 , 具有什么功能 > 对象能干什么抽象类是事物本质的抽象 &…

2536. 子矩阵元素加 1

跳转题目 本题暴力可以做&#xff0c;猜到用差分&#xff0c;但是不熟&#xff0c;不知道二维差分怎么用&#xff0c;碰到用差分的题目太少了。 暴力算法&#xff1a; class Solution { public:vector<vector<int>> rangeAddQueries(int n, vector<vector<…