Nodejs个人网站开发之OMinds(ideas的升级版)- 已更新完

Nodejs个人网站开发之OMinds(ideas的升级版)- 已更新完

Ideas-Ominds交流QQ群(158325682)已经创建,可以交流ideas,可以讨论ominds,欢迎申请加入,遇到什么不懂的地方可以找我哦

22 回复

好的,以下是一个关于“Node.js个人网站开发之OMinds(ideas的升级版)- 已更新完”的帖子内容示例。这个示例将涵盖一些关键的技术点,并提供相应的代码片段。


Node.js个人网站开发之OMinds(ideas的升级版)- 已更新完

大家好!今天我要分享的是一个基于Node.js的个人网站项目——OMinds。这是一个从我的早期项目Ideas升级而来的新版本。OMinds不仅继承了Ideas的优点,还增加了一些新的功能和优化。希望通过这篇文章能帮助你理解如何构建一个功能完善的个人网站。

技术栈

  • Node.js - 后端服务框架
  • Express.js - Web应用框架
  • MongoDB - 数据库
  • EJS - 模板引擎
  • Bootstrap - 前端框架

项目结构

ominds/
├── config/                   # 配置文件
│   └── db.js
├── controllers/              # 控制器
│   ├── indexController.js
│   └── userController.js
├── models/                   # 数据模型
│   └── User.js
├── routes/                   # 路由
│   └── indexRoutes.js
├── views/                    # 视图
│   ├── layouts/              # 布局文件
│   │   └── default.ejs
│   └── pages/                # 页面文件
│       └── home.ejs
├── public/                   # 静态资源
│   ├── css/
│   ├── js/
│   └── images/
├── app.js                    # 主应用文件
└── package.json              # 项目配置文件

示例代码

config/db.js
const mongoose = require('mongoose');

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

const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
    console.log('Connected to MongoDB');
});
models/User.js
const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
    username: { type: String, required: true },
    email: { type: String, required: true, unique: true },
    password: { type: String, required: true }
});

module.exports = mongoose.model('User', UserSchema);
controllers/userController.js
const User = require('../models/User');

exports.register = async (req, res) => {
    const { username, email, password } = req.body;
    try {
        const newUser = new User({ username, email, password });
        await newUser.save();
        res.status(201).send('User registered successfully!');
    } catch (err) {
        res.status(400).send('Error registering user');
    }
};
routes/indexRoutes.js
const express = require('express');
const router = express.Router();
const { register } = require('../controllers/userController');

router.post('/register', register);

module.exports = router;
app.js
const express = require('express');
const mongoose = require('./config/db');
const indexRoutes = require('./routes/indexRoutes');

const app = express();

app.set('view engine', 'ejs');
app.use(express.urlencoded({ extended: true }));

app.use('/', indexRoutes);

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

总结

通过上述代码和结构,我们可以看到OMinds项目不仅具备了基本的用户注册功能,还采用了模块化的设计方式。希望这些示例代码能够帮助你更好地理解和构建你的个人网站项目。

如果你有任何问题或建议,欢迎加入我们的交流群(158325682),一起探讨和学习!


希望这段内容对你有所帮助!如果有任何问题或需要进一步的信息,请随时告诉我。


做的挺好的,感谢分享!

谢谢鼓励哦

嗯,第3章已做好,wiki上还没做,这是<a href=“http://blog.csdn.net/joveth/article/details/19398863”>csdn源</a> 今天不在状态,不好意思啊(嘛,男人,每个月,总有那么几天。。。) wiki上明天一块更。

背景图片会随着滚动条滚动,会扰乱阅读。

heroku访问速度可以啊 论坛不错

  • -!这让我怎么回答你,拉滚动条,背景不滚动什么的。。。。

谢谢。

今天把之前的blog补上来了,其实到这里之后基本上就剩下一个评论功能了,当然,<a href=“http://blog.csdn.net/joveth/article/category/1862915”>csdn的源在这里</a>

背景固定background-attachment:fixed;

###Good !
我这几天我也在赶时间做一个小网站自娱自乐下,楼主做的不错,给了我启发。
建议

####首页如果帖子太多,最好在右下角加一个返回顶部的按钮

太感谢了,我没想过背景固定,这些东西,加进去试试,没想到还真固定了,谢谢啊。

恩,这个我也想了,不过最近一直在纠结啊,首页的显示,到底是做分页的形式,还是那种【点击加载更多】的形式呢,后者可能需要点时间研究一下,而前者已经有现成的了,不过,回顶部的按钮倒是可以在评论中加一个。总之,谢谢啊!

呵呵,cnode都改版了,不错哦~~~~

楼主做的不错, 加油

谢谢,也就样了~~~

不好意思,有些链接有问题,修复了~~~

话说…怎么连个 gitignore 都没写…

加上时间戳吧!没有时间的文章让我好没安全感 呵呵……

过滤输入了吗,录入几个非法字符server就挂了。。

顶起,很好

Nodejs个人网站开发之OMinds(ideas的升级版) - 已更新完

概述

OMinds 是 Ideas 的一个升级版,它提供了一个更完善的平台来分享、讨论和管理想法。本教程将详细介绍如何使用 Node.js 和一些常用的库来构建这样一个网站。

主要功能

  1. 用户认证:用户注册、登录、登出。
  2. 想法发布与管理:用户可以发布、编辑、删除自己的想法。
  3. 想法浏览与评论:用户可以浏览其他人的想法,并进行评论。
  4. 搜索功能:用户可以通过关键词搜索想法。
  5. 通知系统:当有人评论或点赞时,发送通知给用户。

技术栈

  • Node.js: 服务端运行环境。
  • Express: Web框架。
  • MongoDB: 数据库。
  • Mongoose: MongoDB的ORM。
  • JWT: JSON Web Tokens用于用户认证。
  • Socket.IO: 实现实时通信(如通知系统)。

示例代码

用户认证
// app.js
const express = require('express');
const mongoose = require('mongoose');
const jwt = require('jsonwebtoken');

const User = require('./models/User'); // 引入User模型
const app = express();

app.use(express.json());

// 注册路由
app.post('/register', async (req, res) => {
    const { username, password } = req.body;
    const user = new User({ username, password: hashPassword(password) });
    await user.save();
    res.status(201).send(user);
});

// 登录路由
app.post('/login', async (req, res) => {
    const { username, password } = req.body;
    const user = await User.findOne({ username });

    if (!user || !validatePassword(password, user.password)) {
        return res.status(400).send('Invalid credentials');
    }

    const token = jwt.sign({ userId: user._id }, 'secretKey');
    res.send({ token });
});

function hashPassword(password) {
    // 密码哈希逻辑
}

function validatePassword(inputPassword, hashedPassword) {
    // 验证密码逻辑
}
想法发布
// ideaController.js
const Idea = require('../models/Idea');

exports.createIdea = async (req, res) => {
    const { title, content } = req.body;
    const idea = new Idea({ title, content, author: req.user._id });
    await idea.save();
    res.status(201).send(idea);
};

exports.getIdeas = async (req, res) => {
    const ideas = await Idea.find().populate('author', 'username');
    res.send(ideas);
};
Socket.IO 通知
// server.js
const io = require('socket.io')(server);

io.on('connection', (socket) => {
    socket.on('newComment', (data) => {
        io.to(data.userId).emit('commentNotification', data);
    });
});

结语

通过上述步骤和代码示例,你可以开始构建一个功能完整的 OMinds 网站。如果有任何问题,可以加入 QQ 群(158325682)交流讨论。


希望这些示例代码能帮助你快速上手开发你的个人网站。如果有更多问题,欢迎随时交流。

回到顶部