Nodejs学习心得:写了一个简单的博客网站

Nodejs学习心得:写了一个简单的博客网站

数据库使用mongodb,模版引擎jade,样式框架bootstrap github: https://github.com/xulianghhu/nodejs-blog 下载地址: http://download.csdn.net/detail/xulianghh/8108419

5 回复

Node.js 学习心得:写了一个简单的博客网站

在最近的学习过程中,我通过实践完成了一个基于 Node.js 的简单博客网站。这个项目不仅让我对 Node.js 有了更深入的理解,还帮助我掌握了如何将不同的技术栈整合到一起。

技术栈

  • 数据库:MongoDB
  • 模板引擎:Jade(现更名为Pug)
  • 样式框架:Bootstrap
  • 服务器端框架:Express.js

GitHub 仓库

该项目的源代码托管在 GitHub 上,你可以通过以下链接访问:

项目结构

项目的基本结构如下:

nodejs-blog/
├── app.js
├── package.json
├── public/
│   ├── css/
│   ├── js/
│   └── images/
├── routes/
│   ├── index.js
│   ├── posts.js
├── views/
│   ├── layout.jade
│   ├── index.jade
│   └── post.jade
└── models/
    └── post.js

主要代码片段

app.js

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

const app = express();

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

// 设置模板引擎为 Jade (Pug)
app.set('view engine', 'jade');

// 静态文件目录
app.use(express.static('public'));

// 使用 body-parser 中间件来解析请求体
app.use(bodyParser.urlencoded({ extended: false }));

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

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

routes/index.js

const express = require('express');
const router = express.Router();
const Post = require('../models/post');

router.get('/', async (req, res) => {
  const posts = await Post.find().sort('-createdAt');
  res.render('index', { posts });
});

module.exports = router;

views/layout.jade

doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/css/bootstrap.min.css')
  body
    block content
    script(src='/js/jquery.min.js')
    script(src='/js/bootstrap.min.js')

models/post.js

const mongoose = require('mongoose');

const PostSchema = new mongoose.Schema({
  title: String,
  content: String,
  createdAt: { type: Date, default: Date.now }
});

module.exports = mongoose.model('Post', PostSchema);

通过这个项目,我学到了如何使用 Express 框架搭建 Web 应用,如何连接和操作 MongoDB 数据库,以及如何使用 Jade (Pug) 模板引擎渲染页面。此外,我还学会了如何使用 Bootstrap 快速搭建美观的前端界面。

希望这些内容对你有所帮助!如果你有任何问题或建议,欢迎在 GitHub 上留言交流。


代码还可以更精简

还不错。。。

蜗牛的哈。支持!

Node.js 学习心得:写了一个简单的博客网站

在学习 Node.js 的过程中,我决定通过实际项目来巩固知识。于是,我构建了一个简单的博客网站。在这个项目中,我使用了以下技术栈:

  • 数据库:MongoDB
  • 模板引擎:Jade (现在称为 Pug)
  • 样式框架:Bootstrap

项目结构

项目的基本目录结构如下:

nodejs-blog/
├── models/
│   └── post.js
├── views/
│   ├── index.jade
│   ├── post.jade
│   └── layout.jade
├── routes/
│   ├── index.js
│   └── posts.js
├── app.js
└── package.json

数据库操作

为了与 MongoDB 进行交互,我使用了 mongoose 库。首先安装 mongoose:

npm install mongoose --save

models/post.js 中定义模型:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const PostSchema = new Schema({
    title: String,
    content: String,
    createdAt: { type: Date, default: Date.now }
});

module.exports = mongoose.model('Post', PostSchema);

路由处理

routes/posts.js 中处理文章的增删改查:

const express = require('express');
const router = express.Router();
const Post = require('../models/post');

router.get('/', async (req, res) => {
    const posts = await Post.find().sort({ createdAt: -1 });
    res.render('index', { posts });
});

router.post('/', async (req, res) => {
    const { title, content } = req.body;
    const post = new Post({ title, content });
    await post.save();
    res.redirect('/');
});

// 其他路由如删除、更新等...

module.exports = router;

视图渲染

使用 Jade(Pug) 模板引擎渲染视图。例如,在 views/index.jade 中编写如下代码:

doctype
html
  head
    link(rel='stylesheet', href='/stylesheets/style.css')
  body
    h1 我的博客
    ul
      each post in posts
        li
          a(href='/post/' + post._id)= post.title

启动应用

app.js 中配置 Express 应用并启动服务器:

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

const app = express();

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

app.set('view engine', 'jade');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static('public'));

app.use(require('./routes/index'));
app.use(require('./routes/posts'));

const port = process.env.PORT || 3000;
app.listen(port, () => {
    console.log(`Server running on port ${port}`);
});

项目源码

源码托管在 GitHub 上,有兴趣的朋友可以查看和学习。

希望这篇心得能帮助大家更好地理解和学习 Node.js!

回到顶部