不用服务器也能搭博客?Docsify + cpolar让技术文档秒变公网站点

不用服务器也能搭博客?Docsify + cpolar让技术文档秒变公网站点

文章目录

前言

Docsify 是一款轻量级的 Markdown 文档网站生成工具,无需提前编译,写完内容保存后就能实时预览效果,特别适合程序员、技术博主搭建 API 文档、开发指南或个人博客。它支持 Emoji 表情、全文搜索和多浏览器兼容,用简单的 Markdown 文件就能构建结构清晰的网站,省去了复杂的建站配置。

用 Docsify 写博客时,最直观的感受是 “零负担”—— 不用操心主题代码,专注内容本身即可。不过要注意,默认的侧边栏和导航栏需要手动配置文件,初期可以先用默认模板,熟悉后再慢慢定制,避免一开始就陷入配置细节影响创作节奏。

但 Docsify 默认只能在本地或局域网内访问,这就带来了不少麻烦:比如想给异地的同事看文档,得先打包发送文件;出门在外突然想修改博客内容,只能等到回电脑前才行;更没法直接把链接分享给网友,限制了内容的传播范围。

好在 Docsify 可以和 cpolar 内网穿透工具配合使用,解决了局域网的限制。通过 cpolar 生成的公网地址,不管是在公司、家里还是路上,只要有网络就能访问和编辑文档,团队成员也能实时查看更新,既不用购买云服务器,也不用设置复杂的路由器,让技术博客真正实现 “写完就能公开” 的便捷。

本文主要介绍如何在Windows环境本地部署 Docsify 这款以 markdown 为中心的文档编辑器,并即时生成您的文档博客网站,结合cpolar内网穿透还能将博客一键发布至公网允许所有人访问,无需公网IP,也不用设置路由器那么麻烦。

image.png

接下来,讲解如何在本地部署Docsify。

1. 本地部署Docsify

本篇文章安装环境:Windows10

Docsify 项目github地址:GitHub - docsifyjs/docsify: 🃏 A magical documentation site generator.

Docsify官方文档教程:https://docsify.js.org/#/zh-cn/

准备工具: node.js、Typora、cpolar内网穿透

Node.js (官网):https://nodejs.org/zh-cn

Typora(官网):https://typoraio.cn

首先查看node.js是否已安装

node -v 

查看npm是否已安装

npm -v 

如未安装,进入到node.js官网下载安装

image.png

安装完后,接下来需要安装Docsify本地全局工具

npm i docsify-cli -g 
e1ff9d2b834521d989a76277c716543.png

初始化Docsify本地项目

docsify init ./docs 
afc7abd1246c895e5fffbbcaeb2394b.png

启用本地网页预览

docsify serve docs 
3cf760f7ed5f4bc7874375bad2da234.png

2. 使用Docsify搭建个人博客

打开 此电脑——C盘——用户——文档——docs文件夹

初始化成功后,可以看到 ./docs 目录下创建的几个文件

  • index.html 入口文件
  • README.md 会做为主页内容渲染
  • .nojekyll 用于阻止 GitHub Pages 忽略掉下划线开头的文件

直接编辑 docs/README.md 就能更新文档内容,当然也可以[添加更多页面。

c4126a875c7b3e3faad2d3717edd49e.png

打开 README文档,做为主页内容渲染

cd910652eec24ecfdf341116a761c65.png

在这个文档中进行修改,设计自己的个人博客,修改标题,添加文章内容,并保存

bf069889f8f2288a98b21ac07f8d651.png

制作一个个人文档,我们只需要配置以下这几个基本文件就可以:

文件作用文件
基础配置项(入口文件)index.html
封面配置文件_coverpage.md
侧边栏配置文件_sidebar.md
导航栏配置文件_navbar.md
主页内容渲染文件README.md
浏览器图标favicon.ico

还有很多配置项可以参考docsify文档中的定制化-配置项—小节,定制的东西越多,维护的难度就越大。侧边栏、导航栏和封面都建议采用默认的文件渲染:

这里举例官网的封面配置文件

封面配置文件(_coverpage.md)

封面的生成同样是从 markdown 文件渲染来的。开启渲染封面功能后在文档根目录创建 _coverpage.md 文件。渲染效果如本文档。

index.html

<!-- index.html --><script> window.$docsify ={ coverpage:true}</script><scriptsrc="//cdn.jsdelivr.net/npm/docsify/lib/docsify.min.js"></script><!-- _coverpage.md --> ![logo](_media/icon.svg) # docsify <small>3.5</small> > 一个神奇的文档网站生成器。 - 简单、轻便 (压缩后 ~21kB) - 无需生成 html 文件 - 众多主题 [开始使用 Let Go](/README.md) 
image-20240929161635728

继续回到我们刚才搭建的页面,打开一个新的浏览器,输入localhost:3000,或者本机IP地址:3000

7de4e88bfaefade2c91d81e4330f7b1.png

这样我们就在本地搭建了一个简单的个人文档博客,博客排版风格也可以自己随意设计,但是目前我们已经在本地搭建好了博客网站,如果没有公网IP的话,只能在本地局域网环境使用,有一定的局限性。如果出门在外想远程访问使用的话,可以结合cpolar内网穿透生成公网地址,免去了本地重新部署过程,只需要使用公网地址直接进就可以访问本地部署的Docsify,随时管理网站。

3. 安装Cpolar内网穿透工具

下面是安装cpolar步骤:

Cpolar官网地址: https://www.cpolar.com

点击进入cpolar官网,点击免费使用注册一个账号,并下载最新版本的Cpolar

img

登录成功后,点击下载Cpolar到本地并安装(一路默认安装即可)本教程选择下载Windows版本。

image-20240319175308664

Cpolar安装成功后,在浏览器上访问http://localhost:9200,使用cpolar账号登录,登录后即可看到Cpolar web 配置界面,结下来在web 管理界面配置即可。

img

4. 配置公网地址

接下来配置一下本地 Docsify 的公网地址,

登录后,点击左侧仪表盘的隧道管理——创建隧道,

创建一个 个人博客网站 的公网http地址隧道:

  • 隧道名称:可自定义命名,注意不要与已有的隧道名称重复
  • 协议:选择 http
  • 本地地址:3000
  • 域名类型:免费选择随机域名
  • 地区:选择China VIP

点击创建

0a463e72c4860a962f64eb3fa210666.png

隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式,分别是http和https。

940ea832e2141f6a127b4d8b8e95791.png

使用任意一个上面Cpolar生成的公网地址,在电脑或任意设备在浏览器进行登录访问,即可成功看到 本地博客网站 界面,这样一个可以远程访问的公网地址就创建好了,使用了Cpolar的公网域名,无需自己购买云服务器,即可在公网访问本地部署的服务了!

9305a29ab0db32df574a24a17493737.png

5. 配置固定公网地址

我们接下来为其配置固定的HTTP端口地址,该地址不会变化,方便分享给别人长期查看你的本地服务,而无需每天重复修改服务器地址。

配置固定http端口地址需要将cpolar升级到专业版套餐或以上。

登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称。本教程中我创建的是二级子域名是 myhugo1,大家可以自定义创建。

ccefd68508b2e258b4c065e1c87ebc8.png
cb95c941b05467edfa639f21c63ada7.png

返回登录Cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道 myblog ,点击右侧的编辑:

image.png

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名

点击更新(注意,点击一次更新即可,不需要重复提交)

19340e2de3126b0d8fb7928cff5e3ad.png

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了固定的二级子域名名称的域名:

d4175ee6fc3f1824ac91a005d658a9f.png

最后,我们使用固定的公网地址在任何浏览器打开访问,可以看到成功访问使用Docsify搭建好的本地博客网站,这样一个固定且永久不变的二级子域名公网地址就设置好了。

8cb52856d28799785a4f8ab0d3ca9cc.png

以上就是如何在Windows系统电脑本地使用Docsify搭建一个博客网站,并结合cpolar内网穿透工具实现一键发布公网随时随地远程访问的全部流程。感谢您的观看,有任何问题欢迎留言交流。

**结尾:**当 Docsify 的即时编辑能力遇上 cpolar 的公网访问功能,技术文档的创作与分享变得前所未有的顺畅。这种组合不仅降低了个人博客的搭建门槛,也让团队协作中的文档同步更高效,或许这就是轻量化工具带来的实用价值。

cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站

Read more

C++ 游戏开发:从零到英雄的进阶之旅

C++ 游戏开发:从零到英雄的进阶之旅

在当今数字化时代,游戏开发已然成为极具吸引力与挑战性的领域。C++ 作为游戏开发中极为常用的语言之一,凭借其高性能和强大功能,长久以来都是游戏开发者的心头好。若你对游戏开发满怀热忱,却不知如何起步,这篇博客就将为你揭开 C++ 游戏开发的神秘面纱,引领你踏上从新手到高手的进阶之路。 一、为什么选择 C++ 进行游戏开发? 在游戏开发的广袤天地里,编程语言的抉择至关重要。C++ 以其独有的优势,成为众多开发者的不二之选: (一)高性能 游戏开发过程中需要处理海量的实时计算任务,涵盖图形渲染、物理模拟以及用户输入响应等关键环节。C++ 具备直接访问硬件的能力,能够极为高效地利用系统资源,切实保障游戏运行的流畅性。以处理复杂的 3D 场景渲染为例,C++ 能够快速对大量的顶点数据、纹理信息进行处理和计算,精准地将虚拟的 3D 世界呈现在玩家眼前,其性能优势在这种场景下展现得淋漓尽致。 (二)强大的功能 C++ 全力支持面向对象编程(OOP),这使得开发者能够通过类和对象来有条不紊地组织代码。比如在开发一款角色扮演游戏时,我们可以创建 “角色” 类,

By Ne0inhk

构建高并发AI服务网关:C++与gRPC的工程实践

随着AI服务在企业中的规模化部署,如何高效、可靠地将多个异构AI模型集成到统一的服务架构中,成为后端工程师面临的重要挑战。本文介绍基于C++与gRPC构建高并发AI服务网关的完整实践方案,涵盖架构设计、性能优化、容错机制等关键环节。 1. 问题背景:AI服务部署的挑战 1.1 现状分析 典型的AI服务部署面临以下痛点: * 异构环境:PyTorch、TensorFlow、ONNX等多种框架并存 * 资源竞争:GPU内存管理复杂,模型加载/卸载开销大 * 服务治理缺失:缺乏统一的路由、监控、熔断机制 * 协议不统一:REST、gRPC、自定义TCP协议混合使用 1.2 网关核心需求 * 支持每秒万级请求的高并发处理 * 99.99%的可用性保证 * 平均响应延迟<50ms(含网络开销) * 支持动态模型更新与版本管理 2. 架构设计 2.1 整体架构 ┌─────────────────────────────────────────────────┐ │ 客户端请求

By Ne0inhk
基于探索C++特殊容器类型:容器适配器+底层实现原理

基于探索C++特殊容器类型:容器适配器+底层实现原理

前引:容器适配器(Container Adapters)是C++标准库提供的一些特殊容器,它们基于已有的顺序容器(如vector、deque、list)实现,但提供了不同的接口以满足特定的数据结构需求。容器适配器只提供特定操作,隐藏了底层容器的部分功能。主要有三种:stack(栈)、queue(队列)和priority_queue(优先队列) ,我们一起来看看吧! 目录 适配器介绍 三大容器适配器 特性讲解 stack的底层实现 类模板定义 入栈 出栈 获取栈顶元素 判断栈空 获取栈元素 效果展示 queue的底层实现 类模板定义 入队列 获取队头元素 获取队尾元素 出队列 获取队列元素个数 判断队空 效果展示 适配器介绍 容器适配器是C++标准库提供的特殊容器类型,它们基于现有顺序容器实现,但提供受限接口和特定行为。它们不是完整的容器,

By Ne0inhk
Re:从零开始的 C++ 入門篇(五)类和对象·第二篇:构造函数与析构函数

Re:从零开始的 C++ 入門篇(五)类和对象·第二篇:构造函数与析构函数

◆ 博主名称: 晓此方-ZEEKLOG博客 大家好,欢迎来到晓此方的博客。 ⭐️C++系列个人专栏: 此方带你玩转C++_晓此方的博客-ZEEKLOG博客  ⭐️踏破千山志未空,拨开云雾见晴虹。 人生何必叹萧瑟,心在凌霄第一峰 0.1概述&前言         从本文会开始,此方会为大家带来类的默认成员函数的内容。该方面是C/C++类和对象篇章最难以理解的部分,构造函数和析构函数分别取代了C语言的Init函数和destory函数,大大提升了运行效率。默认成员函数的学习将为后续内容打下深厚的基础,本文讲解深入骨髓,细节无微不至,希望看完后能让你对这两者有深入的认识。 一,类的默认成员函数 定义:      默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。 一个类,我们不写的情况下编译器会默认生成以下6个默认成员函数:        需要注意的是这6个中最重要的是前4个。最后两个取地址重载不重要,我们稍微了解一下即可。其次就是C++11以后还会增加两个默认成员函数,移动构造和移动赋值,这个我们后面再讲解。默认成员函数很重要,也比较复杂

By Ne0inhk