You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
import{createRouter,createWebHistory,RouteRecordRaw}from"vue-router";importHelloWorldfrom"../components/HelloWorld.vue";constroutes: Array<RouteRecordRaw> = [
{path: "/",name: "HelloWorld",component: HelloWorld,},{path: "/about",name: "About",// route level code-splitting// this generates a separate chunk (about.[hash].js) for this route// which is lazy-loaded when the route is visited.component: ()=>import(/* webpackChunkName: "About" */"../components/About.vue")}];constrouter=createRouter({history: createWebHistory(process.env.BASE_URL),
routes,});exportdefaultrouter;
在 npm run dev 打包时不报错,但是在 npm run build 时却报错了,build 的时候会把 node_modules 里面的文件也编译,所以挺多 element-plus 的类型文件报错了。
把 tsconfig.json 里面的 include 和 exclude 修改一下就不会了,配置如下
{"compilerOptions": {"target": "esnext","module": "esnext","moduleResolution": "node","strict": true,"jsx": "preserve","sourceMap": true,// 忽略 this 的类型检查, Raise error on this expressions with an implied any type."noImplicitThis": false,"resolveJsonModule": true,"esModuleInterop": true,"lib": ["esnext","dom"],"types": ["vite/client"]},"include": ["/src/**/*.ts","/src/**/*.d.ts","/src/**/*.tsx","/src/**/*.vue"],// ts 排除的文件"exclude": ["node_modules"]}
五一期间,花了 3 天时间,边学 Vue3 和 Vite2,边重构自己的项目,终于都用 Vue3 + TypeScript + Vite2 + Vuex4 + Vue-Router4 + element-plus 重构完啦!
终于完成一项心心念念的 2021 年度目标了 ✌️
项目地址:
效果
效果图:
完整效果请看:
功能
已经完成功能
⬆️ 返回顶部
前端主要技术
所有技术都是当前最新的。
1. 初化化项目
用 vite-app 创建项目
然后按照提示操作即可!
进入项目,安装依赖
运行项目
打开浏览器 http://localhost:3000 查看
2. 引入 TypeScript
在创建项目的时候可以 TypeScript 的,如果你选择了 TypeScript ,可以忽略第 2 个步骤。
加入 ts 依赖
在 项目根目录下创建 TypeScript 的配置文件 tsconfig.json
在 src 目录下新加 shim.d.ts 文件
把 main.js 修改成 main.ts
在根目录,打开 Index.html
3. 引入 eslint
安装 eslint prettier 依赖
@typescript-eslint/parser @typescr ipt-eslint/eslint-plugin
为 eslint 对 typescript 支持。在根目录下建立 eslint 配置文件: .eslintrc.js
建立 prettier.config.js
4. vue-router、vuex
4.1 vuex
在根目录下创建 store/index.ts
main.ts 修改
components/HelloWord.vue 修改
4.2 vue-router
在 src 目录下建立 router/index.ts,内容如下:
再新建一个 components/About.vue 文件,内容如下:
再修改 main.ts
再访问 http://localhost:3000/
和 http://localhost:3000/about 即可
5. 加入 Element Plus
5.1 安装 element-plus
全局安装
5.2 引入 Element Plus
你可以引入整个 Element Plus,或是根据需要仅引入部分组件。我们先介绍如何引入完整的 Element。
完整引入
在 main.js 中写入以下内容:
以上代码便完成了 Element Plus 的引入。需要注意的是,样式文件需要单独引入。
按需引入
借助 babel-plugin-component,我们可以只引入需要的组件,以达到减小项目体积的目的。
首先,安装 babel-plugin-component:
然后,将 .babelrc 修改为:
接下来,如果你只希望引入部分组件,比如 Button 和 Select,那么需要在 main.js 中写入以下内容:
更详细的安装方法请看 快速上手。
5.3 全局配置
在引入 Element Plus 时,可以传入一个全局配置对象。
该对象目前支持
size
与zIndex
字段。size
用于改变组件的默认尺寸,zIndex
设置弹框的初始 z-index(默认值:2000)。按照引入 Element Plus 的方式,具体操作如下:完整引入 Element:
按需引入 Element:
按照以上设置,项目中所有拥有
size
属性的组件的默认尺寸均为 'small',弹框的初始 z-index 为 3000。5.4 配置 vite.config.ts
其中 proxy 和 alias 是和 vue-cli 区别比较大的地方。
踩到坑
在
npm run dev
打包时不报错,但是在npm run build
时却报错了,build 的时候会把node_modules
里面的文件也编译,所以挺多 element-plus 的类型文件报错了。把
tsconfig.json
里面的include
和exclude
修改一下就不会了,配置如下Vue3 + vite2 打包出来的文件和原来 vue2 版的差别也挺大的,由原来 2.5M 直接变成了 1.8M ,amazing!
最后
项目代码大多都是 2 年前的,还有很多可以优化的地方,这次重构的过程没对原来的样式和代码做什么改动,没那么多时间,加上我懒 😂
这次就升级了主要框架与相应的 ui 库,过了一遍 Vue3 中的 API,发现很多 Vue3 中新的 API 都用不上,主要是要熟练一下 Vue3 和 Vite2 项目搭建,这假期也算有所收获。
具体项目源码请看:
至此,一个基于 Vue3 全家桶 + Vite2 + TypeScript + Element Plus 的开发环境已经搭建完毕,现在就可以编写代码了,各个组件的使用方法请参阅它们各自的文档。
不得不说 Vue3 + Element Plus + Vite + TypeScript 是真的香!
参考文章:vue3 + vite + typescript + eslint + jest 项目配置实践
The text was updated successfully, but these errors were encountered: