专题一:搭建测试驱动环境 (TypeScript + Vitest)

1. 项目初始化

我们不使用复杂的 Monorepo(pnpm workspace)配置,为了降低学习门槛,我们采用单仓库多模块的结构,重点放在逻辑实现上。

目标结构预览:

Plaintext

mini-vue/ ├── src/ │ ├── reactivity/ <-- 第一阶段的主战场 │ │ ├── index.ts │ │ └── tests/ <-- 测试文件都在这里 │ └── shared/ <-- 公共工具库 ├── package.json ├── tsconfig.json └── vitest.config.ts <-- 测试配置文件

第一步:创建文件夹并初始化打开你的终端(Terminal),执行以下命令:

Bash

# 1. 创建目录 mkdir mini-vue cd mini-vue # 2. 初始化 package.json (全部默认) npm init -y # 3. 安装 TypeScript # -D 表示安装为开发依赖 (devDependencies) npm install typescript -D # 4. 初始化 TS 配置 npx tsc --init

2. 安装测试神器 —— Vitest

Vue 3 官方以前用 Jest,但现在全面转向了Vitest。 Vitest 基于 Vite,速度极快,开箱即用,而且对 TypeScript 支持极好,不需要像 Jest 那样配一堆 Babel 转换器。

第二步:安装 Vitest

Bash

npm install vitest -D

3. 配置文件详解

我们需要修改两个配置文件,确保 TS 和 Vitest 能配合默契。

第三步:配置tsconfig.json找到根目录下的tsconfig.json,把里面的内容替换为以下配置。这一步是为了确保我们能使用最新的 ES6 语法,并且允许引入模块。

JSON

{ "compilerOptions": { "target": "esnext", "module": "esnext", "moduleResolution": "node", "strict": true, "jsx": "preserve", "sourceMap": true, "resolveJsonModule": true, "esModuleInterop": true, "lib": ["esnext", "dom"], "types": ["vitest/globals"] } }

注意:"types": ["vitest/globals"]允许我们在测试文件中直接使用describe,it,expect而不需要每次都 import。

第四步:配置package.json我们需要加一个脚本命令,让我们能一键跑测试。

打开package.json,在"scripts"里添加"test"

JSON

{ "name": "mini-vue", "version": "1.0.0", "main": "index.js", "scripts": { "test": "vitest" }, "devDependencies": { "typescript": "^5.x.x", "vitest": "^1.x.x" } }

4. 实战演练:写下你的第一个测试

环境搭好了,我们来跑通流程。 我们模拟一个简单的加法功能,来验证环境是否正常。

操作动作:

  1. 在根目录新建src文件夹。

  2. src下新建index.ts(这里放我们的源代码)。

  3. src下新建index.spec.ts(这里放测试代码,.spec.ts是测试文件的常见后缀)。

文件内容:

src/index.spec.ts(测试文件)

TypeScript

import { add } from "./index"; // describe 定义一个测试分组,名字叫 "init" describe("init", () => { // it 定义一个具体的测试用例 it("should add two numbers", () => { // expect 是断言:我期望 add(1, 1) 的结果是 2 expect(add(1, 1)).toBe(2); }); });

src/index.ts(源文件)

TypeScript

export function add(a: number, b: number) { return a + b; }

5. 启动引擎!

回到终端,运行:

Bash

npm run test

预期结果:你应该会看到终端里出现一片绿色的文字,显示✓ src/index.spec.ts以及Test Files 1 passed

这意味着:

  1. TypeScript 编译成功。

  2. Vitest 运行成功。

  3. 你的代码逻辑通过了测试。


🧠 核心知识点总结 (Review)

  1. Vitest: 我们选用的测试框架。它的特点是,且对 ESM (import/export) 支持极好。

  2. .spec.ts: 这是测试文件的约定俗成命名,Vitest 会自动扫描所有带.spec.test的文件并运行。

  3. TDD 流程:

    • 以后做每一个功能(比如reactive),我们都会先写.spec.ts

    • 运行测试 -> 报错 (Red)。

    • 去写代码实现逻辑。

    • 再次运行 -> 通过 (Green)。

    • 重构代码 (Refactor)。


✅ 你的今日任务

  1. 动手操作:完全按照上面的步骤,在你的本地建立一个mini-vue文件夹。

  2. 跑通测试:确保执行npm run test后能看到绿色的通过提示。

  3. 准备就绪:建立src/reactivity文件夹,我们明天要在这里写下 Vue 3 的第一行核心代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1128266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qoder官网商业模式:Z-Image-Turbo如何盈利

qoder官网商业模式&#xff1a;Z-Image-Turbo如何盈利 引言&#xff1a;从开源模型到商业化路径的探索 随着AIGC&#xff08;人工智能生成内容&#xff09;技术的爆发式增长&#xff0c;图像生成模型已从实验室走向大众应用。阿里通义推出的 Z-Image-Turbo 作为一款高性能、低…

从智能工具选择到写作实践:全面优化学术写作效率的进阶指南

工具核心特点速览 工具名称 核心优势 适用场景 数据支撑 aibiye 全流程覆盖降重优化 从开题到答辩的一站式需求 支持20万字长文逻辑连贯 aicheck 院校规范适配模板化输出 国内本硕博论文框架搭建 覆盖90%高校格式要求 秒篇 3分钟文献综述生成 紧急补文献章节 知…

用AI自动生成Django项目代码,开发效率翻倍

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请基于Django框架生成一个完整的博客系统项目代码。要求包含&#xff1a;1) 使用Django 4.2版本&#xff1b;2) 实现用户认证系统(注册/登录/登出)&#xff1b;3) 文章模型包含标题…

饮料瓶盖密封性检测:生产线上的视觉把关

饮料瓶盖密封性检测&#xff1a;生产线上的视觉把关 引言&#xff1a;工业质检的“眼睛”正在进化 在现代饮料生产线上&#xff0c;每一瓶饮品都要经过数十道工序。而其中最容易被忽视、却又直接影响消费者体验的关键环节之一——瓶盖密封性&#xff0c;正逐渐成为自动化质检的…

如何实现《原神》和《崩坏:星穹铁道》240帧极致流畅体验?

如何实现《原神》和《崩坏&#xff1a;星穹铁道》240帧极致流畅体验&#xff1f; 【免费下载链接】Genshin_StarRail_fps_unlocker Genshin Impact & HKSR Fps Unlock 原神崩铁帧率解锁 项目地址: https://gitcode.com/gh_mirrors/ge/Genshin_StarRail_fps_unlocker …

MGeo模型在地图POI合并中的实际应用

MGeo模型在地图POI合并中的实际应用 引言&#xff1a;POI合并的挑战与MGeo的引入 在地图服务、本地生活平台和城市计算系统中&#xff0c;POI&#xff08;Point of Interest&#xff09;数据是核心基础信息。然而&#xff0c;由于数据来源多样&#xff08;如用户上报、第三方采…

COCO数据集在目标检测项目中的实战应用

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 在快马平台中&#xff0c;输入COCO数据集下载链接&#xff0c;生成一个完整的目标检测项目。要求包括数据加载、预处理&#xff08;如归一化、增强&#xff09;、使用YOLOv5模型训…

MGeo模型在物流地址合并中的实际应用

MGeo模型在物流地址合并中的实际应用 引言&#xff1a;物流场景下的地址标准化挑战 在现代物流系统中&#xff0c;同一收货地址常常以多种不同形式被记录。例如&#xff0c;“北京市朝阳区望京街5号”可能被用户输入为“北京朝阳望京街五号”、“北京市朝阳区望京街道5号”或“…

MGeo在电信基站数据标准化中的实施路径

MGeo在电信基站数据标准化中的实施路径 随着5G网络的快速部署&#xff0c;电信运营商面临海量基站数据的管理挑战。其中&#xff0c;基站地址信息的非结构化、命名不一致、表述差异大等问题严重制约了资源调度、故障定位和网络优化效率。例如&#xff0c;“北京市朝阳区酒仙桥路…

CNLunar:快速掌握Python农历工具的完整指南

CNLunar&#xff1a;快速掌握Python农历工具的完整指南 【免费下载链接】cnlunar 项目地址: https://gitcode.com/gh_mirrors/cn/cnlunar CNLunar是一款基于Python开发的轻量级农历日历工具&#xff0c;专为技术新手和普通用户设计。这个开源项目无需数据库依赖&#x…

多模态实战:用MGeo同时处理地址文本和地理坐标数据

多模态实战&#xff1a;用MGeo同时处理地址文本和地理坐标数据 当共享单车运营商需要结合用户上报的文字描述&#xff08;如"地铁A口旁"&#xff09;和GPS坐标来精确定位故障车辆时&#xff0c;传统方法往往难以准确匹配。MGeo作为多模态地理文本预训练模型&#xff…

提升10倍效率:PCTOLCD2002批量下载方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个PCTOLCD2002批量下载工具&#xff0c;功能包括&#xff1a;1.设备自动识别 2.队列管理 3.并行下载控制 4.结果统计报表。使用PythonPyQt开发GUI&#xff0c;要求支持同时连…

彻底关闭OneNote开机自启动,提升电脑启动速度

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个Windows系统优化小工具&#xff0c;主要功能包括&#xff1a;1.检测所有开机自启动程序 2.提供一键禁用/启用功能 3.特别标注Office系列软件的自启动项 4.显示每个启动项对…

游戏UI元素设计:Z-Image-Turbo快速产出图标

游戏UI元素设计&#xff1a;Z-Image-Turbo快速产出图标 阿里通义Z-Image-Turbo WebUI图像快速生成模型 二次开发构建by科哥 在游戏开发中&#xff0c;UI图标的视觉表现直接影响用户体验和整体美术风格的统一性。传统图标设计依赖设计师逐一手绘或使用PS/AI进行制作&#xff0…

企业级容灾方案:Z-Image-Turbo高可用集群部署构想

企业级容灾方案&#xff1a;Z-Image-Turbo高可用集群部署构想 背景与挑战&#xff1a;AI图像生成服务的稳定性需求 随着AIGC技术在内容创作、广告设计、电商展示等场景的广泛应用&#xff0c;AI图像生成服务已从“实验性工具”演变为“生产级系统”。阿里通义Z-Image-Turbo Web…

完整文档解析:Z-Image-Turbo高级功能使用条件说明

完整文档解析&#xff1a;Z-Image-Turbo高级功能使用条件说明 阿里通义Z-Image-Turbo WebUI图像快速生成模型 二次开发构建by科哥 本文为 Z-Image-Turbo WebUI 的深度使用指南&#xff0c;聚焦其高级功能的启用逻辑、运行依赖与工程化实践路径。不同于基础操作手册&#xff0c…

文献检索:高效获取学术资源的方法与实践研究

一、WisPaper&#xff1a;智能学术搜索激发科研灵感 科研创新的关键是了解前沿&#xff0c;找到突破口。但传统查文献方式往往效率低&#xff1a; Google Scholar 或 arXiv 搜索结果太多&#xff0c;难以筛选公众号推送滞后&#xff0c;容易错过最新研究文献阅读时间长&#…

毕业设计救星:学生党如何免配置玩转MGeo地址相似度模型

毕业设计救星&#xff1a;学生党如何免配置玩转MGeo地址相似度模型 作为一名GIS专业的学生&#xff0c;你是否正在为毕业设计中地址智能匹配的任务发愁&#xff1f;学校服务器需要排队申请&#xff0c;个人笔记本又跑不动大模型&#xff0c;距离答辩只剩一个月&#xff0c;时间…

文旅融合新玩法:基于MGeo的旅游路线智能生成器

文旅融合新玩法&#xff1a;基于MGeo的旅游路线智能生成器 作为一名经常需要处理旅游路线规划的产品经理&#xff0c;你是否遇到过这样的困扰&#xff1a;收集了上千个网红打卡点的民间称呼&#xff08;如"网红树"、"彩虹阶梯"&#xff09;&#xff0c;却苦…

如何用MGeo提升生鲜配送最后一公里体验

如何用MGeo提升生鲜配送最后一公里体验 引言&#xff1a;最后一公里的“地址困局” 在生鲜电商和即时配送领域&#xff0c;最后一公里是决定用户体验的核心环节。然而&#xff0c;一个常被忽视但影响深远的问题浮出水面&#xff1a;用户输入地址与系统标准地址不一致。比如&a…