Nodejs 菜鸟的学习成果可以分享吗?
Node.js 菜鸟的学习成果可以分享吗?
学习了几个星期的Node.js,算是有一个阶段性的Hello World
作品——一个简单的个人博客。下一步准备扩展现有的个人博客为社区,添加微博短内容发布和博客长内容发布功能。
作为一个大二的学生,希望得到大家的指导和建议。以下是我的一些初步成果和代码示例,希望对大家有所帮助。
现在开放账号为:
-
帐号:游客
密码:youke -
帐号:游客2
密码:youke -
帐号:游客3
密码:youke -
帐号:游客4
密码:youke
示例代码:添加微博短内容发布功能
为了实现微博短内容发布功能,我们可以使用Express框架来处理HTTP请求,并使用MongoDB作为数据库来存储数据。
首先安装必要的依赖包:
npm install express mongoose body-parser
然后创建一个简单的API来处理微博的发布:
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
// 连接到MongoDB
mongoose.connect('mongodb://localhost:27017/myblog', { useNewUrlParser: true, useUnifiedTopology: true });
// 创建微博模型
const TweetSchema = new mongoose.Schema({
username: String,
content: String,
createdAt: { type: Date, default: Date.now }
});
const Tweet = mongoose.model('Tweet', TweetSchema);
const app = express();
app.use(bodyParser.json());
// 发布新的微博
app.post('/api/tweets', async (req, res) => {
const { username, content } = req.body;
try {
const tweet = new Tweet({ username, content });
await tweet.save();
res.status(201).json(tweet);
} catch (error) {
res.status(500).json({ error: 'Failed to save the tweet' });
}
});
// 获取所有微博
app.get('/api/tweets', async (req, res) => {
try {
const tweets = await Tweet.find().sort('-createdAt');
res.json(tweets);
} catch (error) {
res.status(500).json({ error: 'Failed to fetch tweets' });
}
});
app.listen(3000, () => console.log('Server is running on port 3000'));
示例代码:添加博客长内容发布功能
同样地,我们可以通过Express框架和MongoDB来实现博客长内容发布功能:
// 创建博客文章模型
const PostSchema = new mongoose.Schema({
title: String,
author: String,
content: String,
createdAt: { type: Date, default: Date.now }
});
const Post = mongoose.model('Post', PostSchema);
// 发布新的博客文章
app.post('/api/posts', async (req, res) => {
const { title, author, content } = req.body;
try {
const post = new Post({ title, author, content });
await post.save();
res.status(201).json(post);
} catch (error) {
res.status(500).json({ error: 'Failed to save the post' });
}
});
// 获取所有博客文章
app.get('/api/posts', async (req, res) => {
try {
const posts = await Post.find().sort('-createdAt');
res.json(posts);
} catch (error) {
res.status(500).json({ error: 'Failed to fetch posts' });
}
});
链接
希望这些示例代码能帮助你更好地理解和扩展你的个人博客项目。如果你有任何问题或需要进一步的帮助,请随时联系我!
用的是express + bootstrap + mongodb ~~~
=。= 打不开怎么破
不是吧……我这里可以啊……那就这个看看……appfog
T-T菜鸟被瞬秒了
这么多人在用bootstrap……
简单,好用。 当然,主要是因为node.js开发指南上面用的是这个。。。
为什么有两个登录框。
擦,竟然吉大的学弟 我也是,冒个泡,10级的。
师兄握爪,我才学没多久的……望师兄多指点指点^o^
算是方便登录吧,因为不是每个人都是先进主页的。并且登出的按钮在navbar上面……所以避免太突兀,就在上面叶加了一个登录框。
nice
免费的么?表示穷学生啊~~
bootstrap这个世纪最大的发明之一啊!
cloudfoundry貌似很慢
调笑么?=,=
真心话,很伟大!
问个问题,发帖的编辑器你用的是什么? 发帖中的图片上传你是怎么处理的?
论坛里有搭建博客的教程,有讲markdown和kindeditor,免去了我再造轮子的困难。图片是外链的,因为校园网速度太慢,appfog的服务器在新加坡,而我还没做到上传图片的功能。。。
等小的再磨练一会儿吧。感觉能力太差了。。。
当然可以!分享你的学习成果是个很好的习惯。下面我将为你提供一些基本的示例代码来帮助你开始扩展你的个人博客到一个社区功能,包括短内容发布和长内容发布。
1. 设置环境
首先确保你已经安装了Node.js和npm(Node包管理器)。你可以通过运行以下命令来安装Express框架,这将帮助你快速搭建后端服务:
npm install express
2. 基本的博客应用结构
假设你的项目结构如下:
/node-blog
/public
- index.html
/routes
- index.js
/views
- index.ejs
app.js
3. 后端代码
app.js
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: 'secret',
resave: false,
saveUninitialized: false
}));
// 静态文件
app.use(express.static('public'));
// 模板引擎设置
app.set('view engine', 'ejs');
// 引入路由
require('./routes/index')(app);
// 启动服务器
app.listen(3000, () => console.log('Server started on port 3000'));
4. 创建用户认证和内容发布功能
routes/index.js
module.exports = function(app) {
const users = [
{ username: '游客', password: 'youke' },
{ username: '游客2', password: 'youke' }
];
app.get('/', (req, res) => {
res.render('index');
});
app.post('/login', (req, res) => {
const user = users.find(u => u.username === req.body.username && u.password === req.body.password);
if (user) {
req.session.user = user;
res.redirect('/');
} else {
res.send('Invalid credentials');
}
});
app.post('/post', (req, res) => {
if (req.session.user) {
// 假设存储到数据库
console.log(req.body.content);
res.send('Content posted successfully!');
} else {
res.send('Please login first.');
}
});
};
5. 前端页面
views/index.ejs
<!DOCTYPE html>
<html>
<head>
<title>个人博客</title>
</head>
<body>
<% if (session.user) { %>
<h2>Welcome, <%= session.user.username %>!</h2>
<form action="/post" method="POST">
<textarea name="content"></textarea>
<button type="submit">发布</button>
</form>
<% } else { %>
<form action="/login" method="POST">
<input type="text" name="username" placeholder="Username">
<input type="password" name="password" placeholder="Password">
<button type="submit">Login</button>
</form>
<% } %>
</body>
</html>
总结
以上代码展示了如何创建一个简单的登录系统,并允许已登录用户发布内容。这只是个起点,你可以在此基础上进一步扩展功能,比如增加评论系统、用户资料页等。希望这些示例对你有所帮助!