带薪学习,搭个通用的前端框架vue3+vite+ts

前端码头

共 4011字,需浏览 9分钟

 · 2021-12-20

读而思deepreader

vue3和vite发布有一段时间了,最近终于有点闲暇时间,赶个末班车体验一把。


01

基础配置

1.全局安装create-vite-app

npm install -g create-vite-app

2.创建项目

// 下面两个命令都可以
create
-vite-app vue3-common
cva vue3
-common

3.手动安装下依赖包

npm install

package.json 中可以看到依赖非常少,只有 vite 和 @vue/compiler-sfc ,没有 babel,因为 vite 是通过浏览器去解析模块


4. 安装typescript


在src下会有一个文件shims-vue.d.ts,是为了 typescript 做的适配定义文件,因为.vue 文件不是一个常规的文件类型,ts 是不能理解 vue 文件是干嘛的,加这一段是是告诉 ts,vue 文件是这种类型的。

declare module '*.vue' {
 import { defineComponent } from 'vue'
 const component: ReturnType
 export default component
}

ts的详细使用语法,可以看我的这篇文章

小白都能学会的ts入门指南


5.vite.config.ts 配置


根目录下创建 vite.config.ts ,添加配置:

用的是vite打包不是vue-cli 的webpack,api的使用会有些许不同,具体的使用可以查看vite中文官网

import { defineConfig } from 'vite'

import vue from '@vitejs/plugin-vue'

import { resolve } from 'path'

import viteCompression from 'vite-plugin-compression'

function pathResolve(dir: string) {

    return resolve(__dirname, '.', dir)

}

const proxyTarget = '' // 本地proxy

export default () => {

    return defineConfig({

        plugins: [

            vue(),

            viteCompression({

                algorithm: 'gzip',

                threshold: 10240,

            }),

        ],

        resolve: {

            alias: [

                {

                    find: /^\/@\//,

                    replacement: pathResolve('src') + '/',

                },

                {

                    find: /^\/_img\//,

                    replacement: pathResolve('src/assets/images') + '/',

                },

            ],

        },

        server: {

            port: 8080, // 启动端口

            open: true,

            proxy: {

                '/LOCAL_URL': {

                    target: proxyTarget,

                    changeOrigin: true,

                    rewrite: (p) => p.replace(/^\/LOCAL_URL/, ''),

                },

            },

        },

    })

}

6. 启动项目

npm run dev

比起之前用vue-cli创建的项目,本地启动速度确实有质的飞跃,亲测秒开


02

全家桶配置

1、安装 vue-router@4.0.12

// 查看版本
npm info vue-router versions
// 安装
npm install vue-router@4.0.12

在src下新建router文件

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


const routes: Array<RouteRecordRaw> = [

    {

        path: '/',

        redirect: '/home',

    },

    {

        path: '/home',

        component: () => import('/@/views/home/index.vue'),

    },

    {

        path: '/my',

        component: () => import('/@/views/my/index.vue'),

    },

]

// 开启历史模式

// vue2中使用 mode: history 实现 createWebHistory()

// vue2中使用 mode: hash 实现 createWebHashHistory()

const router = createRouter({

    history: createWebHashHistory(), // 替代之前的 mode,是必须的

    routes,

    scrollBehavior: () => ({ left: 0, top: 0 }),

})


router.beforeEach((to, from, next) => {

    console.log('beforeEach----')

    next()

})


router.afterEach(() => {

    window.scrollTo(0, 0)

})


export default router

在main.ts中注册

import router from '/@/router'
app.use(store)

2、安装vuex@4.0.2

npm install vuex@4.0.2

在src下新建store文件

import { createStore } from 'vuex'

export default createStore({
   state: {},
   mutations: {},
   actions: {},
   modules: {},
})

在main.ts中注册

import store from '/@/store'
app.use(store)

3、安装 element-plus

npm install element-plus

在main.ts中注册

import ElementPlus from 'element-plus'
import 'element-plus/lib/theme-chalk/index.css'
app.use(ElementPlus, { size: 'small' })

4、main.ts

import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/lib/theme-chalk/index.css'
import App from './App.vue'
import router from '/@/router'
import store from '/@/store'
;(async () => {
   const app = createApp(App)

   app.use(ElementPlus, { size: 'small' })
   app.use(store)
   app.use(router)

   app.mount('#app', true)
})()

其实项目的目录结构、使用方式,和我们熟悉的vue-cli大体相似


03

vue3


Vue 2 和 Vue 3 的区别

90% 的写法完全一致,除了以下几点

  • Vue 3 的 Template 支持多个根标签,Vue 2 不支持

  • 弃用全局API new Vue ,使用 createApp

  • Composition API

  • ......

接下来会出一个专题,用于介绍vue3的新特性,敬请期待。。。


通用框架的完整代码,都已经上传到了github,可以自行拉取。后面也会继续完善框架,并同步代码。

https://github.com/ddhujiang/vue3-common


github上Fork、star、follow一下吧



往期推荐
01

我的庚子鼠年

02

2020前端最新面经:我又又又又换工作了(答案篇)

03

前端开发学习过程中自己的独家好书推荐


觉得有用

记得点个在看哦~👇👇👇

浏览 25
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报