手写mini版本的Vue3--初始化项目

518 阅读2分钟

初心

VUE3 出来已经一年多了,我们公司使用Vue3 开发的项目也有好六七个了。

用完之后,只能说真香,使用Vue3开发完之后,感觉再也回不去了。

前段时间在掘金上面看到崔大写了一个 mini-vue3 的项目,把很多 VUE3 的边界条件处理,兼容等先去掉。我自己去看了一下代码,感觉这个项目真的是太棒了。

项目地址:github.com/cuixiaorui/…

强烈建议大家把项目 down 下来,运行一下,看VUE3 的整体运行逻辑。

光看没有用,可能学习的东西还不够,我接下来打算模仿崔大的项目,自己也写一个 mini-vue3的。

并且把写过程中的一些思考,给记录下来。

创建项目

首先通过命令 mpm init -y 初始化我们的项目

创建目录结构

首先创建 src,然后在里面创建 reactivity 目录这个是用来放置我们的 reactity 模块的。

在reactivity目录下面创建一个 index.ts 的文件,这个是我们的模块主入口。

在文件里面写上

export function add(a, b) { 
return a * b; 
 }  

在reactivity目录创建 test 目录,这个是用来放置我们的测试用例的。

我们tests 目录下面创建一个文件index.spec.ts这个是和我们刚刚模块主入口的是对应上的,用来测试它的。

在文件里面写上

import { add } from "../index"; 

 it("init", () => {    
    expect(add(1, 1)).toBe(1); 
 });

加上 jest 和 ts

首先安装 ts ,npm i typesrcipt -D 这个命令就可以安装上了。 然后 安装 jest-ts 这个和 ts 配合的库 npm i @types/jest -D

这个时候可以看到我们生成的 tsconfig.json 找到 types 字段 ,加上["jest"]就可以了。找到"noImplicitAny"设置为 false。

这时候应该安装我们的 jest 了

命令如下:npm i jest -D

加上 babel

因为我们的包默认是使用common.js 的规范,我们现在是es 规范。所以我们需要使用 babel转一下。

npm i @babel/preset-env -D npm i @babel/core -D npm i @types/jest -D

然后在安装一下转换ts 的

npm i @babel/preset-typescript -D

然后我们创建 babel.config.js 文件

输入


module.exports = { 
 presets: [                                               
 ["@babel/preset-env", { targets: { node: "current" } }], 
 "@babel/preset-typescript",                              
 ],                                                       
 };

这是告诉 babel安装我们当前的版本进行转换,使用 ts 进行转换。

运行

在 npm 的srcpit 模块加上 "test": "jest" ,这样子输入 npm run test 就可以运行起来啦,可以看到,我们的测试用例通过了。

结尾

项目已经放到我的 GitHub 上面了,欢迎大家去start。

我的项目地址:github.com/moyuhaokan/…

再次推荐崔大的项目:github.com/cuixiaorui/…