vue3+typescript+vite项目初始化

最后更新时间:2023年5月6日下载完整项目

一、新建vite项目

此教程采用pnpm包管理,与npmyarn包管理方式略有区别。

# 构建vite项目,涉及命名项目、选择技术栈等操作,这里选择vue+typescript。
pnpm create vite
# 完成之后,cd到项目目录中。
pnpm

二、使项目支持@根目录

**作用举例:**让@代表根目录,避免使用冗长的相对路径。

<script setup lang="ts">
  // 【使用该配置前】
  import {AppMenu} from '../../components/AppMenu.vue'
  // 【使用该配置后】
  import {AppMenu} from '@/components/AppMenu.vue'
</script>
// tsconfig.json
{
    "compilerOptions": {
        // ...
        "baseUrl": "./",
        "paths": {
            "@/*": [
                "./src/*"
            ]
        }
    }
}

首先在控制台执行安装命令。

pnpm install -D @types/node
// vite.config.ts
// ...
import path from "path"

export default {
    // ...
    resolve: {
        alias: {
            "@": path.resolve(__dirname, './src')
        }
    },
}

三、代理后端请求

// vite.config.ts
export default {
    server: {
        // ...
        // 将 /v1/xxx 请求映射到 http://127.0.0.1:8080/v1/xxx
        proxy: {
            '/v1': {
                target: 'http://127.0.0.1:8080',
                changeOrigin: true
            },
        }
    }
}

四、element-plus前端框架

(1) 安装element-plus

pnpm install --save element-plus
pnpm install -D unplugin-vue-components unplugin-auto-import
// vite.config.ts
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import {ElementPlusResolver} from 'unplugin-vue-components/resolvers'

export default {
    plugins: [
        // ...
        AutoImport({
            resolvers: [ElementPlusResolver()],
        }),
        Components({
            resolvers: [ElementPlusResolver()],
        }),
    ],
}

(2) 将element-plus默认语言调整为中文

// 将element组件默认语言调整为中文
// src->App.vue
<template>
  <!-- 被包含的组件全都变为默认中文 -->
  <el-config-provider :locale="zhCn">
    <router-view></router-view>
  </el-config-provider>
</template>

<script setup lang="ts">
  import zhCn from 'element-plus/es/locale/lang/zh-cn'
  import {ElConfigProvider} from 'element-plus'
</script>

五、封装axios请求和接口

pnpm install axios qs @types/qs
// src -> requests -> http.ts
import axios from 'axios'
import QS from 'qs'

// get请求
export function get(url: string, params: any) {
    return new Promise((resolve, reject) => {
        axios({
            method: 'get',
            url: url,
            params: params
        }).then((res: any) => {
            resolve(res.data)
        }).catch((err: any) => {
            reject(err)
        })
    })
}

// post请求
export function post(url: string, params: any) {
    return new Promise((resolve, reject) => {
        axios({
            method: 'post',
            url: url,
            data: QS.stringify(params),
        }).then((res: any) => {
            resolve(res.data)
        }).catch((err: any) => {
            reject(err)
        })
    })
}
// src -> requests -> api.ts
import {get, post} from "@/requests/http";

export const Login = (p: any) => post('/v1/login', p)
export const Users = (p: any) => get('/v1/user/list', p)

六、安装vue-router

pnpm install vue-router@4
// src -> plugins -> router.ts
import {createRouter, createWebHashHistory} from 'vue-router'
export const router = createRouter({
  history: createWebHashHistory(),
  routes: [
  	// ...路由
  ]
})
// src -> main.ts
import {createApp} from 'vue'
import App from './App.vue'
import {router} from "@/plugins/router";

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

七、安装pinia (替代Vuex)

pnpm install pinia
// src -> plugins -> store.ts
import {defineStore} from 'pinia'

export const useStore = defineStore('default', {
    state: () => ({}),
    getters: {},
    actions: {}
})
// src -> main.ts
import {createApp} from 'vue'
import App from './App.vue'
import {router} from '@/plugins/router'
import {createPinia} from 'pinia'

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

八、安装mock.js

pnpm install -D mockjs vite-plugin-mock cross-env
// package.json
"scripts": {
    "dev": "cross-env NODE_ENV=development vite --host",
    // ...
},
// vite.config.ts

import vue from "@vitejs/plugin-vue";
import { viteMockServe } from "vite-plugin-mock";
import { defineConfig } from "vite";

export default defineConfig({
    plugins: [
        // ...
        viteMockServe({
            supportTs: false
        })
    ],
});
// 在根目录创建mock文件夹
// mock -> api.ts
export default [
    {
        url: "/api/getUsers",
        method: "get",
        response: () => {
            return {
                code: 0,
                message: "ok",
                data: ["tom", "jerry"],
            };
        },
    },
];

九、浏览器兼容

pnpm install -D @vitejs/plugin-legacy
// vite.confg.ts
// ...
import legacy from '@vitejs/plugin-legacy'
export default defineConfig({
    base: 'https://res.example.com/',
    mode: 'production',
    plugins: [
      // ...
        legacy({
            targets: ['defaults', 'chrome >= 58'],
        }),
    ]
})

十、代码混淆(更新)

pnpm install -D rollup-obfuscator
// vite.confg.ts
// ...
import { obfuscator } from "rollup-obfuscator";
export default defineConfig({
    plugins: [
      // ...
      // 配置参数参考:https://github.com/javascript-obfuscator/javascript-obfuscator
      obfuscator({
            globalOptions: {
                debugProtection: true,
                debugProtectionInterval:2000,
                transformObjectKeys: true,
                unicodeEscapeSequence: true,
                numbersToExpressions: true,
                shuffleStringArray: true,
                splitStrings: true,
                stringArray: false,
                stringArrayThreshold: 1,
                identifierNamesGenerator: 'hexadecimal'
            },
        })
    ]
})

下载完整项目

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
vue3+typescript+elementplus的项目中使用vite作为构建工具,你可以按照以下步骤进行下载和引用vite: 1. 首先,使用npm初始化一个vite项目。在终端中运行以下命令: ``` npm init @vitejs/app vue3-vite-ts-elementplus --template vue-ts ``` 这将创建一个基于vue3+typescript+elementplus的vite项目。 2. 项目初始化后,默认没有安装router和vuex,你需要使用npm安装它们。在终端中运行以下命令: ``` npm i vue-router@next vuex@next -S ``` 3. 接下来,你需要安装三个额外的插件,以实现按需引用。在终端中运行以下命令: ``` npm i unplugin-vue-components unplugin-auto-import unplugin-element-plus ``` 4. 在项目的配置文件中(一般是vite.config.js),添加以下代码: ```javascript import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import ElementPlus from 'unplugin-element-plus/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: \[ vue(), ElementPlus({ useSource: true }), AutoImport({ resolvers: \[ElementPlusResolver()\] }), Components({ resolvers: \[ElementPlusResolver()\] }) \] }) ``` 这样,你就成功下载和引用了vite,并配置了按需引用的插件。 请注意,安装unplugin-element-plus之前,你需要先添加sass和sass-loader依赖。 希望这个回答对你有帮助! #### 引用[.reference_title] - *1* [vue3+TypeScript+vite+ElementPlus项目创建及后续优化](https://blog.csdn.net/qq_41854262/article/details/119668655)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [vite+vue3+typeScript+elementPlus(elementUI)搭建项目](https://blog.csdn.net/qq_36462217/article/details/129468816)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值