
NotionNext项目分析
type
status
date
slug
summary
tags
category
icon
password
这里写文章的前言:
在Notion Next 项目中,我看到了一个完全标准的项目代码,无论是国际化,配置化,主题化,缓存等方方面面,规范得如同装饰品,艺术品。
📝 SSG相关
SSG 和 SSR 认识在原理,所以还是有很多基本可以看看的 :> 👹
Next的最最基础是这样: |- _document.js # 定义html骨架,可以做第三方脚本初始化 |- _app.js # 在页面初始化之前,可以做全局数据初始化 |- index.js # 首页页面 |- [folder] # 按照路由命名的页面们
加载外部资源封装方法
- 检查资源是否已经存在 - 使用querySelectorAll匹配src和href方法
- 在等待资源在加载完成在返回 - 监听对应脚本dom的onload和onerror方法
页面们的细节
- getStaticProps
在SSG里面,每个页面都有getStaticProps方法,这是服务端执行的,是对应页面的props数据,这部分我们关注没有页面的这个方法做什么事情
- Layout
这里的每个页面都是通过getLayoutByTheme方法动态获取对应theme的Layout组件。
在next.config.js定义了@theme-components是来自配置文件的主题Theme。
在getLayoutByTheme方法做了个当前页面路径和主题export名称的映射。
这里有个地方不解,为什么当theme不一样的时候要使用dynamic动态获取? 难道是这里的操作是在客户端执行,@theme-components已经加载到了客户端,但是其他主题没有加载,还在服务端?
值得欣赏的细节
页面的路由和动态路由
dark theme
🤗 拓展
它不再是一个单一博客平台。通过二次开发打造出一个Studio。
是否可以改成不分享页面,通过notion api 实现获取
SSG 问题密码裸跑
每个post背景图片
📎 参考文章
- 一些引用
- 引用文章
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~