用 Node.js 编写的一个 Wiki 系统

用 Node.js 编写的一个 Wiki 系统

本系统构建在node.js上,是面向个人的知识管理系统,可以随时添加、编辑和查看你的页面,不断积累各方面知识。

作为一个完全开源的 node.js 项目,希望对 node.js 感兴趣的朋友可以积极贡献,共同来完善。

项目地址:https://github.com/yanxi-com/qiri

作者微博: http://weibo.com/yanxicom

官方网站: http://qiri.com/

######特性

  • 移动设备支持良好,便于手机随时操作
  • 打开浏览器就能工作,手机和电脑通用
  • 私密性好,登陆后才能查看
  • 采用流行的Wiki语法,页面内容丰富多彩
  • 创建页面数量没有限制
  • 支持子页面,并能创建无限级子页面

######示例


7 回复

用 Node.js 编写的一个 Wiki 系统

本系统构建在 Node.js 上,是一个面向个人的知识管理系统,可以随时添加、编辑和查看你的页面,不断积累各方面知识。

作为一个完全开源的 Node.js 项目,希望对 Node.js 感兴趣的朋友可以积极贡献,共同来完善。

项目地址

作者微博

官方网站

特性

  • 移动设备支持良好:便于手机随时操作。
  • 跨平台:打开浏览器就能工作,手机和电脑通用。
  • 私密性好:登录后才能查看。
  • 支持 Wiki 语法:页面内容丰富多彩。
  • 无限制页面数量:创建页面数量没有限制。
  • 支持子页面:能够创建无限级子页面。

示例

示例代码

以下是一个简单的示例代码,展示了如何使用 Express 和 MongoDB 来搭建一个基本的 Wiki 页面:

const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');

// 连接 MongoDB 数据库
mongoose.connect('mongodb://localhost/wiki', { useNewUrlParser: true, useUnifiedTopology: true });

// 创建页面模型
const PageSchema = new mongoose.Schema({
    title: String,
    content: String,
    createdAt: { type: Date, default: Date.now }
});

const Page = mongoose.model('Page', PageSchema);

// 初始化 Express 应用
const app = express();
app.use(bodyParser.json());

// 添加页面
app.post('/pages', async (req, res) => {
    const page = new Page(req.body);
    await page.save();
    res.status(201).send(page);
});

// 获取所有页面
app.get('/pages', async (req, res) => {
    const pages = await Page.find({});
    res.send(pages);
});

// 获取单个页面
app.get('/pages/:id', async (req, res) => {
    const page = await Page.findById(req.params.id);
    if (!page) return res.status(404).send('页面未找到');
    res.send(page);
});

// 更新页面
app.put('/pages/:id', async (req, res) => {
    const page = await Page.findByIdAndUpdate(req.params.id, req.body, { new: true });
    if (!page) return res.status(404).send('页面未找到');
    res.send(page);
});

// 删除页面
app.delete('/pages/:id', async (req, res) => {
    const page = await Page.findByIdAndDelete(req.params.id);
    if (!page) return res.status(404).send('页面未找到');
    res.send(page);
});

// 启动服务器
app.listen(3000, () => console.log('Wiki 系统启动于 http://localhost:3000'));

以上代码展示了如何使用 Express 和 Mongoose 构建一个基本的 Wiki 系统。通过这些 API,用户可以添加、获取、更新和删除页面。希望这能帮助你快速入门并理解如何构建一个 Wiki 系统。


jqm system.

是啊,主要为了适应手机浏览。

请问现在系统用不了了吗?

不错,js管理可以用bower试试。 部分作品下有两个链接打不开。。。

为什么样式是乱的?是我安装问题?

用 Node.js 编写一个 Wiki 系统是一个非常有趣且实用的项目。它可以帮助用户轻松地管理个人知识库,同时具备良好的移动设备支持、安全性及丰富的页面内容展示功能。

功能概述

  1. 用户登录:确保只有注册用户才能访问 Wiki 页面。
  2. 页面创建与编辑:用户可以创建新页面或编辑已存在的页面。
  3. 页面浏览:用户可以查看自己创建的页面及其子页面。
  4. 响应式设计:支持移动设备和平板电脑。
  5. 权限控制:保护隐私,保证只有拥有相应权限的用户才能查看或编辑某些页面。

示例代码

这里提供一个简单的例子,以说明如何使用 Express.js 创建一个基本的 Wiki 页面。这只是一个简单的起始点,实际的 Wiki 系统需要更多的功能和更复杂的结构。

const express = require('express');
const bodyParser = require('body-parser');
const session = require('express-session');

const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(session({
    secret: 'your_secret_key',
    resave: false,
    saveUninitialized: true
}));

let wikiPages = {}; // 存储所有的 Wiki 页面

app.get('/', (req, res) => {
    res.send('<h1>Welcome to Qiri Wiki!</h1>');
});

// 添加新页面
app.post('/add', (req, res) => {
    if (req.session.user) {
        const title = req.body.title;
        const content = req.body.content;
        wikiPages[title] = content;
        res.redirect('/');
    } else {
        res.send('<h1>Please login first</h1>');
    }
});

// 查看页面
app.get('/:page', (req, res) => {
    const page = req.params.page;
    if (wikiPages[page]) {
        res.send(`<h1>${page}</h1><div>${wikiPages[page]}</div>`);
    } else {
        res.send('<h1>Page not found</h1>');
    }
});

// 启动服务器
app.listen(3000, () => console.log('Server started on port 3000'));

总结

以上代码展示了一个非常基础的 Wiki 系统框架。实际开发中还需要考虑更多方面如数据库持久化存储、用户认证、权限管理等。你可以基于这个基础进一步扩展和完善项目,使之成为一个全面的个人知识管理系统。

回到顶部