0


vite+vue3+ts 手把手教你创建一个vue3项目

使用vite 创建一个vue3项目,基本全程cv。

安装router,less / scss,pinia,axios, element / Ant Design Vue,Echarts 以及如何配置@别名,自定义组件,vue-devtools插件。

1、创建vue3项目

npm

npm create vite@latest 

yarn

 yarn create vite

输入项目的名字(作者就用test了)

Project name: » vite-project

按上下选择框架,这就选vue然后回车

√ Project name: ... test
? Select a framework: » - Use arrow-keys. Return to submit.
    Vanilla
>   Vue
    React
    Preact
    Lit
    Svelte

选择ts,

? Select a variant: » - Use arrow-keys. Return to submit.
    JavaScript
>   TypeScript
    Customize with create-vue
    Nuxt

然后控制台出现后面这三条命令,cv就行

Done. Now run:
  cd test
  npm install
  npm run dev

2、安装less/scss

二选一

安装less

npm

 npm install less less-loader --save-dev  

yarn

 yarn add less less-loader --dev  

安装scss

npm

 npm install sass node-sass --save-dev  

yarn

 yarn add sass node-sass --dev  

安装后可以直接使用less了 ,当然,也可以使用scss,二选一

注意:这边如果不加–dev,包会安装到dependencies中,这样会导致编译不通过。需要将less和less-loader迁移到devDependencies中再重新执行安装。

3、安装 router

npm

 npm install vue-router@4 

yarn

 yarn add vue-router@4 

main.ts文件引入

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

 //routes
 import router from "./routes/index"; 

const app= createApp(App)

 //routes 
 app.use(router)  
app.mount('#app')

在src下创建一个 routes 文件夹,再创建一个 index.ts 文件

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

let routes= [
    {
        path: '/',
        name: 'home',
        //使用import可以路由懒加载,如果不使用,太多组件一起加载会造成白屏
        component: () => import('../view/homeView.vue')
    },
    //{
        //配置404页面
        //path: '/:catchAll(.*)',
        //name: '404',
        //component: () => import(''),
    //}
]
// 路由
const router = createRouter({
    history: createWebHistory(),
    routes
})
// 导出
export default router 

router安装好了,其它(页面)要自己配置,404页面未配置

4、安装pinia

因为是vue3+ts,安装pinia更好点,vuex拥抱ts没有pinia好

npm

 npm install pinia 

yarn

 yarn add pinia

main.ts引入

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

const app = createApp(App)

//pinia
app.use(pinia)

app.mount('#app')

在src下创建一个 store 文件夹,再创建一个 home.ts 文件

其它名也可以,因为pinia它有一个根文件,会把 defineStore 第一个参数当id值,相当于vuex中的 **module **自动引入,也会在Vue.js devtools 插件中以第一个参数名展示(下面展示)

注意:defineStore第一个参数很重要,而且是唯一值。它的命名在devtools 插件能方便找到这个文件的数据,方便调试

import { defineStore } from 'pinia'
// useMain  可以是 useUser、useCart 之类的名字 
// defineStore('main',{..}) 在devtools 就使用 main 这个名
export const useMain = defineStore('main', {
    // 相当于data
    state: () => {
        return {
          // 所有这些属性都将自动推断其类型,如果推断失败可以试下 as xxx
          counter: 0,
          name: 'Eduardo',
        }
    },
    // 相当于计算属性
    getters: {
        doubleCount: (state) => {
            return state.counter * 2
        },
    },
    // 相当于vuex的 mutation + action,可以同时写同步和异步的代码
    actions: {
        increment() {
          this.counter++
        },
        randomizeCounter() {
            setTimeout(() => {
                this.counter = Math.round(100 * Math.random())
            }, 0);
        },
    },
})

在要使用pinia的组件

以下使用只是用的比较常用的方法,还有其它方法请查看官网 ** pinia中文官网 **

<template>
    <div>counter:{{counter}}</div>
    <div>doubleCount:{{doubleCount}}</div>
    <a-button @click="main.randomizeCounter()">counter(round)</a-button>
    <a-button type="primary" @click="main.increment()">counter++</a-button>

    <div>{{name}}</div>
    <a-button @click="amend()">修改</a-button>
</template>
<script setup lang='ts'>

//引入想要的pinia文件 {} 里面就是对应导出的名字
import { useMain } from '../store/home'
import { storeToRefs } from 'pinia';

const main = useMain()
// 解构main里面的state和getters的数据,
// 使用storeToRefs解构才有响应式,响应式可以直接修改数据,不过这我只用来渲染
const { counter,name ,doubleCount } = storeToRefs(main)

//(常用方法三种)
//常用方法一: 使用数据
console.log( counter );
//使用方法(方法目前不能解构)
main.increment()

// 常用方法二:修改数据
counter = 9999

//常用方法三:
//进阶使用$patch,多个修改
const amend=()=>{
    main.$patch((state) => {
        state.counter += 10;
        state.name = '张三'
    })
}

</script>

Vue.js devtools 环境下通过 defineStore 第一个参数当id值找到对应的仓库

vue-devtools插件

如果你没有vue-devtools,而又想下载这里有一个教程下载

对vue-devtools的下载、编译、安装、使用

数据持久化插件

如果你想要数据持久化可以试下这个插件,简单使用

数据持久化插件

5、安装axios

想要方便使用axios,想要封装统一的请求头处理,便于接口的统一管理,以及解决出现回调地狱。

可以通过下面的链接去实现

vite + vue3 +ts 安装并封装axios

因为写的比较多了,看起来烦,所以把一起写在别链接上,下面这些都是自己的需求来安装

6、配置@别名

在vite配置@别名,这能在开发时对路径看些来直观点。

vite配置@别名

7、自定义组件名

**TIP:在 3.2.34 或以上的版本中,使用

<script setup>

的单文件组件会自动根据文件名生成对应的

name

选项,无需再手动声明。**

也就是说,除非你想换名,并且又不想写两个** script 标签**,就可以通过下面的链接去做。

Vue3 setup 语法糖下如何定义组件名称

8、安装element-puls组件库

安装自动按需导入element-puls组件。如果不使用element,可以试下 Ant Design Vue 组件库,一般只要一个就够了。

vite + vue + ts 自动按需导入 Element Plus组件,与按需导入后的ElMessage与ElLoading 的问题

9、安装 Ant Design Vue 组件库

安装自动按需导入Ant Design Vue 组件。

vite + vue3 + ts 自动按需导入ant-design-vue组件

10、安装与使用Echarts

这个看你的项目要不要使用Echarts,如果不用可以忽略。

安装与使用Echarts,这个链接的方法是在vite+vue3,而且是固定的宽高,不是响应式的可视化。

vue3 + ts 在 setup 下使用Echarts

完成! ✨

如果哪有不对的地方,请留言,我看到就会修改


本文转载自: https://blog.csdn.net/weixin_59916662/article/details/127331094
版权归原作者 相见一月 所有, 如有侵权,请联系我们删除。

“vite+vue3+ts 手把手教你创建一个vue3项目”的评论:

还没有评论