基于Nodejs的Koa框架做了个个人博客,求拍死

基于Nodejs的Koa框架做了个个人博客,求拍死

基于nodejs koa+mongodb,用markdown语法来写博客,思路非常主流。 其实3个月之前用express做了一个,一直没有放上去,这次换成koa之后,摆脱了那些callback简直不要太爽。 代码 目前部署在阿里云,链接 这个div+css是目前努力了半个月的最高水平了,模板和css也乱的一比,不喜欢拍死我把。 才发现markdown编辑器用的和cnode一样的~


13 回复

基于Node.js的Koa框架做了个个人博客,求拍死

最近用Node.js的Koa框架结合MongoDB搭建了一个个人博客系统。使用Markdown语法来撰写博客文章,整体思路比较主流。其实大约三个月前,我用Express框架已经实现过类似的功能,但是一直没有正式上线。这次换成了Koa框架,感觉非常爽,特别是摆脱了回调地狱(callback hell)。

技术栈

  • 前端: HTML, CSS, JavaScript
  • 后端: Node.js + Koa
  • 数据库: MongoDB
  • 文本格式: Markdown
  • 模板引擎: Pug (原Jade)

项目结构

Node_blog_V2/
├── app.js            # 主应用文件
├── config/           # 配置文件
│   └── db.js         # 数据库配置
├── controllers/      # 控制器文件夹
│   └── blog.js       # 博客控制器
├── models/           # 模型文件夹
│   └── blog.js       # 博客模型
├── routes/           # 路由文件夹
│   └── index.js      # 路由定义
├── views/            # 视图文件夹
│   └── blog.pug      # 博客页面
├── public/           # 公共资源文件夹
│   ├── css/          # CSS文件
│   └── js/           # JS文件
└── package.json      # 依赖包管理文件

示例代码

app.js

const Koa = require('koa');
const Router = require('koa-router');
const mongoose = require('mongoose');

const app = new Koa();
const router = new Router();

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

// 引入路由
require('./routes/index')(router);

app.use(router.routes()).use(router.allowedMethods());

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

controllers/blog.js

const Blog = require('../models/blog');

exports.getAllBlogs = async (ctx) => {
    const blogs = await Blog.find();
    ctx.body = blogs;
};

exports.getBlogById = async (ctx) => {
    const blog = await Blog.findById(ctx.params.id);
    if (!blog) ctx.throw(404, 'Blog not found');
    ctx.body = blog;
};

routes/index.js

const Router = require('koa-router');
const blogCtrl = require('../controllers/blog');

const router = new Router();

router.get('/blogs', blogCtrl.getAllBlogs);
router.get('/blogs/:id', blogCtrl.getBlogById);

module.exports = router;

项目现状

目前这个博客系统已经部署到阿里云服务器上,你可以通过以下链接访问:

前端部分,我花了半个月的时间来优化HTML和CSS,但目前的水平还是不尽人意。如果你有任何建议或者批评,欢迎留言指正。此外,我发现Markdown编辑器的实现方式与CNode社区的类似。

希望各位大佬能给我一些宝贵的反馈,无论是技术上的建议还是用户体验上的意见,我都虚心接受。


一篇文章都没有

样式不错,配色我喜欢

居然连域名都不买。。。

怎么感觉慢慢地? 另外,除了没有callback,用Koa还有什么好处么?

jade模板看着真不舒服

有用到文件上传吗?想请教你一个koa上传文件的问题?

怎么速度这么慢?

    • 还不错

你在逗我,iis7 自豪地采用 CNodeJS ionic

iis7我也曾经用过,现在是放弃MS了

根据你的描述,你基于 Node.js 和 Koa 框架开发了一个个人博客系统,并且使用 Markdown 语法撰写文章。你希望得到一些反馈或建议,即使批评也可以接受。

示例代码片段

下面是一些可能涉及的关键部分代码示例:

1. 安装依赖

首先确保安装了必要的依赖包:

npm install koa koa-router koa-static mongoose marked

2. 配置 Koa 应用

const Koa = require('koa');
const Router = require('koa-router');
const static = require('koa-static');
const mongoose = require('mongoose');

const app = new Koa();
const router = new Router();

// 静态文件服务
app.use(static(__dirname + '/public'));

// MongoDB 连接配置
mongoose.connect('mongodb://localhost/blog', { useNewUrlParser: true, useUnifiedTopology: true });

// 路由定义
router.get('/', async (ctx) => {
    ctx.body = 'Welcome to my blog!';
});

app.use(router.routes()).use(router.allowedMethods());

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

3. 使用 Markdown 渲染文章

const marked = require('marked');

router.get('/post/:id', async (ctx) => {
    const post = await Post.findById(ctx.params.id);
    if (!post) {
        ctx.status = 404;
        return;
    }
    
    // 将 Markdown 转换为 HTML
    post.contentHtml = marked(post.content);

    ctx.body = post;
});

反馈与建议

  1. 前端布局:从你提到的CSS和HTML结构混乱的情况来看,前端布局需要进一步优化。可以考虑使用一些前端框架(如 Bootstrap、Tailwind CSS)来简化布局和样式设计。

  2. SEO 优化:虽然这是一个个人博客,但还是建议做一些基本的 SEO 优化,比如添加 meta 标签、优化 URL 结构等。

  3. 错误处理:在实际生产环境中,错误处理非常重要。可以添加全局的错误处理中间件,以确保用户能获得有用的错误信息。

  4. 安全性:确保对输入进行有效的验证和过滤,防止 XSS 攻击等安全问题。对于上传的文件,最好使用白名单机制来限制上传类型。

  5. 性能优化:可以考虑引入缓存策略,例如 Redis 来缓存频繁查询的数据,提高应用响应速度。

希望这些建议对你有所帮助!如果还有其他具体需求或疑问,欢迎继续讨论。

回到顶部