NotionNext项目运行原理

category
tags
type
status
slug
summary
date
Last edited time
Nov 19, 2024 05:04 AM
icon
password
状态
天气
星期
日期

关于本篇

在这里我简单介绍一下NotionNext项目的运行原理,以及Notion、Vercel、NotionNext三者的关系。

关于解决方案

传统的网站建设,可能会用到的方案:
  • 首先:租一台云服务器
  • 其次:将网站的代码,例如WordPress或自研的网页上传到到服务器中;
  • 然后:在服务器中自行部署一个数据库,或者向云服务商购买一个数据库。
  • 接着:以服务器为核心,运行代码,并从数据库中读取网页数据。
  • 最后:购买一个域名,将域名绑定在这台服务器的ip地址上。

对比

NotionNext的站点本质也是一样的,只是做了元件的替换,即:把服务器、代码、数据库换了别的替代方案。
  1. 首先:注册了一个Vercel云平台:主要提供CPU算力、内存空间、运行代码的环境。
  1. 其次:注册了一个Github平台:主要提供协同开发能力、提供代码存储与版本管理。NotionNext的代码就可以托管在平台进行维护。
  1. 然后:注册了一个Notion笔记:将文字、图片等内容存储在笔记中,
  1. 接着:以Vercel为核心,从Github中拉取最新版本的代码、编译运行、并从Notion中读取网页数据。
  1. 最后:将购买的域名,解析到Vercel云平台提供给我们的服务器地址,Vercel负责将域名进一步解析到我们的项目上。
 

小结

这里我们可以看到,Vercel替代了服务器的概念Notion充当一个数据库NotionNext则是核心的代码
按我的个人习惯来说,之所以选用这种替代方案,取决于三个痛点:
  1. 写作:用Notion写笔记的方式来写文章更加舒适而且长远可持续。用公众号编辑、WordPress后台、用第三方博客平台发布页来写文章,要养成习惯太难。
  1. 维护:服务器的安全、升级,数据库的备份、维护,需要耗费一些精力;更可怕的是这种折腾服务器的成就感会让人上瘾,你会不断地从搭建服务器、搭建网站的过程中获得”甜头“,从而沉迷于折腾软件技术。
  1. 费用:服务器、域名、我只想发布博客文字,有必要那么贵租一年的服务器吗?

工作流程

接下来,看看这个项目的首次安装、运行,与更新、升级配置过程中,发生了哪些事?
 

首次安装

Vercel部署NotionNext》这篇教程详细介绍了部署的方法;部署的过程发生了什么呢?
 
  1. 用户首先要复制我的Notion数据库作为模板
    1. Notion充当数据库的角色,所有支持的表头和字段,都已经在NotionNext代码中固定了,如果表头字段不一致,将导致数据无法被正常读取。
      用户复制模板的这一过程就相当于在Notion创建了一个属于自己的、NotionNext能识别的数据库。
  1. 用户注册Github平台,并且复制一份NotionNext代码
    1. 代码是核心,但是如何做到所有用户都能公开拉取到代码,并且还能随时更新代码,甚至一起参与到代码的开发呢?
      Github就是一个程序员们最爱的代码协同管理平台,他就类似于腾讯云文档这样的软件,大家都可以参与一个文档的在线编辑,还可以有版本管理的功能,可以记录并回退到任意一个版本中。
  1. 注册一个Vercel平台
    1. 前面已经解决了代码和数据库的问题,最后就是解决服务器的问题。
      登陆Vercel后,你可以选择将代码上传到Vercel平台中进行部署。但Vercel支持一个更强大的功能,就是直接与你的Github仓库建立实时链接。
      Vercel将24小时监听你的Github仓库代码,一旦发生更新或改动,它会自行到您的仓库中拉取最新代码,进行打包编译。
      从而实现:你无需关注服务器与部署,只要管好自己在Github中的代码即可。打个比方,这时候你是公司的开发人员,只负责代码规则;服务器的运维任务则交给了一个24小时在线的团队管理。

NotionNext的运作过程

Vercel 云计算运行 NotionNext代码,不断从你的Notion数据库拉取文章,排版成网站。Notion数据发生变化后,网站数据也会跟着改变。
如果用纯技术的语言来描述可能比较晦涩难懂,我接下来用打比喻的方式来介绍这个项目的工作原理。

NotionNext小店的比方

我们把NotionNext搭建的网站比喻成一个小店,店里有招牌、有门头、有客流。客人来了,可以查看店铺的门面、菜单、并选择要点的菜。
notion image
这个店铺里只有仓库,没有厨房,菜都是从Notion那边进的货;Notion就像是是中央厨房,提供预制菜品
notion image
店里有很多“店小二”,店小二是由Vercel云平台提供的CPU、硬盘、内存等构成的员工,他们听从门店的指挥、按照代码设计好的店规办事。当客人点菜时他们会去将Notion进货的预制菜,呈在盘子里给客人上菜。NotionNext默认提供多种盘子的主题、例如Hexo、Gitbook等。
notion image

NotionNext运行的特点

NotionNext是一个被动式的店,店铺首次开张时就去Notion把每种菜都进一批货,把这批菜品就保存在仓库里(仓库比喻的是Vercel的硬盘或内存)。
而没客人时它就一动不动,它不会主动去Notion里取最新鲜的热菜,店铺里为了节约成本甚至没有热菜用的微波炉。
为什么?因为没必要,都没客人还一直热菜干嘛?(其实就是懒)这样的好处就是节能减排。
如果用户进店、突然点某道菜怎么办?
此时,店小二会去仓库里找这道菜的库存,看看是否有没有上次取来的版本:
如果有,就先把这道菜端出来,呈在盘子里拿给用户,顺便通知后台派另一个“店小二”,去Notion取一下最新的菜,取回来后放在仓库里备用。
如果没有,就会让用户等一会儿,让小二加急去取菜,取到了马上给用户上菜。
那这样用户访问的体验会不会不好?有的上菜慢,有的菜都凉了、或者不新鲜。
这就不用操心了,上一个客户来点菜时,小二去取来的新鲜菜,下个客户来就能刚好能直接上,这样一来,被客户点的频繁的菜,更新的也勤快;客户不点的菜,即使是新鲜的热菜又有何用?更何况用户也品尝不出菜是否新鲜。
说完这话,你肯定觉得这点老板是奸商、但这就是事实。
若你研发了一道新菜在Notion里,想让NotionNext店铺的客户、第一时间能品尝到新鲜的版本要怎么做?
很容易,自己点一单!你作为客户,到店里,指名要点那道菜即可,小儿会帮你去备好菜。类似于给自己刷单。
另外,还有一种办法,就是店铺打烊并重新开张,让小二去重新进货(这就是在vercel后台redeploy的过程)。

更新站点

前面讲到NotionNext这家店的上菜流程,接下来讲讲和Vercel、Notion的合作关系,也就是店铺的升级迭代。
店铺开久了,难免想升级装修门面,或者培训员工提升一下工作效率。这时候发生了什么呢?

NotionNext加盟店

NotionNext其实一个连锁加盟品牌。
notion image
中央的品牌管理、运营中心在tangly的仓库中,tangly日常负责规划设计NotionNext的工作流程、打造NotionNext旗舰店铺的装修样板。并把这些跑通的流程记录在运营手册,也就是代码中。
⚠️
NotionNext店铺的运营手册指的就是项目的代码。
 
任何人都可以通过复制手册的方式免费加盟。
当有新版的NotionNext店铺运营手册出来后,其它加盟商可以获取最新的“装修方案”、“员工培训手册”、从而带回去提升自己的门店运营效率。
 
这时候作为加盟商要怎么升级自己的门店呢?
 
首先,要获取最新的运营手册,手册在tangly的github仓库中,通过同步代码的方式就可以获取最新的手册。我们的所有加盟商终生享有免费同步手册的权限。
 
需要注意的是,这时候有的加盟商会更新手册失败,这是因为他们在运营自己的店铺时,对手册做出了一些个性化的修改,从而更加符合自身的使用习惯,从而导致合并手册的过程中出现分歧。
这种现象是常见的,毕竟不同地区、口味不同,有的菜谱偏咸,有的菜谱偏甜,不可能一个方案适用所有用户。
 
通常这里会有几种处理方法;
⚠️
这里的手册比喻的是你的Github代码。
  1. 加盟商备份自己的手册,先完全照搬Tangly的手册运营店铺覆盖自己当前的手册、确保店铺能正常运营。然后再按照自己备份的个性化手册,一点点微调新版的手册内容。
  1. 资深专业的职业经理人,可以做到一边合并手册,一边核对条款的冲突,直接合并成最终版手册。
  1. 请总部过来指导,tangly会根据加盟商自定义手册的方式,为加盟商量身定做出最适合加盟商的版本。
 
💡
加盟商只需要做好手册的更新,Vercel会自动派店小二来按照手册装修店铺、培训小二。

一些优化的体验

有的加盟商发现,更新手册时遇到很多冲突很麻烦,但是又想定制化,该怎么办?
NotionNext 支持你直接在自己的Notion数据库中定制手册,也就是NOTION_CONFIG
 
店小二除了听从NotionNext店铺的规则外,也会从Notion中取来NOTION_CONFIG作为本地化的规则,且它的优先级高于总店的规则。
 
NOTION_CONFIG中可以支持用户配置自己的装修样式和运行规则,如果不希望再升级店铺时本店手册与总店手册冲突,可以尝试一下。
 

最后

感谢您的阅读,文章暂时更新到这里,后面有想到新的内容再更新。
Prev
Vercel绑定自定义域名
Next
Vercel部署多个Github网站
Loading...
Article List
NotionNext-快速免费建站
✨ 更新日志
🚀 安装部署
✒ Notion教程
🛠 站点配置
⭐ 主题参数
📊 网站统计
📩 评论插件
🧷 外部扩展
⌨ 开发教程
🔊 运营教程
👨‍👦‍👦 获取帮助