VUE3+VITE项目搭建

248 阅读3分钟

一、创建应用

注意:npm的版本号不同,使用的命令行不同

# npm 6.x
npm init vite@latest my-vue-app --template vue

# npm 7+, 需要添加一个额外的“双破折号”:
npm init vite@latest my-vue-app -- --template vue

二、启动应用

npm run dev 

三、Vue Router安装

npm install vue-router@4

更改main.js

import { createApp } from 'vue'
import App from './App.vue'
import router from './router' // 引入vue-router

const app = createApp(App// createApp(App)赋值给app常量,便于后续使用
app.use(router).mount('#app')

src/router/index.js

import { createRouter, createWebHashHistory } from 'vue-router'

// 下面这样写,会报错!!
// const home = () => import('../pages/groupbuying/home')

const router createRouter({
  historycreateWebHashHistory(),
  routes: [
    {
      path'/',
      name'home',
      component: () => import('../pages/groupbuying/home.vue')
    }
  ]
})

export default router

四、Vuex安装

npm install vuex@next --save

src/store/index.js

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

const app = createApp(App)
const state = {}
const mutations = {}
const actions = {}

const store = createStore({
  state,
  mutations,
  actions
})

export default app.use(store)

main.js 

import store from './store/index'

五、Scss安装

npm install --save-dev sass-loader
npm install --save-dev node-sass
npm install --save-dev sass

修改vite.config.js

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig ({
  plugins: [vue()],
  css: {
    preprocessorOptions: {
      scss: {
        additionalData`@import "/public/css/common.scss";` // scss文件路径
      }
    }
  }
})

页面中使用与以前没有区别

<style lang="scss"></style>   // 以App.vue页面为例

六、vant安装

npm i vant@next -S // 安装
npm i vite-plugin-style-import -D // 安装按需引入插件

修改vite.config.js

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import styleImport from 'vite-plugin-style-import';

// https://vitejs.dev/config/
export default defineConfig ({
  plugins: [
    vue(),
    styleImport({
      libs: [
        {
          libraryName'vant',
          esModuletrue,
          resolveStyle(name) => `vant/es/${name}/style`,
        },
      ],
    }),
  ]
})

main.js引入

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import { SwipeSwipeItem } from 'vant'

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

七、环境变量与模式

环境目录:

用于加载 .env 文件的目录。

在vite.config.js文件的envDir参数配置。

默认值:'root'

如下图:

.env.development文件需要手动创建,当创建在默认路径下时,envDir属性的值不需要显示声明,下面的截图只是为了更清晰的展示显式声明。

环境配置文件不放在根目录下时,如下配置:

环境变量:

值根据不同的环境(开发环境/测试环境/生产环境等)不同。

Vite 在一个特殊的 import.meta.env 对象上暴露环境变量。

Vite提供的在所有情况下都可以使用的内建变量如下:

  • import.meta.env.MODE: {string} 应用运行的模式
  • import.meta.env.BASE_URL: {string} 部署应用时的基本 URL。他由base 配置项决定。
  • import.meta.env.PROD: {boolean} 应用是否运行在生产环境。
  • import.meta.env.DEV: {boolean} 应用是否运行在开发环境 (永远与 import.meta.env.PROD相反)。

.env文件

自定义的环境变量在.env文件里配置。为了防止意外地将一些环境变量泄漏到客户端,只有以 VITE_ 为前缀的变量才会暴露给经过 vite 处理的代码。

示例如下:

 

 

  

控制台输出一下环境配置相关信息(以开发环境为例):

模式MODE:

mtest相关在这里,后续补充!

官方文档:

cn.vitejs.dev/guide/env-a…

cn.vitejs.dev/config/#env…

八、打包上线

打包页面空白问题

next.router.vuejs.org/zh/api/#cre…

blog.csdn.net/qq_17497931…

九、闭坑指南

  1. 关于 proxy 代理及跨域

本地用 node 起了个 web 服务器,http://localhost:1129

vite 开发服务器运行在 http://localhost:3000 

// vite.config.js

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
const path = require('path')

// https://vitejs.dev/config/
export default defineConfig(({ command, mode }) => {

  return {
    plugins: [vue()],
    resolve: {
      // 别名
      alias: {
        '@': path.resolve(__dirname, '/src'),
      },
      // 导入时想要省略的扩展名列表。注意,不 建议忽略自定义导入类型的扩展名(例如:.vue),因为它会影响 IDE 和类型支持。
      extensions: ['.mjs''.js''.ts''.jsx''.tsx''.json''.vue']
    },
    server: {
      port'3000'// 这里修改开发服务器端口,默认是 3000
      proxy: {
      	// 配置参数的格式有好几种,祥见官网
        '/api': {
          target'http://localhost:1129',
        }
      },
    }
  }
})
// login.vue

methods: {
	doLogin () {
  	axios.get('/api/login').then().catch()
  }
}

浏览器请求的请求网址依旧显示的 3000 端口,但其实实际是把请求转发到 1129 端口下了。

因为我的 node 服务器的代码出问题了,导致一开始一直报 404,所以一直以为是代理没生效。

  1. 关于页面不更新

    1. 修改 vite.config.js 文件,开发服务器会自动重启
    2. 页面代码更新后,浏览器页面没更新,是路由配置的大小写和页面实际名称没匹配!!一定要检查这个!!
  1. 问卷网娃娃亲爱的们从前