他最近在开源方面非常活跃,很大一部分精力投入在 Vite 相关的生态建设中,他开发的 vite-ssg[6] 插件支持把 Vite 项目构建为静态网站。
SSG,全称是 Static-Site-Generators,静态站点生成器。在构建时就把你的 Web 应用构建为 HTML 格式,对 SEO 和性能都有非常显著的帮助。
他当然不是从零完成这么庞大的工作量,@vue/server-renderer
这个包本身是为 Vue 构建 SSR 应用而生的,他巧妙利用这个库把 Vue 组件渲染为 HTML 字符串的能力,节省了非常多的工作量。
在他的博客中也有提到:
The idea here is fairly simple: bundle the app entry, then for each route, dump the app using APIs from the
@vue/server-renderer
package. Simplified code here:
import { renderToString } from ‘@vue/server-renderer’
const createApp = required(‘dist-ssr/app.js’)
await Promise.all(
routes.map(async (route) => {
const { app, router, head } = createApp(false)
router.push(route)
await router.isReady()
const appHTML = await renderToString(app)
const renderedHTML = renderHTML(indexHTML, appHTML)
await fs.writeFile(${route}.html
, renderedHTML, ‘utf-8’)
})
)
简化后的思路就是,在 SSR 的环境下启动应用后,对每个路由用 @vue/server-renderer
生成静态的 HTML 字符串,写入为 HTML 文件。
虽然代码看似简短,但这背后体现的是对 Vue3 生态的熟悉,更具体的说就是对 Vue3 发布的每个 npm 包所具有的能力的熟悉。
只是 npm 库吗?
当然不是,比如最近我们工作中的项目接入了微软开源的 Rush[7],Rush 是为 Monorepo 工程设计的一体化解决方案。
在我阅读文档的过程中,我就学习到了很多包管理方面的知识:
-
NPM vs PNPM vs Yarn[8]
-
幽灵依赖(Phantom Dependencies)[9]
-
NPM 分身(NPM doppelgangers)[10]
在阅读 Vue.js 文档的时候,风格指南[11] 部分也给我留下了很深的印象,开源作者大佬在多年代码生涯总结而成的实践指南,一定是有非常多的精华。比如:
组件名称应该以高阶的 (通常是一般化描述的) 单词开头,以描述性的修饰词结尾。
当你在现实中的维护场景下,假设你在想:“我要给搜索按钮(SearchButton)的清除(Clear)功能换个图标”。
那么你在视线扫过这个文件夹的时候,关注点自然先集中到 SearchButton
这个部分,再去寻找后缀的 Clear
、Run
描述性修饰词,点进 Clear
组件进行维护。这样组件关系就非常一目了然。
这些开源作者的心血经常在文档中不起眼的部分静静等候你去发现。
工作太忙?
其实很多人第一反应可能是:“一天看 10 个,我工作都那么忙了,哪有空啊?”
关于这点,狼叔也在原文中提到了:
这里的 10 个其实只是个虚数,看个人能力和决心,量力而行即可。
但请一定要能做到每日精进。
Node.js 模块在 npm 上的统计数据表明,截止到今天 2017 年 9 月 24 日,共有 55.9 万个模块。单日下载在 1.5 亿次。这么大规模的模块,每天学几个,水平一定会增长的非常快的。
最难的不是下决心,而是坚持!这是最值得自豪的称赞,没有之一!
比如 VueConf 大会里提到了某些新的技术,比如你的同事在聊天的时候提到了一些让你感兴趣的库,你都可以去搜索看看,或许在将来工作中的某天就会不经意的帮助到你。
总结
–
不积硅步,无以至千里。保持好奇心、热情和耐心,不要对任何东西都不求甚解,当然也不要对某些地方太钻牛角尖。
“每天 10 个 NPM 模块” 更像是一种激励,可能中间我们会断掉两三天,甚至几周都提不起精神,但只要在心里保持这个信念,期待一年、三年、五年以后不一样的我们。
本文转载自:前端从进阶到入院
参考资料
[1]
《迷茫时学习 Node.js 最好的方法》: https://zhuanlan.zhihu.com/p/29625882
[2]
magic-string: https://www.npmjs.com/package/magic-string
[3]
fast-glob: https://www.npmjs.com/package/fast-glob
[4]
Glob Import: https://vitejs.dev/guide/features.html#glob-import
[5]
Anthony Fu: https://antfu.me/
[6]
vite-ssg: https://github.com/antfu/vite-ssg
[7]
Rush: https://rushjs.io/pages/intro/welcome/
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后:
总结来说,面试成功=基础知识+项目经验+表达技巧+运气。我们无法控制运气,但是我们可以在别的地方花更多时间,每个环节都提前做好准备。
面试一方面是为了找到工作,升职加薪,另一方面也是对于自我能力的考察。能够面试成功不仅仅是来自面试前的临时抱佛脚,更重要的是在平时学习和工作中不断积累和坚持,把每个知识点、每一次项目开发、每次遇到的难点知识,做好积累,实践和总结。
点击这里领取Web前端开发经典面试题
总结来说,面试成功=基础知识+项目经验+表达技巧+运气。我们无法控制运气,但是我们可以在别的地方花更多时间,每个环节都提前做好准备。
面试一方面是为了找到工作,升职加薪,另一方面也是对于自我能力的考察。能够面试成功不仅仅是来自面试前的临时抱佛脚,更重要的是在平时学习和工作中不断积累和坚持,把每个知识点、每一次项目开发、每次遇到的难点知识,做好积累,实践和总结。
点击这里领取Web前端开发经典面试题