vite搭建vue项目-集成别名@、router、vuex、scss,按需加载Vant,就是这样简单(上)

简介: vite搭建vue项目-集成别名@、router、vuex、scss,按需加载Vant,就是这样简单

为什么要使用vite


当我们开始构建越来越大型的应用时,


需要处理的 JavaScript 代码量也呈指数级增长。


包含数千个模块的大型项目相当普遍。


这个时候我们会遇见性能瓶颈


使用 JavaScript 开发的工具通常需要很长时间(甚至是几分钟!)才能启动开发服务器,


文件修改后的效果也需要几秒钟才能在浏览器中反映出来。


如此循环往复,迟钝的反馈会极大地影响开发者的开发效率和幸福感。


Vite就是为了就解决这个问题


什么是vite


法语Vite(轻量,轻快)vite 是一个基于单文件组件的非打包开发服务器,


它做到了本地快速开发启动、实现按需编译、不再等待整个应用编译完成的功能作用。


vite的优势


1==>速度快: Vite使用esbuild 预构建依赖(Esbuild 使用 Go 编写),  


比 JavaScript 编写的预构建依赖快 10-100 倍


2==>按需提供源码: Vite只需要在浏览器请求源码时,进行转换并按需提供源码。


根据情景动态导入代码,即只在当前屏幕上实际使用时才会被处理。


使用vite搭建项目


1. yarn create vite [创建项目]


2. 输入项目名[vitevue3ts]


3. 选择使用的js框架vue


4. 使用使用ts 选择vue-ts


5. cd vitevue3ts


6. npm install


7. npm run dev


1425695-20220203111242302-1510940566.png


自动打开浏览器,将vite.config.ts文件配置如下


import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue()],
  // 自动打开浏览器
  server: {
    host: '0.0.0.0', //通过ip的形式访问
    port: 8080, //端口号
    open:true, //自动打开浏览器
    //配置代理,但是我步推荐前端去代理,
    //因为打包后便不会在有代理,上线后是个坑
    proxy: {
      '/api': {
          target: 'http://API网关所在域名',
          changeOrigin: true,
          rewrite: (path) => path.replace(/^\/api/, '')
      },
    }
  }
})


1425695-20220203111315202-1019991998.png

vite配置别名,类似webpack的@


第一步: npm install @types/node --save-dev


cnpm install @types/node --save-dev [仅在开发环境中使用]


或者


yarn add package-name


yarn add package-name --dev [仅在开发环境中使用]


第2步:配置vite.config.ts文件 如下:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
// 配置别名需要的路径模块
import { resolve } from 'path'
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue()],
  // 配置别名
  resolve: {
    alias: [
      {
        find: '@', //指向的是src目录
        replacement:resolve(__dirname,'src')
      }
    ]
  },
})

第3步:验证别名是否成功

我们可以将  import HelloWorld from './components/HelloWorld.vue'
更改为  import HelloWorld from './components/HelloWorld.vue'


经过验证时ok的,别名设置成功


配置路由


第1步下载:


官网:https://next.router.vuejs.org/installation.html


npm install vue-router@4


第2步:配置


src下创建文件夹,router文件夹,创建index.ts文件;


代码如下:


import { createRouter, RouteRecordRaw, createWebHashHistory } from 'vue-router'
const routes : Array <RouteRecordRaw> = [
    {
        path: '/a',
        name: 'home',
        component:()=>import('../views/teacher/index.vue'),
    }
]
const router = createRouter({
    history: createWebHashHistory(), //哈希值模式
    routes
})
// 暴露出去
export default router


第3步:在main.ts中注册


import { createApp } from 'vue'
import App from './App.vue'
// 引入路由
import router from './router/index'
// 使用路由
createApp(App).use(router).mount('#app')


第4步:在app.vue中更改


<template>
  <!-- 放置路由容器 -->
 <router-view></router-view>
</template>
<script setup lang="ts">
</script>


1425695-20220203111428406-483650928.png

整合vuex


第1步:安装vuex


安装vuex: npm install vuex@next --save


或者      yarn add vuex@next --save


第2步:在src下创建store文件夹,store下创建index.ts


import { createStore } from 'vuex'
// 声明接口
export interface State {
  count: number
}
// 创建store实例
const store = createStore({
    state () {
      return {
        count: 0
      }
    },
    mutations: {
      // 更改count
      changeAddoneCount(state:State) {
          state.count++
      },
      changeTenCount(state:State,valueNum) {
          state.count=valueNum
      },
    }
})
export default store;


第3步:在main.ts中注册


import { createApp } from 'vue'
import App from './App.vue'
// 引入路由
import router from './router/index'
// 引入vuex
import store from "./store/index"
// 使用路由,vuex
createApp(App).use(router).use(store).mount('#app')


第4步:在页面上使用


<template>
  <div>
    <div>
      count的初始值{{ store.state.count }}
    </div> 
    <button @click="addHander">每次+1</button>
    <button @click="changeHander">直接更改为10</button>
  </div>
</template>
<script setup lang="ts">
import { useStore} from 'vuex'
let store=useStore()
// 更改vuex中的值,通过commit去触发vuex中mutations中对应的方法
const addHander=()=>{
  store.commit('changeAddoneCount')
}
const changeHander=()=>{
  store.commit('changeTenCount',10)
}
</script>


1425695-20220203111515604-1723612360.gif

ts中使用@号引入


看见这个标题,有的小伙伴会说,刚刚不是已经配置过别名了嘛?


在vite配置别名,类似webpack的@中。这种我们可以引入组件


但是去这样引入  import store from "@/store/index" 会报错


我们需要去解决这个问题


第1步: 在tsconfig.json配置如下


在12行下添加==>如下
"baseUrl": ".",
"paths": {
  "@/*":["src/*"]
}


第2步: 用main.ts来验证是否正确


之前是
import router from './router/index'
import store from "./store/index"
更改为
import router from '@/router/index'
import store from "@/store/index"
这样没有报错了,说明我们的配置成功了


npm run build报错vue-tsc --noEmit && vite buils


在tsconfig.json配置如下
"exclude": ["node_modules"]  //忽略node_modules下的文件
"skipLibCheck": true         //忽略所有声明的ts文件


1425695-20220203111536736-1723451769.png

相关文章
|
9月前
|
移动开发 JavaScript API
Vue Router 核心原理
Vue Router 是 Vue.js 的官方路由管理器,用于实现单页面应用(SPA)的路由功能。其核心原理包括路由配置、监听浏览器事件和组件渲染等。通过定义路径与组件的映射关系,Vue Router 将用户访问的路径与对应的组件关联,支持哈希和历史模式监听 URL 变化,确保页面导航时正确渲染组件。
|
9月前
|
JavaScript 前端开发 数据安全/隐私保护
Vue Router 简介
Vue Router 是 Vue.js 官方的路由管理库,用于构建单页面应用(SPA)。它将不同页面映射到对应组件,支持嵌套路由、路由参数和导航守卫等功能,简化复杂前端应用的开发。主要特性包括路由映射、嵌套路由、路由参数、导航守卫和路由懒加载,提升性能和开发效率。安装命令:`npm install vue-router`。
|
12月前
|
前端开发 JavaScript 容器
在 vite+vue 中使用@originjs/vite-plugin-federation 模块联邦
【10月更文挑战第25天】模块联邦是一种强大的技术,它允许将不同的微前端模块组合在一起,形成一个统一的应用。在 vite+vue 项目中,使用@originjs/vite-plugin-federation 模块联邦可以实现高效的模块共享和组合。通过本文的介绍,相信你已经了解了如何在 vite+vue 项目中使用@originjs/vite-plugin-federation 模块联邦,包括安装、配置和使用等方面。在实际开发中,你可以根据自己的需求和项目的特点,灵活地使用模块联邦,提高项目的可维护性和扩展性。
|
缓存 JavaScript 搜索推荐
Vue Router 导航钩子的使用场景
【10月更文挑战第13天】
200 55
|
12月前
|
存储 JavaScript
Vue 状态管理工具vuex
Vue 状态管理工具vuex
|
资源调度 JavaScript 前端开发
vue3第一章基础:创建Vue3.0工程,包括使用vue-cli 创建、使用 vite 创建
vue3第一章基础:创建Vue3.0工程,包括使用vue-cli 创建、使用 vite 创建
240 5
|
资源调度 JavaScript 前端开发
路由管理:Vue Router的使用和配置技巧
【10月更文挑战第21天】路由管理:Vue Router的使用和配置技巧
272 3
|
JavaScript 搜索推荐 数据处理
Vue Router 导航钩子
【10月更文挑战第17天】需要注意的是,过度使用导航钩子可能会导致代码复杂度增加,因此需要合理规划和使用。此外,不同的钩子在不同的场景下具有不同的作用,需要深入理解其特点和用法,才能更好地发挥它们的价值。可以在实际项目中结合具体需求,充分利用这些导航钩子来打造更加智能、灵活的路由导航机制。
152 1
|
存储 JavaScript 前端开发
深入理解 Vuex:Vue.js 状态管理的利器
【10月更文挑战第11天】 深入理解 Vuex:Vue.js 状态管理的利器
200 2
|
JavaScript
《进阶篇第9章》学习vuex知识点后练习:求和案例_纯vue版代码
《进阶篇第9章》学习vuex知识点后练习:求和案例_纯vue版代码
72 1

热门文章

最新文章