以EJS为基础的高效静态网站搜索引擎
起因
在使用 hexo 作为博客框架,采用 redefine 作为布局框架的时候我感觉在一些地方非常不方便,尤其是每次写完新 post 就要推送一大坨变更,因为每篇 post 之间的耦合性太强,在渲染的时候每篇博客的很多细节都要改,这样就导致一个问题,每篇 post 没有专属于自己的推送记录,就无法通过这个过程为每次更新的内容做标注,如果想要找到之前的内容大概和什么有关,只有 tag category 和 post 的名字可以用于分辨,很显然这并不足够,我不想给每篇 post 写一堆很细的 tag,所以,我决定为此开发一个静态网站可用的专属搜索引擎。
实现方案
暂定的方案是用 EJS 在解析 md 的内容时,加一些额外的语法分析,将某些特殊的标记识别出来,生成一个额外的 html 文件,这个 html 文件将会是一个辅助记录,用户只需要在写 post 的时候为他们较为细粒度的关键词添加这样的标记,就会被自动捕捉,加入到这样一个关键词图谱,然后用户可以在这里查看自己添加过的关键词,或者,通过一个伪搜索引擎(本质上只爬取该图谱上的内容),搜索用户想要的东西(曾经标注过的)。
EJS配置参数(以对象形式作为参数提供给api)
cache
:缓存ejs函数编译结果,但代价是内存,我估计要用filename
:指定模板路径root
:指定模板所在目录(上一个参数为相对路径)views
:模板文件中用到的其他模板文件的路径context
:直接传递数据compileDebug
:debug instrumentationclient
:指定为客户端可执行的js函数debug
:额外调试信息strict
:严格模式with
:js的较宽松的对象作用域,默认开启rmWhitespace
:去除所有不必要空格escape
:通过直接转义为html防止xss攻击(js注入)outputFunctionName
:为默认的匿名函数调用指定名称async
;异步,感觉一般用不着,除非有比较复杂的动画逻辑
EJS分隔符
这个<%
是最基础的,不输出js函数到html,<%=
这个 常用 会输出到html,默认都是转义的(不专义的是<%-
,终止符是%>
,两个位置的分隔符都可以通过加_
吃空格,或者加-
吃换行(这个仅终止分隔符可用)。
2025.1.7
我理解了hexo的设计哲学,还有我需要做的事情,我不打算对这个框架进行定制,我打算对hexo-renderer-marked添加额外的特殊标记功能,这意味着从更基础的层面推陈出新。
- Title: 以EJS为基础的高效静态网站搜索引擎
- Author: tobegold574
- Created at : 2025-01-06 11:07:16
- Updated at : 2025-01-07 14:50:21
- Link: https://tobegold574.me/2025/01/06/以EJS为基础的高效静态网站搜索引擎/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments