赞
踩
共 3 种方法,推荐使用第3种方法
vue/cli
npm install @vue/cli –g
vue/cli
版本号vue -V
vue
项目,还可以创建其他类型的项目,比如 react
项目npm init vite@latest
Vue
):TypeScript
语法:import {
defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue()],
server: {
open: true,
},
});
npm init vite@latest project-engineer --template vue-ts
vite
专门为 vue
做的配置,这种方式创建的项目在创建时会提示
是否需要安装各种插件配置npm create vue@latest
Project name: … // 项目名称,默认值:vue-project,可输入想要的项目名称,此处不建议中文。
Add TypeScript? … No / Yes // 是否加入TypeScript组件?
Add JSX Support? … No / Yes // 是否加入JSX支持?
Add Vue Router for Single Page Application development? … No / Yes // 是否为单页应用程序开发添加Vue Router路由管理组件?
Add Pinia for state management? … No / Yes // 是否添加Pinia组件来进行状态管理?
Add Vitest for Unit Testing? … No / Yes // 是否添加Vitest来进行单元测试?
Add an End-to-End Testing Solution? » No // 是否添加一个端到端测试解决方案?
Add ESLint for code quality? … No / Yes // 是否添加ESLint来进行代码质量检查?
Add Prettier for code formatting? … No / Yes // 是否添加Prettier代码格式化?
import { ref,reactive... } from 'vue'
大量引入的问题unplugin-auto-import
unplugin-auto-import
这个插件是为了解决在开发中的导入问题,比如经常不清楚相对路径的问题,这个插件就是解决这个问题。这个插件会在根目录生成一个 auto-import.d.ts
,这个文件会将所有的插件导入到 global
中,这样在使用的时候直接就可以使用了。npm install -D unplugin-auto-import
vite.config.ts
import AutoImport from 'unplugin-auto-import/vite'
plugins: [
vue(),
// 自动导入
AutoImport({
imports: ['vue', 'vue-router', 'pinia'], // 自动导入的依赖库数组
dts: './auto-imports.d.ts' // 自动导入类型定义文件路径
})
],
注意:上面配置完毕dts后可能并不会自动生成auto-import.d.ts文件,可以重新运行一下项目,或者关闭编辑器重新打开运行即可。
+
ref
找不到问题方法tsconfig.app.json
文件中添加 auto-imports.d.ts
文件的{ "extends": "@vue/tsconfig/tsconfig.dom.json", "include": ["env.d.ts", "src/**/*", "src/**/*.vue", "auto-imports.d.ts"], "exclude": ["src/**/__tests__/*"], "compilerOptions": { "composite": true, "noEmit": true, "baseUrl": ".", "paths": { "@/*": ["./src/*"] } } }
.env.xxx
文件,文件内容如下:.env.dev
文件# 开发环境 VITE_ENV = 'dev' # 端口号 VITE_PORT = 8889 # 是否浏览器自动启动 VITE_OPEN = true # 公用接口地址 VITE_BASE_API = '/api' # 是否开启 WebSocket VITE_WS = false # 后端服务地址 VITE_APP_SERVICE_API = 'http://localhost:8888'
.env.prod
文件# 线上环境 VITE_ENV = 'prod' # 端口号 VITE_PORT = 8889 # 是否浏览器自动启动 VITE_OPEN = true # 公用接口地址 VITE_BASE_API = '/api' # 是否开启 WebSocket VITE_WS = false # 后端服务地址 VITE_APP_SERVICE_API = 'http://localhost:8888'
package.json
文件内容:"scripts": {
"serve": "vite --mode dev", // 默认开发环境
"serve:prod": "vite --mode prod", // 生产环境
"build": "run-p type-check \"build-only {@}\" --",
"build:dev": "vite build --mode dev",
"build:prod": "vite build --mode prod",
}
vite.config.js
文件,内容如下:import { fileURLToPath, URL } from 'node:url' import vue from '@vitejs/plugin-vue' import { defineConfig, loadEnv, ConfigEnv } from 'vite' import AutoImport from 'unplugin-auto-import/vite' const viteConfig = defineConfig((mode: ConfigEnv) => { // 获取 .env 环境配置文件 const env = loadEnv(mode.mode, process.cwd()) return { plugins: [vue()], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) } }, server: { // host: 'localhost', // 只有本地能访问 host: '0.0.0.0', // 局域网所有人能访问 port: env.VITE_PORT as unknown as number, // 服务器端口号 open: env.VITE_OPEN === 'true', // 浏览器自动启动 hmr: true, // 启动热更新 proxy: { // 处理跨域问题 [env.VITE_BASE_API]: { target: env.VITE_APP_SERVICE_API, // 目标服务器地址 ws: env.VITE_WS === 'true', // 是否启用 WebSocket changeOrigin: true, // 是否修改请求头中的 Origin 字段 rewrite: (path) => path.replace('^' + env.VITE_BASE_API, '') } } } } }) export default viteConfig
scss
方法sass
npm install sass -D
vite.config.js
export default defineConfig({ plugins: [vue()], resolve: { alias: { "@": fileURLToPath(new URL("./src", import.meta.url)), }, }, server: { open: true, }, css: { preprocessorOptions: { scss: { additionalData: '@import "@/assets/styles/main.scss";', // 全局通用 scss 样式文件,路径必须对应 }, }, }, });
main.scss
文件中设置全局样式变量$blue: #c00000;
<style scoped lang="scss">
h2 {
p {
color: $blue;
}
}
</style>
vue-router
路由Element Plus
npm install @element-plus/icons-vue
npm install element-plus -S
main.ts
文件中注册,代码如下// 集成 Element-plus
import ElementPlus from 'element-plus'
import locale from 'element-plus/es/locale/lang/zh-cn'
import 'element-plus/dist/index.css'
// 注册 Element-plus 所有图标
import * as ElementPlusIcons from '@element-plus/icons-vue'
Object.keys(ElementPlusIcons).forEach((iconName) => {
app.component(iconName, ElementPlusIcons[iconName as keyof typeof ElementPlusIcons])
})
app.use(ElementPlus, {
size: 'small', locale: locale })
pinia
axios
axios
npm install axios
vite.config.js
文件中配置基础地址和跨域问题,文件内容如下:import {
fileURLToPath, URL } from 'node:url'
import vue from '@vitejs/plugin-vue'
import {
defineConfig, loadEnv, ConfigEnv } from 'vite'
import AutoImport
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。