<aside> 💡 写给 0.5 - 1 岁的前端同学,希望未来能看到属于你们自己的前端框架
</aside>
面试官 + 手把手 + 框架 = 掘金爆款文章,我全占了
面试官:你好,如果你能告诉我如何从零写一个前端框架我就直接给你 offer,刺激吧 hhhh。首先我问你个问题,React 是不是前端框架?
请记住一句话:前端框架是为了提高前端开发者的前端项目的幸福感
一个前端框架通常来讲分为构建时和运行时,构建时一般做的事情都围绕着如何去收集 / 修改 src,并获得一个产物,而运行时则是为这个产物提供容器和工具等。
举个例子,react x vite 项目在构建时会静态分析入口文件的 import / export,然后将一些只提供 CJS 产物的 node_modules 模块给编译为 ESM,然后启动 devserver ,并执行 resolve 收集文件,然后跑插件中的 transform 逻辑来修改源码(jsx 标签转化 / 修改导入导出规则 / sass 编译 / fast-refresh / 等),之后把产物交给 devserver 作为文件服务暴露出来。而运行时指的是 react 的框架代码,其为 src 提供了框架的运行时逻辑。
其实大家常说的 "React 是流行的前端框架" 这个说法是有歧义的,因为有很多人把这里的 React 误解为 React 这个包本身,正确的说法应该是 “React 运行时及构建工具是流行的前端框架”。
没有构建时做的事情,可能你连 jsx 都写不了,甚至连热更新 / source map 都做不到,缺少了这些东西,开发者的体验会骤降。所以请想起我之前说的那句话 “前端框架是为了提高前端开发者的前端项目的幸福感”,难道你以为你的时间和幸福感都只是 import React from "react"
给的吗?
现在很多框架开发者,都会莫名其妙的忽略构建时要做的事情,他们会错误地感觉运行时就是前端框架的一切,这样肯定是不对的。而且我们在谈前端的优化的时候,也会把前端优化策略分为:前端构建优化和前端运行时优化(构建优化不只是优化产物体积)
所以,React 的官网上面写的很清楚: “A JavaScript library for building user interfaces”
解读一下就是:我只是个写 UI 的 JS 包(我不是 Framework,我是帮助你写小页面的 library)
我回答完了
面试官:那我们第一步到底做什么?
我:这还用想,当然是想个名字了,你们程序员不是天天都在起名字吗?当然名字我早就想好了,就叫 bat.js 了。
面试官:我为什么要用你这个框架呢?你这个框架有什么亮点吗?
我:啊,这个嘛,肯定要学习快、配置快、调试快、打包快、加载快、写业务也快并且支持 SSR / SSG / MPA / 微前端等各种场景。