项目创建 Vue3 + Ts + vite + pinia

news2024/9/21 1:39:09

vite官网

项目初始化

准备安装工作(按步骤创建)

npm init vue@latest

在这里插入图片描述

创建完成后再次安装对应插件
然后百度配置main.ts里面引入
npm i pinia --save //安装pinia
npm i vue-router --save //安装router
npm i axios --save //安装axios
//安装sass或less
npm add -D scss
npm add -D less

快速创建项目–推荐

npm init vite@latest project-name --template vue-ts//  
//npm 7+, 需要额外的双横线:
npm init vite@latest project-name -- --template vue-ts // npm 6.x

然后根据提示所选配置即可

创建完安装对应插件 
eslint校验代码工具的配置
prettier格式化工具配置
VueUse工具函数包
集成配置
npm i @types/node --save-dev

修改 tsconfig.json文件内容

{"compilerOptions": {"typeRoots": ["node_modules/@types","src/types"],"target": "esnext","useDefineForClassFields": true,"module": "esnext","moduleResolution": "node","strict": true,"jsx": "preserve","sourceMap": true,"resolveJsonModule": true,"esModuleInterop": true,"lib": ["esnext", "dom"],"baseUrl": "./","paths":{"@": ["src"],"@/*": ["src/*"],}},"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
}

修改 vite.config.ts文件内容

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import * as path from 'path';// https://vitejs.dev/config/
export default defineConfig({resolve: {alias: {'@': path.resolve(__dirname, 'src')}},plugins: [vue()],

// server: {port: 3000, hmr: {host: "0.0.0.0",port: 3000,},proxy: {'/api': {target: 'your https address',changeOrigin: true,rewrite: (path: string) => path.replace(/^\/api/, '')}}}
});


// PS
/*
//设置别名alias: {'@': path.resolve(__dirname, 'src')}},plugins: [vue()],server: 
{port: 3000, 
//启动端口hmr: {host: "0.0.0.0",port: 3000,},// 设置 https 
代理proxy: {'/api': {target: 'your https address',changeOrigin: true,rewrite: (path: string) => path.replace(/^\/api/, '')}

*/

安装eslint
npm i eslint eslint-plugin-vue --save-dev
因为 ESLint 默认使用 Espree 进行语法解析,无法识别 TypeScript 的一些语法,所以需要安装 @typescript-eslint/parser 替代掉默认的解析器

npm install @typescript-eslint/parser --save-dev
安装对应的插件 @typescript-eslint/eslint-plugin 它作为 eslint 默认规则的补充,提供了一些额外的适用于 ts 语法的规则。

npm install @typescript-eslint/eslint-plugin --save-dev

创建配置文件: .eslintrc.js

module.exports = {parser: 'vue-eslint-parser',parserOptions: {parser: '@typescript-eslint/parser',ecmaVersion: 2020,sourceType: 'module',ecmaFeatures: {jsx: true}},extends: ['plugin:vue/vue3-recommended','plugin:@typescript-eslint/recommended',],rules: {// override/add rules settings here, such as:}
};

创建忽略文件:.eslintignore

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*node_modules/
dist/
dist-ssr
*.local# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

命令行式运行:修改 package.json

{"scripts": {"eslint:comment": "使用 ESLint 检查并自动修复 src 目录下所有扩展名为 .js 和 .vue 的文件","eslint": "eslint --ext .js,.vue --ignore-path .gitignore --fix src",}
}```

#### 安装prettier

```javascript
npm i prettier eslint-config-prettier eslint-plugin-prettier --save-dev

创建配置文件: prettier.config.js 或 .prettierrc.js

//粘贴板

module.exports = {
    printWidth: 80, tabWidth: 4, useTabs: false, semi: true, singleQuote: true, quoteProps: 'as-needed', jsxSingleQuote: false, trailingComma: 'all', bracketSpacing: true, jsxBracketSameLine: false, arrowParens: 'always', rangeStart: 0, rangeEnd: Infinity, prettierrequirePragma: false, prettierinsertPragma: false, proseWrap: 'preserve', htmlWhitespaceSensitivity: 'css', lfendOfLine: 'auto'
}
// 详解版
module.exports = { // 一行最多 80 字符printWidth: 80,// 使用 4 个空格缩进tabWidth: 4,// 不使用 tab 缩进,而使用空格useTabs: false,// 行尾需要有分号semi: true,// 使用单引号代替双引号singleQuote: true,// 对象的 key 仅在必要时用引号quoteProps: 'as-needed',// jsx 不使用单引号,而使用双引号jsxSingleQuote: false,// 末尾使用逗号trailingComma: 'all',// 大括号内的首尾需要空格 { foo: bar }bracketSpacing: true,// jsx 标签的反尖括号需要换行jsxBracketSameLine: false,// 箭头函数,只有一个参数的时候,也需要括号arrowParens: 'always',// 每个文件格式化的范围是文件的全部内容rangeStart: 0,rangeEnd: Infinity,// 不需要写文件开头的 @prettierrequirePragma: false,// 不需要自动在文件开头插入 @prettierinsertPragma: false,// 使用默认的折行标准proseWrap: 'preserve',// 根据显示样式决定 html 要不要折行htmlWhitespaceSensitivity: 'css',// 换行符使用 lfendOfLine: 'auto'
}

****命令行式运行:修改 package.json

{"scripts": {"prettier:comment": "自动格式化当前目录下的所有文件","prettier": "prettier --write"}
}
安装Pinia

Pinia这个文档移步

npm install pinia

在src文件里面创建store文件-index.ts在main.ts中引用pinna

import {createPinia} from 'pinia'
const store = createPinia()
createApp(App).use(router).use(store).mount('#app')

index.ts文件

import { defineStore } from 'pinia'
 
export const studyStore = defineStore("getNum", {
     state:()=>{
         return {
             num:1 as number
         }
     },
     //类似于computed 可以帮我们去修饰我们的值
     getters:{
 
     },
     //可以操作异步 和 同步提交state
     actions:{
 
     }
})

其他页面使用

<template>
  <div>
    <span>data:{{ test.num }}</span>
    <button @click="add">数字++</button>
  </div>
</template>

<script setup lang="ts">
import { studyStore } from "../store"
const test = studyStore()

let add = () => {
  test.num++
}

</script>
安装Vue-Router
在这里插入代码片
安装VueUse
在这里插入代码片
安装scss 或 less
在这里插入代码片
安装axios/进行封装
在这里插入代码片
项目优化一下
在这里插入代码片

vs出线ref红波线解决

2种方式

1 引入ref爆红记得去更新vetur 
 安装vetur TypeScript这个插件
2 vetur 这个插件不支持vue3的setup语法糖的写法格式了,
你只需要停掉现有的vetur,
再去下载vue Language Features和TypeScript Vue Plugin,
第一个是支持vue3的标准语法的,
第二个是针对ts的,都安装后,重启vscode即可

项目包

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

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

相关文章

顺序表的应用——(通讯录)

目录 前提须知&#xff1a; 通讯录的结构&#xff1a; 通讯录的建立&#xff1a; 顺序表的重命名&#xff1a; 顺序表数据类型的更改&#xff1a; 使用通讯录结构体新名字&#xff0c;进行类型重命名的问题&#xff1a; 头文件的添加&#xff1a; 通讯录的初始化和销毁&a…

【Linux】NTP时间服务器Chrony配置详解

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的帮助&#x1f338;文…

CV计算机视觉每日开源代码Paper with code速览-2023.10.11

点击CV51&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【基础网络架构&#xff1a;Transformer】EViT: An Eagle Vision Transformer with Bi-Fovea Self-Attention 论文地址&#xff1a;https://arxiv.or…

Mysql分组查询每组最新的一条数据,查询用户的最新的一条记录

有订单表和用户表&#xff0c;如何获取用户的最新的一条订单记录&#xff1f; 订单表 CREATE TABLE orders (id int(11) NOT NULL AUTO_INCREMENT,uid int(10) NOT NULL DEFAULT 0,created_at datetime(0) NOT NULL,PRIMARY KEY (id) USING BTREE ) ENGINE InnoDB ;INSERT …

Python大数据之Python进阶(七)线程的注意点

线程的注意点 学习目标 能够说出线程的注意点 1. 线程的注意点介绍 线程之间执行是无序的主线程会等待所有的子线程执行结束再结束线程之间共享全局变量线程之间共享全局变量数据出现错误问题 2. 线程之间执行是无序的 import threading import timedef task():time.sleep…

17.(开发工具篇Gitlab)如何在Gitlab配置ssh key

前言: Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置 一、git 配置 (1)打开 git 命令窗口 (2)配置用户名(填自己的姓名) git config --global user.name “chenbc” (3)配置用户邮箱(填自己的邮箱) git config …

有没有普通人也能赚钱的副业?挖漏洞兼职!

如何开展副业&#xff1f;网络安全月入过万&#xff01; ​ 随着大数据和人工智能的兴起。各行业对信息安全和网络安全服务的需求量呈指数级的暴增。 这不最近&#xff0c;一个做运维的朋友在学网络安全。他告诉我&#xff0c;他靠挖漏洞赚钱上个月月入过万了&#xff0c;好香啊…

Unity 设置Inspect上问号的跳转链接

设置Inspect上问号的跳转链接 只需要在Class上添加特性&#xff1a;HelpURL即可&#xff01;

《进化优化》第1章 绪论

文章目录 1.1 术语1.2 又一本关于进化算法的书1.3 先修课程1.4 家庭作业1.5 符号1.6 本书的大纲 1.1 术语 一些作者称进化算法为进化计算。另一些人称进化算法为基于种群的优化。一些作者称进化算法为计算机智能或计算智能。专家系统模仿演绎推理&#xff0c;进化算法则模仿归…

视频如何截取高清gif?高清gif一键制作

Gif动图表情包作为当下最受欢迎的一种图片格式&#xff0c;一般是在网上或是与友人的聊天中获取的。其实&#xff0c;制作gif动图的方法也很简单&#xff0c;一段视频就能够从中截取到很多gif动图。只需要使用gif动态图片制作&#xff08;https://www.gif.cn/&#xff09;工具&…

腾讯云上创建 对象存储cos

1. 登录腾讯云, 找到对象存储cos 2. 创建存储桶 3. 获取4个配置参数 桶名称 / 地域secretId / secretKey

若依以及flowbale达梦国产化数据库改造_全网最细

Springboot与flowable—达梦国产化改造 文章目录 Springboot与flowable—达梦国产化改造1、相关软件下载1.1 下载可视化工具 2 、源代码运行2.1 导入sql2.2 打开项目&#xff0c;导入pom依赖2.3 修改配置2.3.1 修改数据库配置2.3.2 修改redis配置2.3.3 运行后端2.3.4 运行前端 …

【SpringMVC篇】探索请求映射路径,Get请求与Post请求

&#x1f38a;专栏【SpringMVC】 &#x1f354;喜欢的诗句&#xff1a;天行健&#xff0c;君子以自强不息。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f33a;请求映射路径⭐报错原因⭐解决方法 &#x1f33a;…

OpenCV实现答题卡自动打分!

目录 1&#xff0c;主要原理以及函数介绍 全部代码&#xff0c;以 2 &#xff0c; 实现过程 3&#xff0c;结果展示 1&#xff0c;主要原理以及函数介绍 ap argparse.ArgumentParser() 创建一个ArgumentParser对象&#xff0c;并将其赋值给变量ap。这个对象可以接受我们的脚…

基于springboot实现教师人事档案管理系统项目【项目源码+论文说明】

基于springboot实现教师人事档案管理系统演示 摘要 教师人事档案管理系统理工作是一种繁琐的&#xff0c;务求准确迅速的信息检索工作。随着计算机信息技术的飞速发展&#xff0c;人类进入信息时代&#xff0c;社会的竞争越来越激烈&#xff0c;教师人事档案就越显示出其不可或…

JAVA开发者全家桶工具

一、前言 作为JAVA开发者&#xff0c;编码的时间其实只占平时工作的时间不到30%。作为项目管理和团队协作&#xff0c;平时处理的杂事其实很多&#xff0c;当然也是开发工作的一部分&#xff0c;比如写文档&#xff0c;任务管理&#xff0c;代码review、程序部署等等。这一节介…

墨西哥专线正清和双清包税有什么区别?

在国际贸易中&#xff0c;物流运输是一个至关重要的环节。对于从中国发往墨西哥的商品&#xff0c;物流公司通常会提供不同的运输方式和服务&#xff0c;如正清和双清包税等。那么&#xff0c;这两种方式有何不同呢? 首先&#xff0c;我们来看什么是“正清”和“双清”。 “正…

docker 登录本地仓库harbor问题

1、报错如下&#xff1a; 添加目标harbor 仓库的hosts vim /etc/hosts 2、报错如下&#xff1a; 添加修改/etc/docker/daemon.json文件中的 insecure-registries vim /etc/docker/daemon.json 然后 systemctl daemon-reload systemctl restart docker再次登录

【Hello Algorithm】暴力递归到动态规划(二)

暴力递归到动态规划&#xff08;二&#xff09; 背包问题递归版本动态规划 数字字符串改字母字符串递归版本动态规划 字符串贴纸递归版本动态规划 **特别需要注意的是 我们使用数组之前一定要进行初始化 不然很有可能会遇到一些意想不到的错误 比如说在Linux平台上 new出来的in…

易点易动让企业实现低值易耗品的智能化采购管理

对于企业而言&#xff0c;低值易耗品的采购和管理是一项重要的任务。然而&#xff0c;传统的采购管理方式往往繁琐且耗时&#xff0c;容易导致资源浪费和效率低下。为了解决这些问题&#xff0c;我们推出了易点易动采购管理系统&#xff0c;它以其高效、便捷和智能化的特点&…