ts 项目执行js_像开发自己的项目一样开发 vuenext

本文介绍了从零开始学习Vue 3.0 (vue-next) 的过程,包括项目的技术选型、如何搭建开发环境及初步运行项目等内容。重点介绍了项目依赖的第三方库以及它们在前端构建中的作用。

今天由于忙着写 OKR 项目,回来已经快 10 点了,洗漱完毕,就迫不及待打开电脑开心学习 vue-next 项目,vue-next 是下一代 vue(vue3.0) 框架的源代码。这个阶段我们的目标是深入学习 Vue,需要深刻理解源码,像开发自己的项目一样来开发 vue-next,体验一下和这些前辈们共事的感觉。说不定还真能提一个 PR。

说干就干

先把 vue-next 项目 clone 到本地:

git clone git@github.com:vuejs/vue-next.git

然后把本地的 vue-next 项目拖到 source-tree(一个 git 客户端) 中,此时便可以看到前辈们的提交代码记录了。我们从作者第一次提交看起,看看作者在第一次都干了什么事情。

a168d540df766695135836adb6c5862a.png

我们切到作者的第一次提交的代码(不会切的私聊我),试着跑起来。试想一下,当我们开发一个新项目的时候,通常都会先把项目的技术选型搞定,比如用什么工具打包、采用什么语言。

用了哪些三方库?

直接打开 package.json 文件,非常有意思的是我看到了 fs-extra 这个库,它是我今晚写 OKR 项目时用到的一个库,太巧了。这个库是用来操作文件的,比如创建文件,对 node 的 fs 进行了封装。

e450578e008b2e55f4ff0ffe74dd73bd.png

chalk:把日志信息以不同颜色输出到控制台;

dts-bundle:把 .d.ts 文件导出一个 moudle;

execa:执行代码的,比如通过代码执行打包命令;

fs-extra:处理文件的,对 fs 进行了封装;

lerna:用来管理项目中使用多个 package;

minimist:解析命令行参数的,就是 args;

prettier:用来控制代码风格的;

roolup:用来打包的,类似 webpack;

typescript:采用 TypeScript 进行编码;

这些三方库大多数主要用来做前端构建使用,说白了就是前端项目的基建,其中我标红的这几个项目非常重要。有兴趣的同学可以自己到 GitHub 找到这些项目的 ReadeMe 深入学习。或者你可以关注 FGD ,每天会推荐一个前端代码库,以「定投」的方式学习。

运行起来看看

在 package.json 文件中可以看到能够执行的脚本。

  "scripts": {    "dev": "node scripts/dev.js",    "build": "node scripts/build.js",    "lint": "prettier --write --parser typescript 'packages/*/src/**/*.ts'"  },

在项目根目录下执行 npm install,然后执行 npm run dev,你会看到如下效果,默认启动的是 runtime-dom 这个 package:

1d4f1cb9f09eee1e630b00ffc2637756.png项目正常运行起来了,此时修改 packages 下的代码,这里会实时监听文件的变化。

当执行 npm run dev 时,其实执行的是 scripts/dev.js 这个脚本。在 scripts 目录下还有其它脚本。

├── bootstrap.js├── build.js // npm run build├── dev.js // npm run dev├── utils.js // 工具函数└── verifyCommit.js // 验证提交信息
真正的核心其实 vue-next 项目真正的核心是 packages 目录下的这几个项目。后面我们会详细学习每个 package 的作用,你可以把这些包看做是一个单独的 npm 包。这些 package 其实使用的是 lerna 这个第三库管理。
├── core├── global.d.ts├── observer├── runtime-dom└── scheduler

最后看一看整体的项目结构

├── lerna.json // package 管理├── node_modules├── package.json // npm 管理├── packages // 各个模块具体实现,项目源码├── rollup.config.js // 打包配置├── scripts // 可执行的脚本├── tsconfig.json // ts 配置└── yarn.lock
今天我们理解了 vue-next 的技术选型,大家加油!

3f68ca17ed63ff6c2c8f4677309ea7cb.png

长按关注

素燕《前端小课》

帮助 10W 人入门并进阶前端

# 项目特点 - 前台参考"Hexo"的"Butterfly"设计,美观简洁,响应式体验好。 - 后台参考"element-admin"设计,侧边栏,历史标签,面包屑自动生成。 - 采用Markdown编辑器,写法简单。 - 评论支持表情、GIF动图输入回复等,样式参考Valine。 - 前后端分离部署,适应当前潮流。 - 接入第三方登录,减少注册成本。 - 留言采用弹幕墙,更加炫酷。 - 支持代码高亮和复制,图片预览,深色模式等功能,提升用户体验。 - 搜索文章支持高亮分词,响应速度快。 - 新增文章目录、推荐文章等功能,优化用户体验。 - 新增在线聊天室,支持撤回、语音输入、统计未读数量等功能。 - 新增aop注解实现操作日志功能。 - 支持动态权限修改,采用RBAC模型,前端菜单和后台权限实时更新。 - 后台管理支持修改背景图片,博客配置等信息,操作简单,支持上传相册。 - 代码支持多种搜索模式(Elasticsearch或MYSQL),支持多种上传模式(OSS或本地),可支持配置。Elasticsearch占内存较高,如果服务器配置太低,不建议使用。 - 新增网站导航功能,页面优雅美观。可自行添加自己常用的网站进行分类和排序。 - 新增聊天管理功能,方便清理垃圾聊天内容。 - 新增登录日志功能,随时查看用户的登录信息。 - 前台页面重新布局重构,页面布局更加简洁,首页加载速度更快。 - 前台首页文章列表顶部新增滚动消息,超级炫酷。 - 新增了监控用户是否授权的功能、增加了用户的体验性。 - 增加图片删除后也将该路径的图片删除的功能、大大提高了文件存储的利用率。 - 将接口进行**axios**二次封装、更利于接口的请求和响应。 - 新增本博客配套的**微信小程序**,可随时用手机浏览文章。并且接入微信登录,减少注册成本。 - **微信小程序**新增每日新闻热搜功能、可随时查看热搜。 - 新增本博客配套的**App**,同时接入qq、微博登录,使用更加方便。 - 代码遵循阿里巴巴开发规范,利于开发者学习。 ## 技术介绍 **前端:** vue + vuex + vue-router + axios + vuetify + element + echarts + uniapp + uview + Html + Css + JavaScript **后端:** SpringBoot + nginx + docker + SpringSecurity + Swagger2 + MyBatisPlus + Mysql + Redis + elasticsearch + RabbitMQ + MaxWell + Websocket **其他:** 接入QQ,微博、微信第三方登录,接入腾讯云人机验证、websocket ## 运行环境 ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值