色视频综合无码一区二区三区,国产色综合天天综合网,久久激情五月丁香伊人,chinasex喷白浆videos自慰

當(dāng)前位置:首頁 > 網(wǎng)站建設(shè) > 正文內(nèi)容

MERN全棧開發(fā)實戰(zhàn),從零到部署

znbo1周前 (06-26)網(wǎng)站建設(shè)489

本文目錄導(dǎo)讀:

  1. 引言
  2. 1. 什么是MERN技術(shù)棧?
  3. 2. 環(huán)境搭建
  4. 3. 構(gòu)建后端(Node.js + Express.js + MongoDB)
  5. 4. 構(gòu)建前端(React.js)
  6. 5. 前后端聯(lián)調(diào)
  7. 6. 部署MERN應(yīng)用
  8. 7. 總結(jié)

在當(dāng)今快速發(fā)展的Web開發(fā)領(lǐng)域,全棧開發(fā)已成為許多開發(fā)者的首選,MERN(MongoDB、Express.js、React.js、Node.js)技術(shù)棧因其高效、靈活和易于上手的特點,成為構(gòu)建現(xiàn)代Web應(yīng)用的熱門選擇,本文將帶你從零開始,一步步搭建一個完整的MERN應(yīng)用,并最終部署到云端。

MERN全棧開發(fā)實戰(zhàn),從零到部署


什么是MERN技術(shù)棧?

MERN是由四個核心技術(shù)組成的全棧開發(fā)框架:

  • MongoDB:一個NoSQL數(shù)據(jù)庫,適合存儲JSON格式的數(shù)據(jù)。
  • Express.js:一個基于Node.js的輕量級Web框架,用于構(gòu)建后端API。
  • React.js:一個由Facebook開發(fā)的JavaScript庫,用于構(gòu)建用戶界面。
  • Node.js:一個基于Chrome V8引擎的JavaScript運(yùn)行時,用于構(gòu)建服務(wù)器端應(yīng)用。

MERN的優(yōu)勢在于:

  • 前后端均使用JavaScript,減少學(xué)習(xí)成本。
  • React提供強(qiáng)大的組件化開發(fā)體驗。
  • MongoDB的靈活性使其適合快速迭代的開發(fā)模式。

環(huán)境搭建

在開始開發(fā)之前,我們需要安裝必要的工具和環(huán)境:

1 安裝Node.js和npm

Node.js是運(yùn)行JavaScript代碼的環(huán)境,npm(Node Package Manager)是它的包管理工具。
訪問 Node.js官網(wǎng) 下載并安裝最新LTS版本。

驗證安裝:

node -v
npm -v

2 安裝MongoDB

MongoDB是MERN中的數(shù)據(jù)庫組件,可以選擇:

3 代碼編輯器

推薦使用 Visual Studio Code(VS Code),它支持JavaScript開發(fā),并有許多有用的插件。


構(gòu)建后端(Node.js + Express.js + MongoDB)

1 初始化項目

創(chuàng)建一個新文件夾并初始化npm:

mkdir mern-app
cd mern-app
npm init -y

2 安裝依賴

安裝Express和MongoDB驅(qū)動:

npm install express mongoose cors
  • express:Web框架
  • mongoose:MongoDB的ODM(對象數(shù)據(jù)建模)庫
  • cors:處理跨域請求

3 創(chuàng)建Express服務(wù)器

server.js 文件中編寫:

const express = require("express");
const mongoose = require("mongoose");
const cors = require("cors");
const app = express();
app.use(cors());
app.use(express.json()); // 解析JSON請求體
// 連接MongoDB
mongoose.connect("mongodb://localhost:27017/mern-demo", {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});
// 定義數(shù)據(jù)模型
const Todo = mongoose.model("Todo", {
  text: String,
  completed: Boolean,
});
// API路由
app.get("/api/todos", async (req, res) => {
  const todos = await Todo.find();
  res.json(todos);
});
app.post("/api/todos", async (req, res) => {
  const newTodo = new Todo(req.body);
  await newTodo.save();
  res.json(newTodo);
});
// 啟動服務(wù)器
const PORT = 5000;
app.listen(PORT, () => {
  console.log(`Server running on http://localhost:${PORT}`);
});

運(yùn)行服務(wù)器:

node server.js

構(gòu)建前端(React.js)

1 創(chuàng)建React應(yīng)用

使用 create-react-app 初始化前端項目:

npx create-react-app client
cd client
npm start

2 連接后端API

client/src/App.js 中編寫:

import React, { useState, useEffect } from "react";
import axios from "axios";
function App() {
  const [todos, setTodos] = useState([]);
  const [text, setText] = useState("");
  useEffect(() => {
    fetchTodos();
  }, []);
  const fetchTodos = async () => {
    const res = await axios.get("http://localhost:5000/api/todos");
    setTodos(res.data);
  };
  const addTodo = async () => {
    await axios.post("http://localhost:5000/api/todos", {
      text,
      completed: false,
    });
    setText("");
    fetchTodos();
  };
  return (
    <div>
      <h1>MERN Todo App</h1>
      <input
        type="text"
        value={text}
        onChange={(e) => setText(e.target.value)}
      />
      <button onClick={addTodo}>Add Todo</button>
      <ul>
        {todos.map((todo) => (
          <li key={todo._id}>{todo.text}</li>
        ))}
      </ul>
    </div>
  );
}
export default App;

安裝 axios 用于HTTP請求:

npm install axios

前后端聯(lián)調(diào)

1 解決跨域問題

server.js 中啟用CORS:

app.use(cors());

2 代理設(shè)置

client/package.json 中添加:

"proxy": "http://localhost:5000"

這樣前端可以直接調(diào)用 /api/todos 而無需完整URL。


部署MERN應(yīng)用

1 部署后端(Node.js + MongoDB)

推薦使用:

  • Render(免費托管Node.js應(yīng)用)
  • Heroku(經(jīng)典PaaS平臺)
  • AWS / DigitalOcean(VPS方案)

Heroku 為例:

  1. 注冊并安裝 Heroku CLI
  2. 創(chuàng)建 Procfile
    web: node server.js
  3. 部署:
    heroku login
    heroku create
    git push heroku main

2 部署前端(React.js)

推薦使用:

  • Vercel(最佳React托管平臺)
  • Netlify(免費靜態(tài)網(wǎng)站托管)
  • GitHub Pages(適合小型項目)

Vercel 為例:

  1. 安裝Vercel CLI:
    npm install -g vercel
  2. 部署:
    cd client
    vercel

本文詳細(xì)介紹了如何使用MERN技術(shù)棧構(gòu)建一個全棧應(yīng)用,并最終部署到云端,MERN的優(yōu)勢在于:

  • 前后端統(tǒng)一使用JavaScript,提高開發(fā)效率。
  • React的組件化開發(fā),使前端代碼更易維護(hù)。
  • MongoDB的靈活性,適合快速迭代的項目。

如果你想深入學(xué)習(xí)MERN,可以嘗試:

  • 添加用戶認(rèn)證(JWT + Passport.js)
  • 使用Redux管理狀態(tài)
  • 優(yōu)化性能(SSR、代碼拆分)

希望這篇教程能幫助你從零開始掌握MERN全棧開發(fā)!??

標(biāo)簽: MERN全棧開發(fā)

相關(guān)文章

廣州公司做網(wǎng)站,打造數(shù)字化未來的關(guān)鍵一步

本文目錄導(dǎo)讀:廣州公司做網(wǎng)站的重要性廣州公司做網(wǎng)站的流程廣州公司做網(wǎng)站的注意事項廣州公司做網(wǎng)站的未來趨勢在當(dāng)今數(shù)字化時代,企業(yè)網(wǎng)站已成為企業(yè)展示形象、拓展市場、提升品牌影響力的重要工具,對于廣州這座經(jīng)...

廣州做網(wǎng)站的網(wǎng)絡(luò)公司,如何選擇最適合您的合作伙伴?

本文目錄導(dǎo)讀:廣州網(wǎng)絡(luò)公司的發(fā)展現(xiàn)狀選擇廣州網(wǎng)絡(luò)公司的關(guān)鍵因素廣州網(wǎng)絡(luò)公司的服務(wù)流程廣州網(wǎng)絡(luò)公司的未來發(fā)展趨勢在數(shù)字化時代,網(wǎng)站已經(jīng)成為企業(yè)展示形象、推廣產(chǎn)品和服務(wù)的重要窗口,無論是初創(chuàng)企業(yè)還是成熟公...

廣州網(wǎng)站建設(shè)公司如何通過網(wǎng)絡(luò)安全優(yōu)化提升企業(yè)競爭力

本文目錄導(dǎo)讀:網(wǎng)絡(luò)安全優(yōu)化的重要性廣州網(wǎng)站建設(shè)公司在網(wǎng)絡(luò)安全優(yōu)化中的關(guān)鍵策略網(wǎng)絡(luò)安全優(yōu)化對用戶體驗的影響廣州網(wǎng)站建設(shè)公司的未來發(fā)展方向在數(shù)字化時代,網(wǎng)站已成為企業(yè)展示形象、拓展業(yè)務(wù)的重要窗口,作為中國...

廣州網(wǎng)站建設(shè)、網(wǎng)絡(luò)推廣與小程序開發(fā)公司,助力企業(yè)數(shù)字化轉(zhuǎn)型的全方位服務(wù)

本文目錄導(dǎo)讀:廣州網(wǎng)站建設(shè)的重要性網(wǎng)絡(luò)推廣的必要性小程序開發(fā)的崛起廣州網(wǎng)站建設(shè)、網(wǎng)絡(luò)推廣與小程序開發(fā)公司的發(fā)展趨勢如何選擇一家合適的廣州網(wǎng)站建設(shè)、網(wǎng)絡(luò)推廣與小程序開發(fā)公司廣州網(wǎng)站建設(shè)的重要性 網(wǎng)站是...

廣州網(wǎng)站建設(shè)平臺有哪些?全面解析廣州網(wǎng)站建設(shè)的選擇與優(yōu)勢

本文目錄導(dǎo)讀:廣州網(wǎng)站建設(shè)平臺的類型廣州網(wǎng)站建設(shè)平臺的優(yōu)勢如何選擇適合的廣州網(wǎng)站建設(shè)平臺廣州網(wǎng)站建設(shè)的發(fā)展趨勢 隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)站建設(shè)已成為企業(yè)、個人展示品牌形象、拓展業(yè)務(wù)的重要途徑,廣...

廣州網(wǎng)站建設(shè)優(yōu)化公司招聘,如何打造高效團(tuán)隊,助力企業(yè)數(shù)字化轉(zhuǎn)型

本文目錄導(dǎo)讀:廣州網(wǎng)站建設(shè)優(yōu)化行業(yè)的現(xiàn)狀與趨勢廣州網(wǎng)站建設(shè)優(yōu)化公司招聘的核心需求廣州網(wǎng)站建設(shè)優(yōu)化公司招聘的挑戰(zhàn)與對策如何打造高效團(tuán)隊,助力企業(yè)數(shù)字化轉(zhuǎn)型廣州網(wǎng)站建設(shè)優(yōu)化公司招聘的未來展望在當(dāng)今數(shù)字化時...

發(fā)表評論

訪客

看不清,換一張

◎歡迎參與討論,請在這里發(fā)表您的看法和觀點。