1. 简介
Angular 是一种用于构建 Web 应用程序的平台。 Angular 框架提供了许多工具,可以帮助我们构建高效的 Web 应用程序。 MongoDB 是一个 NoSQL 数据库,可以帮助我们存储和检索数据。
2. 创建 Angular 项目
2.1 安装 Angular CLI
在开始之前,我们需要安装 Angular CLI:
npm install -g @angular/cli
2.2 创建新项目
现在我们可以创建一个新的 Angular 项目:
ng new blog-app
3. 安装 MongoDB
要在应用程序中使用 MongoDB,我们需要首先安装它。
3.1 下载 MongoDB
我们可以在 MongoDB 的官方网站上下载它:
https://www.mongodb.com/try/download/community
3.2 安装 MongoDB
安装过程因操作系统而异。你可以在 MongoDB 的文档中找到系统特定的安装说明:
https://docs.mongodb.com/manual/administration/install-community/
3.3 启动 MongoDB
在安装成功后,我们可以使用以下命令启动 MongoDB 服务器:
mongod
4. 创建博客后端
我们将使用 Node.js、Express 和 MongoDB 来创建应用程序的后端。
4.1 创建后端项目
我们可以使用以下命令创建后端项目:
mkdir blog-app-backend
cd blog-app-backend
npm init -y
4.2 安装依赖
现在我们可以安装项目需要的依赖:
npm install express body-parser mongoose cors --save
4.3 创建数据库模型
我们需要在 MongoDB 中创建模型来表示博客文章。
在 blog-app-backend 目录下,创建一个名为 models 的子目录,并在该目录下创建一个名为 post.js 的文件。
mkdir models
cd models
touch post.js
在 post.js 中,我们将定义一个名为 Post 的模式:
const mongoose = require('mongoose');
const postSchema = mongoose.Schema({
title: String,
content: String,
author: String
});
module.exports = mongoose.model('Post', postSchema);
4.4 创建路由
在 blog-app-backend 目录下,创建一个名为 routes 的子目录,并在该目录下创建一个名为 posts.js 的文件。
mkdir routes
cd routes
touch posts.js
我们将在 posts.js 中创建一个名为 posts 的路由。
const express = require('express');
const Post = require('../models/post');
const router = express.Router();
router.get('/', (req, res) => {
Post.find({}, (err, posts) => {
if (err) {
console.log(err);
res.status(500).json({
error: 'Internal error, please try again'
});
} else {
res.status(200).json(posts);
}
});
});
router.post('/', (req, res) => {
const post = new Post({
title: req.body.title,
content: req.body.content,
author: req.body.author
});
post.save((err, post) => {
if (err) {
console.log(err);
res.status(500).json({
error: 'Internal error, please try again'
});
} else {
res.status(200).json(post);
}
});
});
module.exports = router;
4.5 创建服务器
在 blog-app-backend 目录下创建一个名为 index.js 的文件:
touch index.js
在 index.js 中,我们将启动服务器:
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const cors = require('cors');
const posts = require('./routes/posts');
const app = express();
app.use(bodyParser.json());
app.use(cors());
mongoose.connect('mongodb://localhost:27017/blog-app', { useNewUrlParser: true });
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
app.use('/posts', posts);
const port = 3000;
app.listen(port, () => console.log('Server started on port ' + port));
5. 创建博客前端
5.1 创建组件
现在我们可以使用 Angular CLI 创建一个组件来显示文章列表和一个表单来添加新文章。
ng generate component post-list
ng generate component post-create
5.2 在组件中添加代码
我们将在 post-list 组件中添加以下代码,以从后端获取文章列表:
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Component({
selector: 'app-post-list',
templateUrl: './post-list.component.html',
styleUrls: ['./post-list.component.css']
})
export class PostListComponent implements OnInit {
posts: any;
constructor(private http: HttpClient) { }
ngOnInit() {
this.http.get('http://localhost:3000/posts').subscribe(posts => {
this.posts = posts;
});
}
}
我们将在 post-list.component.html 中添加以下代码,以显示文章列表:
<div class="post-list" *ngIf="posts">
<div class="post-item" *ngFor="let post of posts">
<h2>{{ post.title }}</h2>
{{ post.content }}
{{ post.author }}
</div>
</div>
我们将在 post-create 组件中添加以下代码,以创建新文章:
import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Component({
selector: 'app-post-create',
templateUrl: './post-create.component.html',
styleUrls: ['./post-create.component.css']
})
export class PostCreateComponent {
title: string;
content: string;
author: string;
constructor(private http: HttpClient) { }
createPost() {
const post = { title: this.title, content: this.content, author: this.author };
this.http.post('http://localhost:3000/posts', post).subscribe(result => {
console.log(result);
});
}
}
我们将在 post-create.component.html 中添加以下代码,以呈现表单:
<div class="post-create">
<form>
<div class="form-group">
<label for="title">Title</label>
<input type="text" class="form-control" id="title" [(ngModel)]="title">
</div>
<div class="form-group">
<label for="content">Content</label>
<textarea class="form-control" id="content" rows="3" [(ngModel)]="content"></textarea>
</div>
<div class="form-group">
<label for="author">Author</label>
<input type="text" class="form-control" id="author" [(ngModel)]="author">
</div>
<button type="submit" class="btn btn-primary" (click)="createPost()">Create Post</button>
</form>
</div>
5.3 显示组件
现在我们需要将博客组件添加到应用程序中,以便用户可以访问它们。
我们将在 app.component.html 中添加以下代码:
<app-post-create></app-post-create>
<hr>
<app-post-list></app-post-list>
6. 运行应用程序
我们已经完成了应用程序的开发。现在我们可以启动它:
ng serve
现在我们可以在浏览器中访问该应用程序并使用它。
7. 结论
在这篇文章中,我们学习了如何使用 Angular 和 MongoDB 创建一个博客应用程序。
我们首先创建了一个 Angular 项目,并学习了如何在其中添加组件以显示文章列表和添加新文章的表单。
然后,我们学习了如何使用 Node.js、Express 和 MongoDB 创建应用程序的后端。
最后,我们将后端集成到前端,以创建一个完整的应用程序。