V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Justin3go
V2EX  ›  分享发现

第三次重构个人博客(基于 Vitepress)

  •  1
     
  •   Justin3go · 101 天前 · 3296 次点击
    这是一个创建于 101 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原文内容:justin3go.com

    摘要:

    笔者在这篇文章中记录了自己第三次重构个人博客的过程,基于 Vitepress 进行了一系列的改进和优化。自 2022 年初开始使用 Vitepress 搭建博客,随着版本的更新,笔者逐渐感受到原有风格的不适,决定进行重新设计。本次重构的主要内容包括:

    1. 首页设计:采用简单的博客分页列表,利用 createContentLoader 提取文章摘要等信息。
    2. 部署与域名管理:将博客从 Github Pages 迁移至 Cloudflare Pages ,并更改 DNS 服务器。
    3. 国际化支持:实现 Vitepress 和评论系统 Giscus 的国际化,支持中英双语。
    4. 内容迁移:对博客文章进行迁移,生成摘要和标签,确保旧路径的兼容性以避免外链失效。
    5. 优化用户体验:自定义字体并进行预加载,提升页面加载速度。

    通过这些调整,笔者希望博客不仅在内容上丰富,同时在视觉和使用体验上也能给读者带来更好的感受。最终,笔者强调了博客设计对写作心情的重要性,认为整理环境能够促进创作灵感的流动。

    博客网站是开源的: https://github.com/Justin3go/justin3go.com

    第 1 条附言  ·  91 天前

    博客更新:新增了一个归档页面,大家有的我也要有!

    justin3go.com/archive

    54 条回复    2024-08-08 16:33:52 +08:00
    NavsSite
        1
    NavsSite  
       101 天前
    00 后,厉害了
    37Y37
        2
    37Y37  
       101 天前 via Android
    周末也更新了博客,主要是所有图片路径修改,折腾了一下,写了个检验程序,保证所有更改都正常
    Justin3go
        3
    Justin3go  
    OP
       101 天前
    @NavsSite #1 过奖了 hhhh🥰
    Justin3go
        4
    Justin3go  
    OP
       101 天前
    @37Y37 #2 迁移就是费力,东西太多容易出错,担心丢失外链,写个校验程序来机器化来判断
    37Y37
        5
    37Y37  
       101 天前
    @Justin3go #4 可以翻着看看,人肉检查下是不是有漏网之鱼 https://blog.ops-coffee.cn/
    1KTN90lKW9gVJ9vX
        6
    1KTN90lKW9gVJ9vX  
       101 天前 via Android
    我也有个博客 www.sl
    Justin3go
        7
    Justin3go  
    OP
       101 天前
    @hemingcn #6 这是什么牛逼的域名
    dford
        8
    dford  
       101 天前
    怎么这么快?
    fenglangjuxu
        9
    fenglangjuxu  
       101 天前 via Android
    看到楼上发域名 我也发个相关的 justgo.run
    superchijinpeng
        10
    superchijinpeng  
       101 天前
    中英文之间无间距
    michaeljackson
        11
    michaeljackson  
       101 天前
    我用的 ihewro.com 这家的基于 typecho 的
    retrocode
        12
    retrocode  
       101 天前
    @fenglangjuxu 还是我这个好一点 哈哈 https://foo.run
    Justin3go
        13
    Justin3go  
    OP
       101 天前
    @dford #8 啥快
    Justin3go
        14
    Justin3go  
    OP
       101 天前
    @fenglangjuxu #9 我还有个 jsgo.dev 的域名哈哈哈有点像
    Justin3go
        15
    Justin3go  
    OP
       101 天前
    @superchijinpeng #10 细节,确实该这样排版,下次写文章会注意的🤡
    Justin3go
        16
    Justin3go  
    OP
       101 天前
    flashBee233
        17
    flashBee233  
       101 天前
    不错,很简洁👍
    Justin3go
        18
    Justin3go  
    OP
       101 天前
    @flashBee233 #17 谢谢!🥰
    fenglangjuxu
        19
    fenglangjuxu  
       101 天前
    @retrocode 这个域名不错 抛开 run 我还有更好的 xing.ren yun.fan dong.ge hello.men 看你拿什么和我比🤣
    CHTuring
        20
    CHTuring  
       101 天前


    为啥跳转页面还有个 messge 提示~
    CHTuring
        21
    CHTuring  
       101 天前
    要不你用 Astro 再重构一次,Lighhouse 性能起码能到 100% 。虽然 VitePress 的 seo 也不错,但是起码套了个 Vue ,数据 HTML 看起来了也挺恶心的。
    cue
        22
    cue  
       101 天前
    蛮漂亮的,不过感觉日期有点太淡了我眼神不大好
    Justin3go
        23
    Justin3go  
    OP
       101 天前
    @CHTuring #20 这里从组件库 demo 里面 copy 过来的,我感觉还行就没删,是觉得提示太重了吗?
    Justin3go
        24
    Justin3go  
    OP
       101 天前
    @cue #22 故意淡化了一下,标题重要一些所以就想突出一下主题;
    后面会专门增加一个归档列表,那里日期时间就会更加重要一些
    Justin3go
        25
    Justin3go  
    OP
       101 天前
    @CHTuring #21 换技术栈还没想过,太麻烦了
    CHTuring
        26
    CHTuring  
       101 天前
    @Justin3go #25 无缓存加载,纯静态的博客,太大了。
    CHTuring
        27
    CHTuring  
       101 天前
    虽然说你有加载字体文件
    Justin3go
        28
    Justin3go  
    OP
       101 天前
    @CHTuring #27 主要就是这个中文字体文件太大了
    retrocode
        29
    retrocode  
       101 天前
    @fenglangjuxu #19 大佬 大佬, 秀啊
    XiaMuCoder
        30
    XiaMuCoder  
       101 天前
    https://weekly0.comm/

    链接多写了个 m
    laoertongzhi
        31
    laoertongzhi  
       101 天前
    老哥,怎么 vitepress 部署周刊网站啊,我也想弄一个。
    Justin3go
        32
    Justin3go  
    OP
       101 天前
    @XiaMuCoder #30 wc ,大意了啊🤡
    Justin3go
        33
    Justin3go  
    OP
       101 天前
    @laoertongzhi #31 周刊网站仓库在这里: https://github.com/Justin3go/FAV0

    部署的话实用 cloudflare ,配置如下:

    ![]( https://oss.justin3go.com/blogs/Justin3go_2024-07-31_16-47-00.png)
    Justin3go
        34
    Justin3go  
    OP
       101 天前
    ThomasChan
        35
    ThomasChan  
       101 天前
    vitepress 默认配置的 local minisearch 搜索中文有点儿不好用,最近刚研究过,可以参考 https://github.com/lucaong/minisearch/issues/201#issuecomment-2227591121
    zhengkk
        36
    zhengkk  
       101 天前
    怎么还有人折腾博客,感觉替代品很多啊
    Justin3go
        37
    Justin3go  
    OP
       101 天前
    @ThomasChan #35 感谢,后面花时间去研究研究
    Justin3go
        38
    Justin3go  
    OP
       101 天前
    @zhengkk #36 折腾也可以实践一些技术,博客算是比较方便的项目
    bug51
        39
    bug51  
       101 天前
    就是怕被别人把整个博客文章都爬下来了。目前没啥办法。
    Justin3go
        40
    Justin3go  
    OP
       101 天前
    @bug51 #39 爬呗,本来就是开源的
    subframe75361
        41
    subframe75361  
       101 天前
    @ThomasChan 那用啥,flexsearch ?
    ThomasChan
        42
    ThomasChan  
       101 天前   ❤️ 2
    @subframe75361 就还是 minisearch ,我说的研究的意思是指看了下 vitepress 源码怎么使用 minisearch 的,最后发现是分词的配置问题,在 vitepress 里像下边这样配置就可以了

    ```js
    ...
    export default defineConfig({
    ...
    themeConfig: {
    search: {
    options: {
    miniSearch: {
    options: {
    tokenize: (term) => {
    if (typeof term === 'string') term = term.toLowerCase();
    // @ts-ignore
    const segmenter = Intl.Segmenter && new Intl.Segmenter("zh", { granularity: "word" });
    if (!segmenter) return [term];
    const tokens = [];
    for (const seg of segmenter.segment(term)) {
    // @ts-ignore
    tokens.push(seg.segment);
    }
    return tokens;
    },
    },
    searchOptions: {
    combineWith: 'AND', // important for search chinese
    processTerm: (term) => {
    if (typeof term === 'string') term = term.toLowerCase();
    // @ts-ignore
    const segmenter = Intl.Segmenter && new Intl.Segmenter("zh", { granularity: "word" });
    if (!segmenter) return term;
    const tokens = [];
    for (const seg of segmenter.segment(term)) {
    // @ts-ignore
    tokens.push(seg.segment);
    }
    return tokens;
    },
    },
    },
    },
    },
    },
    ...
    });
    ```
    nagisaushio
        43
    nagisaushio  
       101 天前 via Android   ❤️ 1
    @Justin3go 中文字体建议按汉字词频做字体切分
    Justin3go
        44
    Justin3go  
    OP
       101 天前
    @nagisaushio #43 了解到了新知识,谢谢!❤️
    1rv013c6aiWPGt24
        45
    1rv013c6aiWPGt24  
       101 天前 via Android
    看看我的 simple blog
    yuanj.top
    Justin3go
        46
    Justin3go  
    OP
       100 天前
    @UncleCAT4 #45
    Tink
        47
    Tink  
       100 天前
    laoertongzhi
        48
    laoertongzhi  
       100 天前
    @Justin3go #34 非常感谢!
    Justin3go
        49
    Justin3go  
    OP
       100 天前
    @Tink #47 搞基男
    1rv013c6aiWPGt24
        50
    1rv013c6aiWPGt24  
       100 天前 via Android
    @Tink 你这个吊,
    dif
        51
    dif  
       99 天前
    @UncleCAT4 敦煌老乡?
    1rv013c6aiWPGt24
        52
    1rv013c6aiWPGt24  
       99 天前 via Android
    @dif 怎么说?哥们也是敦煌的?
    dif
        53
    dif  
       93 天前
    @UncleCAT4 必须的~~
    1rv013c6aiWPGt24
        54
    1rv013c6aiWPGt24  
       93 天前 via Android
    @dif 认识一下?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1772 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:37 · PVG 00:37 · LAX 08:37 · JFK 11:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.