前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >这是我见过最好的轻量级笔记系统!

这是我见过最好的轻量级笔记系统!

作者头像
Java极客技术
发布2024-05-11 10:31:51
900
发布2024-05-11 10:31:51
举报
文章被收录于专栏:Java极客技术Java极客技术
今天,推荐一个系统项目,第一次使用就有点上头,爱不释手,必须要推荐给大家。 这是我目前见过最好的系统项目。功能完整,代码结构清晰。值得推荐。

📚 项目介绍

最近在逛网站的时候发现一个不错的开源项目,觉得不错,值得拿出来和大家分享下。 🔥本项目系统是一款面向个人的轻量级笔记系统,提供多种维度的数据管理功能,致力于把个人从信息过载中解放出来。 它主要有如下特性
  • 拥有丰富的数据管理能力,支持多种笔记格式以及文件管理功能
  • 默认提供了一些常用的工具,同时提供扩展能力,用户可以编写各种插件满足自己的需求
  • 跨平台,支持Windows、Mac、Linux三大平台,可以在云服务上部署,也可以在本地运行
  • 100%自由的数据控制权,可以运行在多种数据库环境中
  • 支持小规模的多用户,面向多用户的商业场景使用请谨慎

目前xnote定位是一个面向个人使用的小型笔记产品,不会重点投入以下方向

  • 大规模的多用户支持
  • 多用户协作功能

如果你热爱技术爱折腾、需要多元的数据处理能力、希望完全掌控自己的文档数据,本产品将会是一个不错的尝试,欢迎试用反馈。

系统架构

层次架构

程序目录结构

|-- app.py # 程序入口 |-- core/ | |-- xconfig.py # 程序配置 | |-- xmanager.py # handlers管理器,负责模块加载,注册URL,以及定时任务触发 | |-- xauth.py # 权限控制 | |-- xtables.py # 数据库表结构 | |-- xtemplate.py # view层的渲染接口 | \-- autoreload.py # 脚本变更热加载,主要用于调试,生产环境可以关闭 | |-- xutils/ # 工具类集合 |-- lib/ # 第三方类库,程序启动时添加到sys.path中 |-- config/ # 系统配置目录 | |-- file/ # 文件配置 | |-- lang/ # 多语言配置 | \-- template/ # 模板配置 | |-- handlers/ # http请求处理器目录,功能实现大部分在这里 | |-- api/ # 系统接口,返回JSON格式,供页面、定时任务、搜索调用 | |-- system/ # 系统功能目录 | |-- note/ # 笔记功能目录 | |-- fs/ # 文件功能目录 | |-- tools/ # 工具目录 | |-- plugins/ # 插件目录 | \-- ... # 其他目录 |-- static/ # 静态文件 \-- tests/ # 测试用例

数据区目录结构

|-- files/ # 上传的文件 | \-- user01 # 用户目录,以用户名作为目录名,支持多个 | |-- upload # 上传文件目录,上传文件以日期作为下级目录,比如 2019/01/ | |-- gallery # 相册文件 | |-- backup/ # 备份目录 |-- scripts/ # 脚本目录 |-- storage/ # 应用存储目录 |-- db/ # 数据库目录 |-- log/ # 日志目录 |-- tmp/ # 临时文件 \-- trash/ # 回收站

开发框架/软件库

具体版本见requirements.txt
  • webpy(修改版,xnote内置)
  • tornado template(修改版,xnote内置)
  • sqlite3 (Python自带文件型数据库)
  • wsgidav 支持webdav的功能,用于挂载网络磁盘
  • psutil(可选,采集系统运行数据)
  • comtypes(可选,用于调用微软语音API)

前端依赖

  • jquery JS基础库
  • layer web弹层组件
  • marked markdown解析器
  • codemirror 代码编辑器
  • jexcel web表格
  • font-awesome 图标库
  • art-template 模板引擎
  • vue2 MVVM框架
  • qrcode 二维码生成器
  • csv.js 解析csv文件
  • jsdiff 文本对比

新模块开发

在handlers目录下添加python程序,比如test.py class MyHandler: def GET(self): return 'success' class Handler2: def GET(self): return 'handler2' # URL路由规则,支持多个配置 xurls = ( r'/test', MyHandler, r'/handler2', Handler2 ) # 启动xnote,访问浏览器localhost:1234/test就会看到success 以下是一些页面展示

安装&运行

安装依赖环境

  • 安装python(建议Python3,Python2.7版本不再维护)
  • 安装依赖的软件包
    • Mac/Linux执行 python -m pip install -r config/requirements.txt
    • Windows执行 python -m pip install -r config/requirements.win.txt

配置和启动

默认的配置文件位于config/boot/boot.default.properties,具体的功能参考配置的注释 # 指定自定义的配置文件 python3 app.py --config config/boot/自定义名称.properties 如果不修改端口号,启动之后在浏览器打开 http://localhost:1234/ 就可以使用了,初始化的管理员账号是admin,默认密码是 123456

主要功能

笔记管理

  • 支持多种格式:markdown/表格/相册/列表
  • 组织功能:通过笔记本/标签/优先级来管理文档
  • 分享功能:在笔记的详情页面,点击【更多】下拉列表里面的分享,可以将文章分享给未登录用户查看
  • 优先级管理:置顶、归档功能
  • 备份功能:笔记的修改历史
  • 搜索功能:支持整个知识库搜索和项目内搜索
  • 评论功能:支持登录用户的评论
  • 访问统计:最近、常用的访问统计
  • 其他文档工具

文件管理

  • 多种视图:列表、网格
  • 文件操作:文件上传、下载、新建、删除、重命名、移动等操作
  • 文件工具:代码编辑器、文本阅读器、二进制查看器、文件内容搜索等等
  • 大文件支持:文件下载支持断点续传,支持超大文件上传(测试过1G文件)
  • 扩展:支持开发插件扩展

工具箱

  • Python文档(pydoc)
  • 文本处理(文本对比、代码生成、密码生成)
  • 编解码工具(base64、md5、进制转换、等等)
  • 条形码、二维码生成器
  • 图像处理(合并、拆分、灰度转换)
  • 提供扩展能力,开发者可以自己开发插件

系统扩展

由于每个人的需求不同,单一系统很难满足,开发者可以根据自己需要编写插件来扩展系统的功能。具体可以参考文档 插件扩展。 具体特性如下
  • 插件中可以监听系统消息,包括笔记、提醒、文件、时间、系统五种类型的消息
  • 插件可以通过category属性设置分类,显示在笔记、文件、系统等功能的选项入口中
  • 可以通过模板创建插件
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java极客技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 📚 项目介绍
  • 系统架构
  • 层次架构
  • 程序目录结构
  • 数据区目录结构
  • 开发框架/软件库
  • 前端依赖
  • 新模块开发
    • 安装&运行
      • 安装依赖环境
      • 配置和启动
    • 主要功能
      • 笔记管理
      • 文件管理
      • 工具箱
    • 系统扩展
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档