1. NotionNext开发指引

category
tags
type
status
slug
date
password
Last edited time
Apr 24, 2024 08:51 AM
summary
icon

前言

在进行二次开发之前,您需要了解到:NotionNext本身支持大量的自定义配置,开发之前,请先访问《NotionNext操作手册》获取帮助、配置您的站点,例如:
  • blog.config.js 文件中可以修改站点的基础信息、主题、语言、评论插件等核心配置
  • 每个主题下都有一个配置文件config_[theme].js,以便用户配置自己的页面个性化。
    • NotionNext 代码结构
      NotionNext 代码结构

自定义脚本

NotionNext操作手册中,有关于自定义脚本和样式的引入方式;即:
  1. /public/js/custom.js /public/css/custom.css 中引入您的脚本,就可以实现任意的页面功能。
  1. blog.config.jsCUSTOM_EXTERNAL_JSCUSTOM_EXTERNAL_CSS中也可以引入第三方的脚本。
💡
用这两种方式引入脚本,即使本机上没有安装nodejs等开发环境,也可以直接在浏览器控制台中编写调试。
 

Notion中自定义JS和CSS

在4.2.0之后的版本中,您可以直接在Notion中指定网页上的样式,以及执行的脚本,只需在NotionConfig中配置GLOBAL_CSS属性以及GLOBAL_JS属性即可,如下图示例:
notion image
 

自行开发

如果上述的配置方式,不能满足您的需要,例如新增组件、深度定制等等。您可以选择在github上发起issue,提出改进页面的建议,或者遵循此教程,进行您的开发之旅。
💡
可选Codespaces云开发,以及本地开发两种方案。

一、云开发(Codespaces)

💡
这是一个可选方案,相比本地开发,您不需要在电脑上安装环境;直接将Github仓库导入到云开发环境,在线编辑即可。 Codespaces是Github官方提供的云开发环境。

导入启动项目

  1. 点击Codespaces
    1. notion image
  1. 点击新建代码空间
    1. notion image
  1. 导入项目,并选择代码分支、以及云环境的服务器配置,然后点击Create codespacee
    1. notion image
      notion image
  1. 等待几分钟,您的云开发环境即可搭建
      • 在终端中输入 yarn 即可安装依赖的环境
        • notion image
      • 等上一步安装全部完成(约3分钟)后,在终端输入 yarn dev 即可开始实时调试
        • 终端会提示以下内容,说明服务启动成功:
          点击右下角的在浏览器中打开,即可开启调试页面。
          notion image
      • 调试效果
        • github 会临时分配给您一个临时的域名,用于开发调试
          notion image

二、 本地开发

1.准备开发环境

💡
您的电脑上需要有一个开发环境NodeJs、以及代码编辑器VSCode,
  1. NodeJS 运行环境
    1. 安装步骤
      • 安装成功检验
        • 安装成功,测试安装是否成功,运行CMD,分别输入node -v 和 npm -v 分别查看node和npm的版本号,如下图所示:
          notion image
          💡
          node是基础运行环境,npm是依赖包的管理组件
  1. VsCode 编辑器
    1. 安装下载
      设置中文

2.导入启动项目

  1. 下载您的代码
    1. 安装Github Desktop
      下载代码
      notion image
      找到您的仓库地址进行Clone
      notion image
      notion image
      点击Clone即可下载代码
  1. 用vscode打开项目
    1. 打开项目文件
      notion image
      安装项目依赖的组件
      点击 菜单栏的终端,并选择 新建终端,然后在新建的终端窗口中输入安装启动脚本:
      notion image
      任选一种安装
      💡
      静候片刻,首次安装依赖需要花一点时间
      启动项目 只需一个命令
      notion image
      其他脚本说明
  1. 访问页面
    1. 浏览器打开 http://localhost:3000/ 即可访问你的本地博客
      notion image
      💡
      调试模式下:代码的每次修改会实时影响到你的页面,不需要刷新或重启服务
 

3.本地开发环境配置

VSCode中可以使用launch面板,进行设置环境变量以及断点调试
notion image
创建一个launch文件
notion image
可以参考我的配置
 
 

代码结构简介

NextJS

项目用NextJS框架构建,以下是代码所有主要目录,修改样式主要在themes 目录下完成。
notion image

TailWindCSS

项目开发使用TailwindCss,这是一个极简、灵活的CSS工具库,上手后开发效率极高。
TailwindCSS为什么你要使用?
TailwindCSS官方称一个可以让你脱离css文件,在html直接通过class修改样式的框架。 但是TailwindCSS一直受到CSS 方案备受争议。第一个问题就是这和写style css有什么区别? 首先在我们的进行修改css样式的风法中,多多少少会用到一些4中方式 越往下走,颗粒度越来越大,约束性变高,自由性不足。而 TailwindCSS 位于第二层。 第一层的话,就很难复用了,所以 TailwindCSS 选择了第二层的原因。 在不久之前Facebook经过重构后的css体积已经重原来的413kb 压缩到74kb。 可是很多开发者,很疑惑。我的css文件下去了,但是我的html和组件的文件变得无比的大,并不知道这里的好处在哪里? 首先第一,现在的开发模式已经是组件开发了,就算你在搞一个css来维护。其实很多的样式属性这个组件有,那个组件也存在复用。这个没有必要,这里的自己的组件样式交给组件自己维护就好了。 第二点就是想到这个疑惑的,估计是没有去了解过nginx的gzip。只是知道有这么一回事。 gzip 的核心Deflate使用的是LZ77 算法和 Huffman 编码来压缩文件,重复度越高的文件可压缩的空间就越大。 即使 HTML 因为类名过多造成体积增大,由于 class 高度相似,gzip 也将会得到一个很大的压缩比例。 这才是 TailwindCSS 想要的结果 第一次我使用 tailwind ui 框架的时候,很多情况看多以下的这种写法。 你想要多少的数值,直接写多少就好了。 还有对应响应式 对应你使用的@media,你感觉谁更加舒服呢? 第三 就是后期维护的时候,就算有人跑路了,这么多个css,后面的人只需要去看html就能维护。这么多的css file你慢慢找吧,反正我是不想找的。 第四 Jit css编译,使用TailwindCSS在编译的过程中,比css-loader less-loader 都要快 说了这么这些好处,TailwindCSS有什么不足呢?我说说我的看法吧。 第一遇到复杂一点的css操作你不能直接使用 TailwindCSS 操作 比如以上的情况,你需要写css来操作子元素的显示,除非你无聊非要用js来写,也不是不行。 第二是增加了记忆负担,它的命名和你认知中的使用不一样,前期需要一直查阅文档,或者下载TailwindCSS的提示插件。要不你无从下手。 但是一旦你有习惯了,形成条件反射,那就是另一种情况,你会直喊香。 如果你正在做代码加速优化的话,你可以试试TailwindCSS.因为gzip后是真的小。 如果你是一个爱折腾的人,可是试试TailwindCSS。 如果你感觉你的组件已经可以完全独立使用一个css的时候,可以使用TailwindCSS来制作这个组件。后面要改代码时候,只需要去这个组件修改,并且不用担心自己的class会影响到他人的组件。
TailwindCSS为什么你要使用?

代码格式规范

使用Eslint + Prettier
  • Prettier插件
    • 有两个插件任选一种,按照插件内的配置说明配置您的工作空间即可。
      notion image
      示例:Prettier - Code formatter
      使用说明
      安装后,在项目配置中启用自动格式化,在settings.json中添加如下配置:
      notion image
      安装后,在项目配置中启用自动格式化,在用户,或者项目的settings.json中添加如下配置:
      示例二:Prettier - Eslint
      • 安装后,在项目配置中启用自动格式化,在settings.json中添加如下配置:
    • 项目中的相关配置文件参考。
      Mailchimp2. 纯CSS调整NotionNext样式
      Loading...
      ✨ 更新日志
      🚀 安装部署
      ✒ 写作指引
      🛠 站点配置
      📊 网站统计
      ⭐ 主题配置
      📩 评论插件
      🧷 外部插件
      🔊 站点订阅
      ⌨ 开发指引
      👨‍👦‍👦 联系方式
      🤝 合作共赢