📜  全栈示例 (1)

📅  最后修改于: 2023-12-03 15:36:45.991000             🧑  作者: Mango

全栈示例

全栈开发是指一种通过掌握多个技术领域的开发方式,即从前端(UI界面、交互设计),到后端(服务器端技术、数据库设计),再到DevOps(部署、测试、运维)全方位进行开发的开发者,这种开发者通常被称为全栈工程师。

技术栈

在全栈开发中,你至少需要掌握以下技术:

前端技术
  • HTML/CSS/JS
  • React/Vue/Angular
  • Webpack/Gulp
后端技术
  • Node.js/Python/Ruby
  • Express/Koa
  • MySQL/PostgreSQL/MongoDB/Redis
DevOps
  • Docker
  • Jenkins
  • AWS/Google Cloud/Azure
示例

下面是一个使用全栈技术栈开发的示例:

项目介绍

这是一个简单的博客系统,用户可以查看博客列表、详情,还可以发表自己的博客。

前端实现

前端使用React框架来实现,页面使用了Ant Design组件库。

//index.js

import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter as Router } from 'react-router-dom';
import App from './App';

ReactDOM.render(
  <Router>
    <App />
  </Router>,
  document.getElementById('root')
);
后端实现

后端使用Node.js框架Express来实现,数据存储使用MongoDB。

//app.js

const express = require('express');
const mongoose = require('mongoose');
const cors = require('cors');
const dotenv = require('dotenv');
const blogRoute = require('./routes/blogRoute');

dotenv.config();

const app = express();
const port = process.env.PORT || 5000;

mongoose.connect(process.env.MONGO_URI, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  useFindAndModify: false,
})
  .then(() => console.log('DB Connected!'))
  .catch((err) => console.log(`DB Connection Error: ${err.message}`));

app.use(cors({ origin: process.env.FRONTEND_URL }));
app.use('/blogs', blogRoute);

app.listen(port, () => console.log(`Server listening on port ${port}`));
DevOps实现

DevOps使用Docker + Nginx来实现,我们将前端、后端以及MongoDB容器化,并通过Nginx组合在一起。

# Dockerfile

# Build React App
FROM node:14-alpine as build

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

ENV REACT_APP_API_URL=http://backend:5000

RUN npm run build

# Production Image
FROM nginx:1.19-alpine

RUN rm -rf /usr/share/nginx/html/*

COPY ./nginx.conf /etc/nginx/conf.d/default.conf

COPY --from=build /app/build /usr/share/nginx/html

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]
总结

全栈工程师需要掌握多领域知识,能够利用多种技术来解决实际问题。掌握全栈技能可以使你能够成为更有价值的工程师,在职场上获得更多机会。