vite2+vue3+Ts+vuex+router+element-plus项目初始化教程

1、首先检查脚手架是否大于4.5以上,如果低于4.5,请升级版本

vue --version //检查版本,低于4.5执行以下命令

npm install -g @vue/cli  //安装脚手架命令

npm update -g @vue/cli  //升级脚手架命令,如果之前装过,执行这个命令即可

2、确保node版本大于12.0.0,低于当前版本的自己升级

node -v//检查node版本
http://nodejs.cn/    //升级地址

3、开始创建项目,命令行中输入以下命令

npm init vite@latest

4、输入自己的项目名称,这里我选择的vue-vite

 5、然后根据自己的情况选择对应的模块,这里我选择vue+ts(新版的入口为先选vue之后再选vue+ts)

6、进入当前项目,安装依赖

7、安装完成后输入npm run dev,出现以下界面,则项目创建成功

8、接下来安装sass、vuex、router、element-plus

npm install vue-router@4 -S//安装router
npm install vuex@next -S//安装vuex
npm install -D sass//安装sass
npm install element-plus -S//安装element-plus

9、安装完成后重新启动项目,此时我们会看到这样一句话(this will be run only when your dependencies or config have changed),意思就是"只有当依赖项或配置发生更改时,才会运行此操作",所以vite之所以速度快,是因为vite将项目分成了两部分,一部分是我们项目的依赖,就是package.json文件中的一些依赖库,这是不经常变的,所以第一次启动时(或更改了依赖时),vite就会将依赖文件打包到node_modules文件下.vite的文件夹中,出现了下图的提示,后续如果我们不更改依赖的话,vite就不会重新再次打包,大大加快了启动速度及打包速度,第二部分是我们的源代码,就是src文件夹下的文件,所以当我们在开发时期,不改变依赖的情况下,重新打包的部分就只有我们的源代码,依赖文件并没有进行重复打包

10、尝试关掉当前项目, 重新进行启动,发现依赖文件并没有再次打包,所以速度快就是在这里

11、接下来就是配置element-plus,我们使用按需引入,注意我们使用的是vite,不是webpack

npm install vite-plugin-style-import -D
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: 'element-plus',
        esModule: true,
        ensureStyleFile: true,
        resolveStyle: (name) => {
          name = name.slice(3)
          return `element-plus/packages/theme-chalk/src/${name}.scss`;
        },
        resolveComponent: (name) => {
          return `element-plus/lib/${name}`;
        },
      }]
    })
  ]
})

12、在main.ts下,我们按需引入对应的组件,此项功能我们单独抽出到某个文件中进行操作,更多详细操作,请看官方https://element-plus.gitee.io/#/zh-CN/component/quickstart

// main.ts
import { createApp } from 'vue';
import App from './App.vue';
import ElementPlus from './utils/element-plus';

const app = createApp(App);
app.use(ElementPlus);
app.mount('#app');
// element-plus.ts
import { ElButton, ElSelect } from 'element-plus';
// 如果要使用.scss样式文件,则需要引入base.scss文件
import 'element-plus/packages/theme-chalk/src/base.scss';
import { App } from 'vue';

const allComponents = [ElButton, ElSelect];

export default {
  install(app: App<Element>){
    allComponents.forEach(com => {
      app.use(com);
    })
  }
}

13、src文件夹下,创建router文件夹,并在此文件夹下新建index.ts文件,配置router功能环境,并在main.ts中引入

// src/router/index.ts文件内容
import {createRouter,createMemoryHistory,Router} from 'vue-router';

const routers = [{
    name:'index',
    path:'/',
    component: () => import('@/views/index.vue')
}];

const router:Router = createRouter({
    history:createMemoryHistory(),
    routes:routers
});

export default router;
import { createApp } from 'vue'
import ElementPlus from './utils/element-plus'
import router from './router/index'//次步新增代码
import App from './App.vue'

const app = createApp(App)
app.use(ElementPlus)
app.use(router)//次步新增代码
app.mount('#app')

14、vite设置别名,注意此处因为引入了path包,项目又使用ts功能,所以我们需要安装node的ts解析文件(npm i -D @types/node),可以根据情况自己设置更多别名

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

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    styleImport({
      libs: [{
        libraryName: 'element-plus',
        esModule: true,
        ensureStyleFile: true,
        resolveStyle: (name) => {
          name = name.slice(3)
          return `element-plus/packages/theme-chalk/src/${name}.scss`;
        },
        resolveComponent: (name) => {
          return `element-plus/lib/${name}`;
        },
      }]
    })
  ],
  resolve: {
    alias: {//设置别名
      '@': path.resolve(__dirname, 'src')
    }
  },
  server: {//设置启动端口
    port: 8090
  }
})

修改tsconfig.json,注意每加一个别名,这个文件下的也要对应增加

"baseUrl": ".",
"paths": {
     "@/*": ["src/*"]
}

15、src文件夹下新建store文件夹,并在此文件夹下新建index.ts文件,配置vuex功能环境,并在main.ts中引入,如需查看vue3中对vuex的分包管理,可查看https://blog.csdn.net/Ag_wenbi/article/details/109989024?spm=1001.2014.3001.5501

// src/store/index.ts文件内容
import {createStore} from 'vuex'

export default createStore({
    state:{
        count:0
    }
})
import { createApp } from 'vue'
import ElementPlus from './utils/element-plus'
import router from './router/index'
import store from './store/index'//次步新增代码
import App from './App.vue'

const app = createApp(App)
app.use(ElementPlus)
app.use(router)
app.use(store)//次步新增代码
app.mount('#app')

16、sass功能,只需要在style标签中配置lang="scss"即可,这里不再做演示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Agwenbi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值