通过版本控制管理不常更新的数据

例如博客的所有文章类型和所有文章,在没有新增文章的情况下这些数据是没必要每次请求都返回的。

可以把这些数据生成为js,在里边声明为const常量,这样就可以像静态文件一样避免重复请求了。

下面是一个小例子 catgegories.js

// categories.js
const categories = {
    "categories": ["a", "b", "c", "ddd"]
};

// 将categories对象暴露给全局作用域
window.categories = categories;

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body><h1>HTML 标签</h1>HTML 标签用于定义 HTML 文档中的不同部分。
    <ul id="category-list">
        <!-- 这里将动态添加 <li> 标签 -->
    </ul>
</body>
<script src="categories.js"></script>
<script>
    // 监听 categories.js 加载完成
    document.addEventListener('DOMContentLoaded', () => {
        // 确保 categories 对象已定义
        if (typeof window.categories!== 'undefined' && window.categories.categories) {
            // 获取 <ul> 元素
            const categoryList = document.getElementById('category-list');
            // 遍历 categories 数组
            window.categories.categories.forEach(category => {
                // 创建 <li> 元素
                const listItem = document.createElement('li');
                // 设置 <li> 元素的文本内容
                listItem.textContent = category;
                // 将 <li> 元素添加到 <ul> 元素中
                categoryList.appendChild(listItem);
            });
        } else {
            console.error('categories 对象未定义或缺少 categories 属性');
        }
    });
</script>
</html>

gen_json_data_js.py

import json

def gen_json_data_js(const_value_name, data, file_name):
    js_data = '''
// categories.js
const {0} = {1};

// 将categories对象暴露给全局作用域
window.categories = categories;
'''.format(const_value_name, json.dumps(content))
    file = open(file_name, "w", encoding="utf-8")
    file.write(js_data)
    file.close()

if __name__ == '__main__':
    categories = ["a", "b", "c", "ddd"]
    content = { "categories": categories }
    gen_json_data_js("categories", content, "categories.js")
文章目录