gorush

command module
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 20, 2023 License: Apache-2.0 Imports: 2 Imported by: 0

README

GoRush

License

Language

😀1. 介绍

一个为开发者自由、快速、便捷地构建网站服务的网站框架。

💘2. 目的

构建这个项目的本意是提供一种方便、快速的自由构建网站方式,让使用者能够根据自己的需求diy网站,并且力图将门槛降到最低。但是,即使对于一个简单的静态网页来说,基本的html和css技能是必要的。

目前个人对该项目的构想经常变化,很难想象怎样的一种方式能够更好地达成这一目的,而最终成果也十分令人期待⭐

✨3. 下载

安装最新版本的脚手架

go install github.com/levinion/gorush@latest

🔥4. 使用

4.1 命令行
gorush help       # 获取帮助信息

gorush get        # 初始化资源——仅需在项目初始化时调用

gorush build      # 从模板构建 docs 公开文件夹

gorush serve      # 构建和运行服务——该命令已包括 build 流程

gorush clean      # 快速清理项目文件

gorush new        # 新建文章或页面

具体使用方法请见 gorush help

4.2 项目结构

使用 gorush get 初始化得到项目结构如下(仅显示目录):

.
├── assets                 # 静态资源文件夹
│   └── css
├── config.toml            # 配置文件
├── content                # 用户工作区
│   ├── pages              
│   └── posts
│       └── drafts         # 草稿,构建时将默认忽略此处的内容
├── License                # 默认使用的License
├── README.md              # 空README文件
├── static                 # static文件夹内资源将以原样生成在docs文件夹根目录,暂不能存在目录
└── templates              # 模板文件夹,用户将在此自定义页面样式
    ├── common             # 通用的一些模板,包括导航区、头文件等
    ├── pages              # 全部页面模板
    └── posts              # 文章的一些模板,默认为Basic
        └── Basic

4.3 配置文件

配置文件默认为config.toml,位于项目主目录下,在程序运行前需要先行建立配置文件。若已使用了gorush get将生成下列的配置文件:

[pages]
contentOnlyPages=["about"]  //基础页面列表

[posts]
excludeDirs=["drafts"]      //文章构建所忽略的目录

[server]
addr="localhost:9090"       //监听地址
4.4 项目建立流程
  1. 新建文件夹,在该文件夹下进行先期准备:
git init        # 若不使用git请跳过

gorush get      # 初始化项目
  1. content/posts 文件夹中创建一些有价值的内容,建议只使用 gorush new 命令创建。该命令将自动生成创建时间等元数据。具体使用方法如下:
# 创建一个新文章
gorush new 分类/文章名称  

请一定注意在新建文章时分配其所在的分类,否则将直接在posts文件夹下生成,构建时将忽略对其的处理;你当然也可以在构建前将其移动到合适的文件夹中。使用 -p--page 指定创建一个新页面。

# 创建一个新页面
gorush new -p 页面名称  
  1. 使用 gorush serve 在浏览器对应的端口预览,默认为"localhost:9090"

  2. 若您想要发布到平台上(如 Github Pages),在确认无误的情况下也可以直接使用 gorush build 构建。

  3. 警告:请不要在任何情形下操作 docs 文件夹,因为该文件夹将在运行 gorush servegorush build 时自动删除和重构。对想要更改网页内容的用户来说,应修改 templates 下的模板文件。docs文件夹应只作为发布用途使用。

4.5 工作流程
mkdir xxx & cd xxx                       //新建工作文件夹
gorush get                               //初始化项目
gorush new {{category}}/{{post}}         //新建文章
writing ...                              //具体文章的写作过程
gorush serve                             //启动服务并在浏览器中预览

❤️5. 开发计划

  • 提供使用命令行创建项目的脚手架方式。
  • 重构项目结构,提供用户友好型文件组织方式。
  • 自定义、方便排查的日志系统
  • 脚手架新建项目结构的完善
  • 引入gin框架以优化流程使用 http/template 进行解析
  • 优化错误处理和日志系统
  • 生成静态网页,方便博客托管
  • 实现文章分类

...

6. 设计理念和实现细节

6.1 GoRush的设计理念

由模板生成页面,模板为社区上传,项目中只保留基础模板(二进制嵌入)。

文章作为内容的载体,其目的应当是清晰的;因此使用单级标签——也就是唯一分类保证其内容的纯洁性。在我使用Hugo时(Hugo是一个非常优秀的框架),厌倦了标签和分类的分配工作。当你习惯了单分类,你会发现这样的方式是简洁高效的。

用户应当是内容的提供者,具有部分的自由性,即: - 用户所能定义的数据由开发者决定 - 用户通过开发者提供的构建文章命令开始写作 - 开发者应当给出标准的接口供模板编写者使用 因此,开发者提供的只能是最基础的接口,但要能够将全部写作过程概括其中。

6.2 具体实现方法

  1. 使用 gin 框架,利用用户所提供内容填充模板(后选择改用 html/template 替代 gin ) 模板放在同一文件夹内,具体结构如下

    -project
        -templates
            -template1
                -index.html
            -template2
                -index.html
            ...
    
  2. 使用 Cobra 构建命令行程序

    • 命令行能够新建文章,使用户统一操作
    • 命令行能够导入基础模板,使未引入社区模板(未来目标)的用户能够实现基本写作需求
  3. 选用 GoldMark 作为 Markdown 解析工具

  4. 使用 embed 进行静态资源嵌入

  5. 主要的工作流均由Builder完成,它负责文件的解析读取、构建(静态化)、路由的相关工作,其中文件解析和存取采取并发机制,拥有较好的性能。

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
embed

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL