Nodejs 用node做了个日记本网站。
Nodejs 用node做了个日记本网站。
挖个坑,会在这里分享一些开发中遇到的问题。
也希望能够抛砖引玉,让更多人的和我一起开发这个日记网站。
网站是全部用nodejs来开发的,数据库用的mongodb,框架用的express,服务器在香港的一台vps上。
地址:tuer.me
目前注册用户30多人,日记写了100多篇了。一切都感觉良好,除了静态资源有点慢,可能这周部分静态资源给扔到国内的sae上去。。
Node.js 用Node做了个日记本网站
挖个坑,会在这里分享一些开发中遇到的问题。
也希望能够抛砖引玉,让更多的人和我一起开发这个日记网站。
技术栈
- 后端: Node.js
- 数据库: MongoDB
- 框架: Express.js
- 服务器: 香港VPS
网站地址
你可以访问 tuer.me 来查看日记网站。
当前状态
目前注册用户有30多人,已经写了100多篇日记。一切都感觉良好,除了静态资源加载有点慢。为了优化这个问题,我计划将部分静态资源移到国内的SAE(新浪云应用引擎)上。
示例代码
以下是一个简单的Express.js应用示例,用于创建一个基本的日记网站:
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
// 初始化Express应用
const app = express();
app.use(bodyParser.json());
// 连接MongoDB数据库
mongoose.connect('mongodb://localhost:27017/diary', {
useNewUrlParser: true,
useUnifiedTopology: true
});
// 定义日记模型
const DiarySchema = new mongoose.Schema({
title: String,
content: String,
createdAt: { type: Date, default: Date.now }
});
const Diary = mongoose.model('Diary', DiarySchema);
// 创建日记API
app.post('/api/diaries', async (req, res) => {
const diary = new Diary(req.body);
await diary.save();
res.status(201).send(diary);
});
app.get('/api/diaries', async (req, res) => {
const diaries = await Diary.find({});
res.send(diaries);
});
// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
这段代码定义了一个简单的日记网站后端,包括连接到MongoDB数据库、定义日记模型以及创建CRUD API。
总结
通过使用Node.js、Express.js和MongoDB,我们能够快速构建一个功能齐全的日记网站。未来我会继续分享更多关于这个项目的细节和优化措施,希望与大家分享经验和教训。
很不错很简洁
功能太少了,还没有cnode的这个社区功能多。。慢慢在完善。。
又是bootstrap~~~
审美疲劳了~~
嗯 就一个人业余做的,打算视觉上改改吧。基础部分的css bootstrap挺好的。。后期也会用 就不会用的这么明显了 - -||
我打开首页花了近1分钟…
服务器上的Gzip设置的有问题,css和js都没压缩就传过来了,而且如果用bootstrap的话最好是精简一下内容,其实bootstrap中不少东西你都没有必要加进来,加载部分就够了,这样能极大的提升速度。
把assert放到国内服务器上这不是重点,只能是锦上添花的一笔。
另外如果放的话,还是推荐放在又拍云上比较靠谱。
我靠,gzip居然真的设置有问题……。。。我一直没去检查。。。谢谢兄弟。。
嗯,主要慢还有就是用户头像我直接存的base64,打到页面里可能也会让页面比较慢,这里正在动手改。
谢谢你啦。。。gzip的我这就去改。。
额,刚更新了关注的功能……广告下……哈哈= =
gzip的问题已经改好……粗心了……bootstrap的话,我看情况确实要拆分一下。。
不错哦啊,风格很简洁,代码开源吗?
代码写的很不好看。。。想开源但是不太好意思,还是要等我规整一段时间然后部分开源吧。逻辑很简单的东西,大部分功能也都用现成模块~
很好。支持
刚又增加了分享到微博的按钮…… mark。
你好,请问一下:能不能把你用的bootstrap的UI发给我一份呢?谢谢。290796120@qq.com
嗯。自己去官网下就可以了。
很清爽啊,不错不错,然后,能在首页放个写日记的入口不?个人信息只放一个用户名有点空,可以加操作哇
首页的话我思考下放在哪。。
把头像单独做了一个接口,不支持渲染base64到页面里了,速度得到很大提升,当初决策失误啊。。
下一步增加缓存支持,和头像的截取功能。。用的node-canvas来实现的。
2012、8、3 1,更新了日记墙的布局。 2,配置了nginx,把日记图片都增加了default type。 3,对所有用户头像做大小限制,修改完毕,设置部分,增大头像尺寸到150*150,自动截取中间部分为小头像展示【懒得做用户自己截了,改天补上。。】。
更新了说明和帮助页的内容。
增加回复评论和提醒的功能。
楼主更新很勤快呀,支持。期待来源!
今天牺牲了一下真像,换了好几个萌妹子加入啊……
能不能公开一下源码啊,学习一下。
我发布一篇日记用了两分钟,还504.。。
总体做的不错,要是能开源一下共同学习就更好了
我现在处理图片用的ImageMagick,我发现有比较严重的内存泄露问题。。。你看到你发的了。我今天打算把ImageMagick干掉都换node-canvas处理算了。。504确实是程序出错了。
源码近期吧。。分层不是写的很漂亮,乱七八糟的。等俺整理整理。
增加全部日记的分页功能,对首页布局改版了。
xiaojue,我記得跟你在qq上聊過啊。
我想問下,香港的vps,多少錢啊,怎麼購買?
对 就是我啦。我那个vps一个月150。。。淘宝随便一搜 不少的。。
今天增加私密日记的功能~!
修复了一些图片相关的缓存bug,增加关注日记的功能。
支持,,支持,
github地址?
暂时木有开源……
增加关注人的list页面,总数预览,修复写日记的几个小bug。
香港的VPS 需要备案否?
不需要~
不需要。
真心不错,希望增加交友功能 o(-"-)o
已经有关注功能啦~
今天更新 禁止任何人回复功能。
楼主是怎么给试图传参的?
app.get('/',function(req,res){
req.flash('error','用户已经注册');
console.log('--'+req.flash('error'));
res.render('index', { title: '首页'});
});
app.use(function(req, res, next){
//res.locals.title = config[‘title’] //res.locals.csrf = req.session ? req.session._csrf : ‘’; res.locals.user = app.get(‘user’); console.log(req.flash(‘error’)); res.locals.error = req.flash(‘error’).length ? req.flash(‘error’) : null ; res.locals.success = req.flash(‘success’).length ? req.flash(‘success’) : null ; next(); });//locals
req.flash(“error”) 无法取到值
传参就是render(“tempfile”,{ errormsg:“用户已经注册” }); 然后tempfile里直接引用errormsg就成了啊。。。
那res.locals 这个有什么用呢?
我现在有个应用,怎么才能用域名访问到我的应用啊。
参考文档的说明吧 http://expressjs.com/api.html#app.locals
有例子的噢。
这个和node没啥子关系了。你搜索下dns解析,域名指向一类的文章吧~
开源啊,骚年。
恩 我回头写个教程贴吧。
很不错啊,期待lz的教程
不错,表扬一下!趁现在简单,就开个源吧! 还有, VPS速度不错,是香港哪个机房?或者能告知淘宝哪家买的吗, 配置如何?
呃,发现一个细节问题: /diarys/ <—这个英语单词的复数形式不对哦, 应该是 diaries, 改一下吧
啊。。。是的。早发现了。。不过url没改,模版里的改了,这个忘记了- -||。恩 周末改下。
为啥我看到的网站是完全没有样式表现的,求解释…
再刷几次 服务器不太好,可能样式请求挂掉了。
刚开始接触Nodejs,想知道如何在express里面插入一个用户是否登入验证的方法,而不必为每个app.get 里面添加一次这个方法
在 app.get("*",function(req,res,next){
}); 里面增加登陆验证,如果登陆了就next,如果没登陆就跳出。
我才刚学习Nodejs,已经有大大发布作品了,很不错,顶一个。
我很有兴趣,之前弄过一段时间nodejs,后来因为项目不需要了所以也就没太关注!
做的不错,赞一个!
可以加个 Gavartar 的头像呢
注册不上。confirmation email 发得非常慢。
看看垃圾邮箱,应该都能注册上的。你是什么邮箱?我会有发送失败的记录。
那个面向的不是程序员额。就默认的头像。。
很喜欢这种简洁的画面
谢谢亲啊
这几天把ie8以上的限制也去掉了,网站ui又有了进一步优化,欢迎大家试用。。
发现已经运行了两年。。。大神啊……百度发现这条,路过进来顶顶,挖下坟也好
光顾了一下,漂亮
又是mongodb
挺好的,顶一个 发自 CNodeJs ionic
赞!居然两年了,两年前我在干嘛……
Node.js 用 Node 做了个日记本网站
简介
在这个帖子中,我会分享一些我在开发日记网站过程中遇到的问题,并希望能得到更多人的帮助和支持。
技术栈
- 后端: Node.js
- 框架: Express.js
- 数据库: MongoDB
- 服务器: 香港的一台 VPS
项目地址
你可以访问 tuer.me 查看日记网站。
当前状态
目前,该网站已有30多名注册用户,写下了100多篇日记。除了静态资源加载速度稍慢之外,一切运行良好。本周计划将部分静态资源迁移到国内的 SAE 上以提升访问速度。
示例代码
以下是一些关键代码片段,用于展示如何使用 Node.js 和 Express.js 来实现一个简单的日记网站功能:
1. 安装依赖
首先,确保安装了所有必要的依赖:
npm install express mongoose body-parser ejs
2. 创建 Express 应用
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static('public'));
// 连接 MongoDB
mongoose.connect('mongodb://localhost:27017/diary', { useNewUrlParser: true, useUnifiedTopology: true });
// 定义日记模型
const DiarySchema = new mongoose.Schema({
title: String,
content: String,
date: { type: Date, default: Date.now }
});
const Diary = mongoose.model('Diary', DiarySchema);
// 路由定义
app.get('/', async (req, res) => {
const diaries = await Diary.find();
res.render('index', { diaries });
});
app.post('/add-diary', async (req, res) => {
const { title, content } = req.body;
await Diary.create({ title, content });
res.redirect('/');
});
app.listen(3000, () => console.log('Server running on port 3000'));
3. 视图模板(EJS)
创建一个 views/index.ejs
文件:
<!DOCTYPE html>
<html>
<head>
<title>日记网站</title>
</head>
<body>
<h1>日记列表</h1>
<form action="/add-diary" method="POST">
<input type="text" name="title" placeholder="标题" required>
<textarea name="content" placeholder="内容" required></textarea>
<button type="submit">添加日记</button>
</form>
<% diaries.forEach(diary => { %>
<div>
<h2><%= diary.title %></h2>
<p><%= diary.content %></p>
<small><%= diary.date.toLocaleDateString() %></small>
</div>
<% }) %>
</body>
</html>
希望这些示例代码能够帮助你快速入门并理解如何用 Node.js 和 Express.js 开发一个简单的日记网站。如果有任何问题或建议,请随时提出!