【Vue五分钟】Vue项目的后期打包、上传、构建文档、组件测试操作

简介: 组件库默认是英文,如果需要其它语言就可以利用 LocaleProvider 组件进行配置(内置了大概有43 种语言,可随意切换)

🥇 如何做到国际化

  组件库默认是英文,如果需要其它语言就可以利用 LocaleProvider 组件进行配置(内置了大概有43 种语言,可随意切换)

2345_image_file_copy_359.jpg

所以我们前往 main.js 引入这个组件注册,然后前往 App.vue 使用这个组件,动态绑定一个变量 locale,导入一个中文语 言包和英文语言包,在 data 里面指定 locale 的值,如此就可 以修改。

  不过要提供一个可以切换的配置,我们可以把语言配置项挂 载到路由上,监听路由上的 locale,绑定一个函数,根据配 置项决定 locale 的值,大部分组件会修改,不过日历日期组 件组件是用别人的库 moment,需要对这个库做语言包的切 换。引入该库,默认是加载全部的语言包(之后打包讲按需 加载),我们依然路由上的配置项返回对应的语言包。

  回到 header 做一个改变路由配置项切换语言的功能,可以利用 Dropdown 下拉菜单组件,记得注册,需要两个 item,然 后图标改为 global,item 需要给对应的 key:zhCN 和 enUS, 给菜单加一个点击事件 localeChange,接收一个 key,通过这 个 key 来改变 router,直接 push 到挂载了对应 key 值配置项 的路由上去。当然菜单还需要一个 selectedKeys,指向我们 路由配置项上的 locale,如果没有就 zhCN。给点样式。

  在分析页添加日历(体现语言效果),main.js 导入 DatePicker, 然后回到分析页使用一下就行。 当然,如果是自己开发的组件需要国际化的话就可以使用 Vue I18n,这个是专门的国际化插件,先安装,然后在 main.js 中引入,新建一个 locale 文件夹存放语言包,下面建一个 zhCN.js 中文的,导出一个“app.dsahboard.analysis.timeLabel”:” 时间”,尽量写长一些,不然后面命名比较困难,同样的再建 一个 enUS.js,把值改成 time,回到 main.js 导入这两个语言 包。use 注册 18n 先,实例化 i18n,默认语言通过 url 取到(通 过一个 query-string 这个库的 parse 来解析这个 url,将字符 串解析成对象),取其 locale,没有就默认中文,message 对 象配置语言包。

2345_image_file_copy_360.jpg

2345_image_file_copy_361.jpg

💖 如何高效的构建打包发布

  其实我们已经进行了一定打包优化方式,如 babel 中使用组 件库的按需加载、路由中使用 webpackChunkName 对路由懒 加载和拆包、lodash 引用的时候都是具体到方法所在文件(第 一行)而不是整个拿进来(第二行)。

import debounce from "lodash/debounce";
import {debounce} from 'lodash'

但是这样子还远远不够,可以利用 cli 提供的命令来分析哪些 还需要优化(npm run build -- --report)就可以生成一个打包 报告(report.html),打开可以看得出来主要是 icon 下面的包 和 moment 里面的语言包,echart 也引用了很多的图标。查 看 github 置顶的 issue 可以找到解决方法,主要是组件按需 加载(已经做了)、图标按需加载、moment 语言包按需加载。 先看图标按需加载,可以看到是给 webpack 配置别名让组件 库引用图标的时候都走到本地的图标配置文件中(弊端是组 件库中使用的图标也需要单独配置,但是并不知道使用了什 么图标,目前也只能用这种)。我们建一个 icon.js,往里面放 需要的图标,再前往 vue.config.js 对别名进行配置。如此就 完成了图标的按需加载,只不过不管是自己还是组件库内部 使用的图标都需要在 icon.js 中配置。

//src/icons.js
//export what you need
export {
  default as SmileOutline
}
  from '@ant-design/icons/lib/outline/SmlieOutline';
export {
  default as MeOutline
}
  from '@ant-design/icons/lib/outline/MeOutline';

接下来是 moment,原理就是把 moment 引用的包都忽略掉, 那么我们打包的时候 moment 的语言包就不会被打包进来了, 当然使用的话就需要单独引入 moment 对应的语言包了.

2345_image_file_copy_362.jpg

接下来还有 echarts ,可以看到是整个都引入而我们只是使用了柱状图,引入核心代码/ 引擎、引入柱状图、引入 title 。那 么这样子打包的时候就只会打包柱状图和配置 title 的代码。

import echarts from "echarts/lib/echarts";
import "echarts/lib/chart/bar";
import "echarts/lib/component/title";

2345_image_file_copy_364.jpg

👏 如何构建可交互的组件文档

 可以看到组件库文档除了 demo 还有对应的源码提供,有三 种方式实现这个代码展示。 第一种方案就是直接复制一份,一份作为字符串展示出来, 一份作组件,这是最不靠谱。 第二种是成本比较低比较灵活,就是让组件加载两次,第一 次让 vue-loader 处理,第二次选择其它 loader 如 raw-loader 把文件直接导出为字符串。不过这里需要注意,我们在 webpack 对.vue 文件都走了 vue-loader 的处理,如果想对同 一文件类型走不同处理,可以直接在文件中导入的时候直接 指定 loader 不让其去走 webpack 的配置。

2345_image_file_copy_366.jpg

现 在要 做 的就 是 把 chart 的 代码 在 下面 显 示, 先安 装 raw-loader 就可以直接使用了,然后我们回到 analysis 导入 chart 组件的代码字符串 charCode,然后直接{{}}就可以展示 了 , 只 不 过 需 要 高 亮 所 以 安 装 vue-highlight ( 封 装 了 highlight.js 这个库让我们可以用指令的方式去使用),这个库 需要在 main.js 中引入注册,这样子就能显示只不过没有高亮, 所以我们去 highlight.js 找喜欢的样式库在 mian.js 引入。 第三种方式是自己写 loader 然后对 markdown 进行处理,成本比较高。

import VueHighlightJS from 'vue-heghlightjs';
import 'highlight.js/styles/github.css';
Vue.use(VuehighlightJS);
import chartCode from "vue-heghlightjs"
export default {
   data() {
 return {
  chartOption:{},
chartCode
}
}

💬 如何做好组件的单元测试

  对 pro 的一些重要函数做一下单元测试,首先需要配置一下 jest.config.js,修改 testMarch,但凡.spec 结尾的都走单元测 试,再添加一个测试报告,这个可以在文档 Vue Test Utils 找 到测试覆盖率(第一个是是否开启,这个需要看环境而不是 每次都去生成,看 process.env.COVERGE 是否为 true 第二个 是把哪些文件列入进来做测试分析的数据,我们可以加上 src, 只要 src 下面的,并且排除掉 node 模块),到此完成测试配置。

  接下来修改 eslint 的配置,环境需要打开 node 和 jest(不然 关键字会标红)。

  现在测试的话主要是针对 auth.js,可以运行 npm run test: unit -- --watch 让其每次更改测试用例保存都自动运行。改动 一下,定义一个 currentAuth 变量,默认为[‘admin’],并且导 出这个变量,使用的话也是用这个变量来动态改变 auth。 新建一个 auth.spec.js,导入 check、currentAuth,定义一个 测试集 describe,开始写单测。如果可校验的权限值为空时 (清空拿到的权限值),希望检测输入的是 user 的时候是为 false,admin 也是 false(因为允许通过的数组被清空了,写 啥都没有用)。再测试一种校验组有 user 的情况,先清空校 验组再给校验组一个 user 测试,再测试一种 admin 加 user。 到此就完成了权限的单元测试,同时也完成了 pro 的骨架,还有样式、完全响应式、组件等可以一一优化。

2345_image_file_copy_367.jpg

2345_image_file_copy_368.jpg

2345_image_file_copy_369.jpg


相关文章
|
2月前
|
人工智能 测试技术 项目管理
测试不再碎片化:AI智能体平台「项目资料套件」功能上线!
在实际项目中,需求文档分散、整理费时、测试遗漏等问题常困扰测试工作。霍格沃兹推出AI智能体测试平台全新功能——项目资料套件,可将多个关联文档打包管理,并一键生成测试用例,提升测试完整性与效率。支持套件创建、文档关联、编辑删除及用例生成,适用于复杂项目、版本迭代等场景,助力实现智能化测试协作,让测试更高效、更专业。
|
2月前
|
测试技术 UED 开发者
性能测试报告-用于项目的性能验证、性能调优、发现性能缺陷等应用场景
性能测试报告用于评估系统性能、稳定性和安全性,涵盖测试环境、方法、指标分析及缺陷优化建议,是保障软件质量与用户体验的关键文档。
|
4月前
|
Java 测试技术 Spring
简单学Spring Boot | 博客项目的测试
本内容介绍了基于Spring Boot的博客项目测试实践,重点在于通过测试驱动开发(TDD)优化服务层代码,提升代码质量和功能可靠性。案例详细展示了如何为PostService类编写测试用例、运行测试并根据反馈优化功能代码,包括两次优化过程。通过TDD流程,确保每项功能经过严格验证,增强代码可维护性与系统稳定性。
204 0
|
4月前
|
人工智能 数据可视化 测试技术
UAT测试排程工具深度解析:让验收测试不再失控,项目稳稳上线
在系统交付节奏加快的背景下,“测试节奏混乱”已成为项目延期的主因之一。UAT测试排程工具应运而生,帮助团队结构化拆解任务、清晰分配责任、实时掌控进度,打通需求、测试、开发三方协作闭环,提升测试效率与质量。本文还盘点了2025年热门UAT工具,助力团队选型落地,告别靠表格和群聊推进测试的低效方式,实现有节奏、有章法的测试管理。
|
10月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
5月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
905 23
|
7月前
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
960 24
|
7月前
|
SQL 测试技术
除了postman还有什么接口测试工具
最好还是使用国内的接口测试软件,其实国内替换postman的软件有很多,这里我推荐使用yunedit-post这款接口测试工具来代替postman,因为它除了接口测试功能外,在动态参数的支持、后置处理执行sql语句等支持方面做得比较好。而且还有接口分享功能,可以生成接口文档给团队在线浏览。
296 2
|
9月前
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
568 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
9月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
459 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡