学习Node.js两周的习作:《哥德的理念》
经过两周的学习,我完成了一个简单的Web应用——《哥德的理念》。这个项目虽然没有太多的技术深度,但完全是我根据个人兴趣开发的。项目的核心功能是展示一些关于哥德的理念,并提供一些基本的交互功能。
技术栈
- Node.js: 用于后端逻辑处理。
- Express.js: 一个简洁而灵活的Node.js Web应用框架。
- EJS: 一种嵌入式JavaScript模板引擎,用于生成HTML页面。
- MongoDB: 作为数据存储,用于保存理念相关的数据。
项目结构
gddln/
├── node_modules/
├── public/
│ ├── css/
│ ├── js/
│ └── images/
├── views/
│ ├── index.ejs
│ └── about.ejs
├── app.js
└── package.json
主要文件介绍
-
app.js 这是项目的入口文件,定义了服务器的基本配置和路由。
const express = require('express'); const bodyParser = require('body-parser'); const MongoClient = require('mongodb').MongoClient; const app = express(); const PORT = process.env.PORT || 3000; // 设置视图引擎为EJS app.set('view engine', 'ejs'); // 使用body-parser中间件解析请求体 app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); // 静态资源目录 app.use(express.static('public')); // MongoDB连接字符串 const url = 'mongodb://localhost:27017'; const dbName = 'gddln'; // 连接数据库 MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }, (err, client) => { if (err) { console.error(err); return; } console.log("Connected successfully to server"); const db = client.db(dbName); // 路由定义 app.get('/', (req, res) => { db.collection('ideas').find().toArray((err, ideas) => { if (err) throw err; res.render('index', { ideas }); }); }); app.listen(PORT, () => { console.log(`Server running on port ${PORT}`); }); });
-
views/index.ejs 这个文件定义了首页的HTML结构和样式。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>哥德的理念</title> <link rel="stylesheet" href="/css/style.css"> </head> <body> <h1>哥德的理念</h1> <ul> <% ideas.forEach(idea => { %> <li><%= idea.title %> - <%= idea.content %></li> <% }) %> </ul> <script src="/js/app.js"></script> </body> </html>
-
package.json 项目依赖的包管理文件。
{ "name": "gddln", "version": "1.0.0", "description": "哥德的理念网站", "main": "app.js", "scripts": { "start": "node app.js" }, "dependencies": { "body-parser": "^1.19.1", "ejs": "^3.1.6", "express": "^4.17.1", "mongodb": "^3.6.4" } }
总结
通过两周的学习,我不仅掌握了Node.js的基础知识,还学会了如何使用Express.js、EJS和MongoDB来构建一个简单的Web应用。尽管还有很多需要提升的地方,但我对前端与后端的结合有了更深的理解。希望这个小项目能对你有所帮助,也欢迎大家提出宝贵的意见和建议!
访问地址:http://gddln.com/
嗯 我也觉得不错,很清爽,不过好像功能少了点。
谢谢喜欢的朋友!功能方面后面可以慢慢加。。。 不过,俺还没解决个问题。现在用的mongous库https://github.com/amark/mongous作为与连接mongodb的中间层,但这个库貌似没法按时间逆序取数据(还是我没看明白?),这样导致我的网站看到的数据都没有变化。谁能帮我?
不错, 我学node也两周了, 屁都木有放出来一个
加油,呵呵,我是从ruby转过来的。不过,ruby也是初学。之前用ruby做过个网站:http://xmzdm.com/
可以通过域名访问“歌德的理念”了:http://gddln.com/
这个社区用的是mongoose, 是支持排序的, 不行就换个驱动吧.
不错啊,我也在看node,不过是做前端的,后台的知识概念,一个头2个大
不错,我喜欢这种风格~
谢谢,哈哈。。
很小清新,有新媒体杂志范儿
的确很小清新,不错,期待楼主今后的作品
不错
不错,就是换文章的时候最好不要换歌
是我喜欢的风格,清新淡雅
音乐盒怎么弄的啊?
音乐盒怎么弄的啊?
目测是拉api
表示网站打不开
我也打不开
服务器有时会出问题,不过大多数时候是好的。
域名解析问题,可直接IP访问:http://184.82.79.30/
不错的啊!
好的,理解了你的需求。假设你正在做一个简单的项目,基于Node.js并使用Express框架来展示《哥德的理念》,我们可以实现一个非常基础的应用程序,它可以从一个数组中获取数据,并以简单的HTML页面的形式显示这些数据。
首先,确保你已经安装了Node.js。然后,在项目的根目录下初始化一个新的Node.js应用:
npm init -y
接下来,安装Express库:
npm install express
现在,让我们创建一个基本的应用程序,它从一个数组中获取《哥德的理念》的数据,并将这些数据作为HTML列表项返回。
示例代码
- 创建
server.js
文件
const express = require('express');
const app = express();
const port = 3000;
// 定义哥德理念数组
const gddThoughts = [
"思维是世界的唯一主宰。",
"只有行动能克服恐惧。",
"艺术是解放人类灵魂的力量。",
];
// 设置路由,用于获取哥德理念
app.get('/', (req, res) => {
// 创建HTML列表
let html = '<html><body>';
html += '<h1>哥德的理念</h1>';
html += '<ul>';
// 遍历哥德理念数组,生成列表项
for (let thought of gddThoughts) {
html += `<li>${thought}</li>`;
}
html += '</ul>';
html += '</body></html>';
// 返回HTML内容
res.send(html);
});
// 启动服务器
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
这段代码做了以下几件事:
- 引入Express模块。
- 定义了一个包含哥德理念的数组。
- 创建了一个路由,当用户访问网站的根路径时,会返回包含哥德理念的HTML页面。
- 最后,启动一个监听在3000端口的服务器。
现在,你可以通过运行node server.js
来启动服务器,然后在浏览器中访问http://localhost:3000
,你会看到一个展示哥德理念的简单网页。
这只是一个非常基础的例子,但可以为你提供一些起点。随着经验的增加,你可以逐步添加更多功能,如数据库集成、更复杂的前端界面等。