练手博客程序:OrangeRedSeaweed

首先是仓库地址: hengshizhi/OrangeRedSeaweed: 轻量级博客 (github.com)

本项目提出于2023年6月4日,本质是为了更好的自定义自己的博客提出的非商业练手项目(用自己熟练的语言:python)

愿景

1.代替我现在用的屎山WordPress

2.可以使用python灵活的构建

3.可以自己写主题

4.顶级模块化

5.高效异步的响应

6.前后端分离

7.反爬虫(使爬取成本变高)

8.希望尽量拒绝屎山,避免”牵一发动全身“的情况,做到每个模块互相隔离,尽量使用面向对象的编程思想进行开发(以前习惯函数式)

简介

运用了自己的API开发框架automatic-octo-dollop(没开源)来进行开发,基层框架为Sanic

在automatic-octo-dollop的基础上加入mod和用户的功能,基于其他用户数据(也就是非核心数据)进行博客的数据处理

主要概念

模组(mod)

每个模组有独立的功能,准确来说,OrangeRedSeaweed 就是基于 automatic-octo-dollop and mod function and user function 上的mod开发出来的,所以 OrangeRedSeaweed 的主体就是mod

在这里可以利用 mod 管理 mod ,可以利用 mod 创建 API ,可以利用 mod 写出主题功能….可以利用 mod 构建任何 web 应用(到时候会加入 ws 接口)

mod的核心调用代码也就下面这些

# /mod/mod.py
# Mod mechanism entry
import importlib
from sanic.response import text
import PathInfo as PathInfo

def modlists() -> dict:
    '''mod information list'''
    return PathInfo.Dict('./mod/mods','./')
def ImportMod(ModName):
    b = importlib.import_module('.mods.{ModName}.main'.format(ModName=ModName), __package__)
    return b
def main(get_or_post,EnableSession,rep,**para):
    ''' 
    Main function when mod is actively called 
    Applied to HTTP API
    '''
    ModName = get_or_post('ModName')
    ApiName = get_or_post('ApiName')
    if (ModName == None or ApiName == None):
        return rep(text('Missing "ModName" or "ApiName" parameters',status=400))
    else:
        b = ImportMod(ModName)
        return b.main(api = {})[ApiName](get_or_post,EnableSession,rep,**para)

def AtRuntimeForTheFirstTime():
    '''
    This function is called every time the program runs
    used to load the code for all mod program runtime
    '''
    for k,v in modlists().items():
        try:
            ImportMod(k).AtRuntimeForTheFirstTime() # Functions that will be executed every time the program runs mod
        except:
            pass # No self starting function

AtRuntimeForTheFirstTime()

可以看到,原生的mod功能只有HTTP调用和程序启动时调用mod的一个函数

所以,mod 的其他信息(如 logo ,简介等)都是一个叫做 “mod” 的 mod 规定的

modAPI调用方式

"/api/mod?ModName={ModName}&ApiName={ApiName}&...OtherParameters"

ModName 是 mod 的名字

ApiName 是 modAPI 的名字

前端(front_end)

这里放有程序的前端,前端的调用逻辑很简单,和普通的web服务器一致

我们的mod可以更改前端,使其更加丰富

“主题”mod也是在每次启动的时候更改前端为主题里面的文档

模组的JS部分(modjs)

虽然这个功能是“mod”mod里面的,但是我认为还是应该说一下

它mod的js部分,通常包括一些modAPI的SDK

例子:

var helloworld=null; // This module does not have modjs

//Modjs v1.0
//All rights reserved by Star Weaving
//Modjs is used to load the JavaScript code for mod

结尾

这个只是一个设想,部分已经实现

{
'title' :'练手博客程序:OrangeRedSeaweed',
'Current page link''https://www.df100.ltd/508.asp',
'author''星姮十织',
'copyright': '维度前沿|Dimension Frontier © 2020-2023. 版权所有',
}

评论

  1. 倦意
    3月前
    2023-6-18 10:38:48

    大佬大佬

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇