首页 前端知识 每天看 10 个 NPM 模块?

每天看 10 个 NPM 模块?

2024-06-18 23:06:30 前端知识 前端哥 691 811 我要收藏

他最近在开源方面非常活跃,很大一部分精力投入在 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] 部分也给我留下了很深的印象,开源作者大佬在多年代码生涯总结而成的实践指南,一定是有非常多的精华。比如:

组件名称应该以高阶的 (通常是一般化描述的) 单词开头,以描述性的修饰词结尾。

88901dacecbade4f743d8c4c7ccfbee5.png

当你在现实中的维护场景下,假设你在想:“我要给搜索按钮(SearchButton)的清除(Clear)功能换个图标”。

那么你在视线扫过这个文件夹的时候,关注点自然先集中到 SearchButton 这个部分,再去寻找后缀的 ClearRun 描述性修饰词,点进 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前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后:

总结来说,面试成功=基础知识+项目经验+表达技巧+运气。我们无法控制运气,但是我们可以在别的地方花更多时间,每个环节都提前做好准备。

面试一方面是为了找到工作,升职加薪,另一方面也是对于自我能力的考察。能够面试成功不仅仅是来自面试前的临时抱佛脚,更重要的是在平时学习和工作中不断积累和坚持,把每个知识点、每一次项目开发、每次遇到的难点知识,做好积累,实践和总结。

点击这里领取Web前端开发经典面试题

总结来说,面试成功=基础知识+项目经验+表达技巧+运气。我们无法控制运气,但是我们可以在别的地方花更多时间,每个环节都提前做好准备。

面试一方面是为了找到工作,升职加薪,另一方面也是对于自我能力的考察。能够面试成功不仅仅是来自面试前的临时抱佛脚,更重要的是在平时学习和工作中不断积累和坚持,把每个知识点、每一次项目开发、每次遇到的难点知识,做好积累,实践和总结。

点击这里领取Web前端开发经典面试题

转载请注明出处或者链接地址:https://www.qianduange.cn//article/12748.html
标签
arcgis
评论
发布的文章
大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!