一、概要设计
本次开发的图书推荐应用分为前端和后端两部分。前端使用微信小程序进行开发,后端使用Node.js搭建服务器,并通过使用MongoDB进行数据持久化。
前端部分包含了图书推荐列表、图书详情页和用户登录注册三个页面。用户可以通过图书推荐列表浏览推荐的图书,并点击查看图书详情。用户还可以通过登录注册来管理个人信息。
后端部分包含了用户相关API和图书相关API。用户相关API包含用户登录、注册和个人信息更新功能。图书相关API包含图书列表查询和图书详情查询功能。
二、前端设计和实现
- 创建微信小程序
首先,需要在微信开发者工具中创建一个新的微信小程序,并在app.json中配置小程序的基本信息和页面路由。
- 创建图书推荐列表页面
图书推荐列表页面用来展示推荐的图书列表。在pages目录下创建recommend文件夹,并在recommend文件夹下创建recommend.js、recommend.json和recommend.wxss三个文件。
recommend.js的代码如下:
Page({
data: {
books: []
},
onLoad: function() {
// 请求图书列表数据
wx.request({
url: 'http://localhost:3000/books',
success: (res) => {
this.setData({
books: res.data
})
}
})
}
})
recommend.json的代码如下:
{
"navigationBarTitleText": "图书推荐"
}
recommend.wxss的代码如下:
/* recommend.wxss */
- 创建图书详情页
图书详情页用来展示图书的详细信息。在pages目录下创建book文件夹,并在book文件夹下创建book.js、book.json和book.wxss三个文件。
book.js的代码如下:
Page({
data: {
book: {}
},
onLoad: function(options) {
// 获取图书id
const bookId = options.id;
// 请求图书详情数据
wx.request({
url: 'http://localhost:3000/books/' + bookId,
success: (res) => {
this.setData({
book: res.data
})
}
})
}
})
book.json的代码如下:
{
"navigationBarTitleText": "图书详情"
}
book.wxss的代码如下:
/* book.wxss */
- 创建用户登录注册页面
用户登录注册页面用来实现用户的登录和注册功能。在pages目录下创建user文件夹,并在user文件夹下创建user.js、user.json和user.wxss三个文件。
user.js的代码如下:
Page({
data: {
username: '',
password: ''
},
login: function() {
// 请求登录接口
wx.request({
url: 'http://localhost:3000/login',
method: 'POST',
data: {
username: this.data.username,
password: this.data.password
},
success: (res) => {
if (res.data.success) {
// 登录成功,保存用户信息到本地
wx.setStorageSync('userInfo', res.data.userInfo);
// 跳转到图书推荐列表页面
wx.navigateTo({
url: '/pages/recommend/recommend'
})
} else {
// 登录失败,弹出提示框
wx.showToast({
title: '登录失败',
icon: 'none'
})
}
}
})
},
register: function() {
// 请求注册接口
wx.request({
url: 'http://localhost:3000/register',
method: 'POST',
data: {
username: this.data.username,
password: this.data.password
},
success: (res) => {
if (res.data.success) {
// 注册成功,保存用户信息到本地
wx.setStorageSync('userInfo', res.data.userInfo);
// 跳转到图书推荐列表页面
wx.navigateTo({
url: '/pages/recommend/recommend'
})
} else {
// 注册失败,弹出提示框
wx.showToast({
title: '注册失败',
icon: 'none'
})
}
}
})
}
})
user.json的代码如下:
{
"navigationBarTitleText": "用户登录注册"
}
user.wxss的代码如下:
/* user.wxss */
三、后端设计和实现
- 创建Node.js项目
首先,需要创建一个Node.js项目,并通过npm初始化项目。
$ mkdir book-recommendation-backend
$ cd book-recommendation-backend
$ npm init -y
- 安装依赖包
项目中需要安装一些依赖包,包括express、mongoose和body-parser。
$ npm install express mongoose body-parser --save
- 创建服务器
在项目根目录下创建server.js文件,用来启动服务器并监听3000端口。server.js的代码如下:
const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
// Connect to MongoDB
mongoose.connect('mongodb://localhost/book-recommendation');
// Create express app
const app = express();
// Parse JSON data
app.use(bodyParser.json());
// Set up routes
app.use('/books', require('./routes/book'));
app.use('/login', require('./routes/login'));
app.use('/register', require('./routes/register'));
// Start server
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000/');
});
- 创建数据模型
在models目录下创建book.js文件,用来定义图书的数据模型。book.js的代码如下:
const mongoose = require('mongoose');
const bookSchema = new mongoose.Schema({
title: {
type: String,
required: true
},
author: {
type: String,
required: true
},
description: {
type: String,
required: true
},
price: {
type: Number,
required: true
}
});
const Book = mongoose.model('Book', bookSchema);
module.exports = Book;
- 创建图书相关API
在routes目录下创建book.js文件,用来定义图书相关的API。book.js的代码如下:
const express = require('express');
const router = express.Router();
const Book = require('../models/book');
// Get book list
router.get('/', (req, res) => {
Book.find({}, (err, books) => {
if (err) {
res.status(500).json({
success: false,
message: 'Error retrieving books'
});
} else {
res.json(books);
}
});
});
// Get book details
router.get('/:id', (req, res) => {
const bookId = req.params.id;
Book.findById(bookId, (err, book) => {
if (err) {
res.status(500).json({
success: false,
message: 'Error retrieving book details'
});
} else if (!book) {
res.status(404).json({
success: false,
message: 'Book not found'
});
} else {
res.json(book);
}
});
});
module.exports = router;
- 创建用户相关API
在routes目录下创建login.js文件,用来定义用户登录的API。login.js的代码如下:
const express = require('express');
const router = express.Router();
// User login
router.post('/', (req, res) => {
const username = req.body.username;
const password = req.body.password;
// TODO: Implement login logic
res.json({
success: true,
userInfo: {
username: username
}
});
});
module.exports = router;
在routes目录下创建register.js文件,用来定义用户注册的API。register.js的代码如下:
const express = require('express');
const router = express.Router();
// User register
router.post('/', (req, res) => {
const username = req.body.username;
const password = req.body.password;
// TODO: Implement register logic
res.json({
success: true,
userInfo: {
username: username
}
});
});
module.exports = router;
四、总结
本篇文章简单介绍了如何使用微信小程序开发一个简易的图书推荐应用。通过前端页面的设计和后端API的实现,实现了图书推荐列表展示、图书详情查询以及用户登录注册等功能。本篇文章只是一个基础的示例,开发者可以根据自己的需求