- 前端(Web,使用React)
App.js (React)jxhcwhyp.com
jsx
import React, { useState, useEffect } from ‘react’;
function TodoApp() {
const [todos, setTodos] = useState([]);
const [newTodo, setNewTodo] = useState(‘’);
useEffect(() => {
// 假设这里有一个API调用从后端获取todos
fetch(‘/todos’)
.then(response => response.json())
.then(data => setTodos(data))
.catch(error => console.error(‘Error fetching todos:’, error));
}, []);
const addTodo = async () => {
if (newTodo.trim()) {
try {
const response = await fetch(‘/todos’, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
},
body: JSON.stringify({ text: newTodo }),
});
if (response.ok) {
const newTodoData = await response.json();
setTodos([…todos, newTodoData]);
setNewTodo(‘’);
}
} catch (error) {
console.error(‘Error adding todo:’, error);
}
}
};
return (
<input
type=“text”
value={newTodo}
onChange={e => setNewTodo(e.target.value)}
placeholder=“Add a todo”
/>
Add Todo
{todos.map(todo => (
- {todo.text}
))}
);
}
export default TodoApp;
2. 后端(Node.js + Express + MongoDB)
server.js (Node.js + Express + Mongoose)
javascript
const express = require(‘express’);
const mongoose = require(‘mongoose’);
const bodyParser = require(‘body-parser’);
const app = express();
const port = 3000;
mongoose.connect(‘mongodb://localhost:27017/todoApp’, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
const todoSchema = new mongoose.Schema({
text: String,
createdAt: { type: Date, default: Date.now },
});
const Todo = mongoose.model(‘Todo’, todoSchema);
app.use(bodyParser.json());
app.get(‘/todos’, async (req, res) => {
try {
const todos = await Todo.find();
res.json(todos);
} catch (err) {
res.status(500).send(err);
}
});
app.post(‘/todos’, async (req, res) => {
const { text } = req.body;
const newTodo = new Todo({ text });
try {
const savedTodo = await newTodo.save();
res.status(201).json(savedTodo);
} catch (err) {
res.status(400).send(err);
}
});
app.listen(port, () => {
console.log(Server running on port ${port}
);
});
3. 数据库(MongoDB)
MongoDB的配置如上Node.js示例中所示,通常是通过mongoose.connect()连接到本地或远程MongoDB数据库实例。数据库、集合(在这里是todos)和模式(todoSchema)的创建和管理是通过Mongoose模型来完成的。
-
跨平台考虑
虽然上述示例是针对Web平台的,但如果你想要创建一个跨平台的移动App,你可以考虑使用React Native(前端)和Node.js(后端,可能通过某种形式的微服务架构部署)的组合。React Native允许你使用JavaScript和React来编写一次代码,然后编译成iOS和Android的原生应用。 -
其他技术栈
Flutter (Dart): 用于构建跨平台的移动应用。
Xamarin (C#): 另一个用于构建跨生成一个完整的App代码涉及多个组件和不同的编程语言,这取决于App的复杂性和目标平台。不过,我可以为你提供一个简化的示例,涵盖前端(用户界面)、后端(API服务)以及可能的数据库交互,使用不同的编程语言和技术栈。 -
前端(Web,使用React)
App.js (React)
jsx
import React, { useState, useEffect } from ‘react’;
function TodoApp() {
const [todos, setTodos] = useState([]);
const [newTodo, setNewTodo] = useState(‘’);
useEffect(() => {
// 假设这里有一个API调用从后端获取todos
fetch(‘/todos’)
.then(response => response.json())
.then(data => setTodos(data))
.catch(error => console.error(‘Error fetching todos:’, error));
}, []);
const addTodo = async () => {
if (newTodo.trim()) {
try {
const response = await fetch(‘/todos’, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
},
body: JSON.stringify({ text: newTodo }),
});
if (response.ok) {
const newTodoData = await response.json();
setTodos([…todos, newTodoData]);
setNewTodo(‘’);
}
} catch (error) {
console.error(‘Error adding todo:’, error);
}
}
};
return (
<input
type=“text”
value={newTodo}
onChange={e => setNewTodo(e.target.value)}
placeholder=“Add a todo”
/>
Add Todo
{todos.map(todo => (
- {todo.text}
))}
);
}
export default TodoApp;
2. 后端(Node.js + Express + MongoDB)
server.js (Node.js + Express + Mongoose)
javascript
const express = require(‘express’);
const mongoose = require(‘mongoose’);
const bodyParser = require(‘body-parser’);
const app = express();
const port = 3000;
mongoose.connect(‘mongodb://localhost:27017/todoApp’, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
const todoSchema = new mongoose.Schema({
text: String,
createdAt: { type: Date, default: Date.now },
});
const Todo = mongoose.model(‘Todo’, todoSchema);
app.use(bodyParser.json());
app.get(‘/todos’, async (req, res) => {
try {
const todos = await Todo.find();
res.json(todos);
} catch (err) {
res.status(500).send(err);
}
});
app.post(‘/todos’, async (req, res) => {
const { text } = req.body;
const newTodo = new Todo({ text });
try {
const savedTodo = await newTodo.save();
res.status(201).json(savedTodo);
} catch (err) {
res.status(400).send(err);
}
});
app.listen(port, () => {
console.log(Server running on port ${port}
);
});
3. 数据库(MongoDB)
MongoDB的配置如上Node.js示例中所示,通常是通过mongoose.connect()连接到本地或远程MongoDB数据库实例。数据库、集合(在这里是todos)和模式(todoSchema)的创建和管理是通过Mongoose模型来完成的。
-
跨平台考虑
虽然上述示例是针对Web平台的,但如果你想要创建一个跨平台的移动App,你可以考虑使用React Native(前端)和Node.js(后端,可能通过某种形式的微服务架构部署)的组合。React Native允许你使用JavaScript和React来编写一次代码,然后编译成iOS和Android的原生应用。 -
其他技术栈
Flutter (Dart): 用于构建跨平台的移动应用。
Xamarin (C#): 另一个用于构建跨