Skip to content

Giới thiệu về khóa học Node.js API cho Ecommerce

Chào mừng các em đến với khóa học Node.js/Express xây dựng API cho ứng dụng thương mại điện tử! 👨‍🏫

Khóa học này sẽ giúp các em:

  • Hiểu rõ cách xây dựng API backend cho ứng dụng ecommerce.
  • Thành thạo các bước thiết lập môi trường, khởi tạo dự án backend hiện đại.
  • Làm quen với các công cụ phổ biến như Babel, dotenv, pnpm, Postman...
  • Xây dựng các API quan trọng như quản lý sản phẩm, người dùng, giỏ hàng, đơn hàng.
  • Tích hợp các tính năng bảo mật như xác thực JWT, mã hóa mật khẩu.
  • Tối ưu hiệu năng và tổ chức code khoa học, dễ mở rộng.

Giới thiệu Node.js

Node.js là gì?

Node.js là một nền tảng (runtime) giúp chạy JavaScript ở phía server, không chỉ trong trình duyệt. Nhờ Node.js, các em có thể dùng JavaScript để xây dựng các ứng dụng web, API, real-time chat, và nhiều loại ứng dụng khác. Node.js ra đời năm 2009 bởi Ryan Dahl, nhằm giải quyết bài toán hiệu năng và xử lý nhiều kết nối cùng lúc mà các nền tảng truyền thống gặp khó khăn.

Tại sao nên học và sử dụng Node.js?

  • Dùng chung ngôn ngữ: Node.js cho phép sử dụng JavaScript ở cả frontend và backend, giúp học nhanh và làm việc hiệu quả hơn.
  • Xử lý bất đồng bộ (asynchronous): Đây là một điểm mạnh của Node.js, giúp xử lý nhiều yêu cầu đồng thời mà không làm chậm hệ thống.
  • Hệ sinh thái phong phú: Với npm (Node Package Manager), Node.js có hàng triệu thư viện hỗ trợ, giúp tăng tốc độ phát triển ứng dụng.
  • Được các công ty lớn sử dụng: Netflix, LinkedIn, Uber, và nhiều công ty khác đã áp dụng Node.js để xây dựng hệ thống của họ.
  • Dễ học: Nếu đã biết JavaScript, việc học Node.js sẽ rất dễ dàng. Ngoài ra, nhu cầu tuyển dụng Node.js rất cao với mức lương hấp dẫn.

So sánh Node.js với PHP

Tiêu chíNode.jsPHP
Ngôn ngữJavaScriptPHP
Kiểu xử lýBất đồng bộ (asynchronous)Đa phần đồng bộ (synchronous)
Hiệu năngCao với ứng dụng real-timeTốt cho web truyền thống
Hệ sinh tháinpm (rất lớn, hiện đại)Composer (lớn, truyền thống)
Học tậpDễ nếu đã biết JSDễ bắt đầu cho web
Ứng dụng phổ biếnAPI, chat, game, microserviceWebsite, CMS (WordPress...)

Tóm lại, Node.js rất phù hợp cho các ứng dụng hiện đại, cần tốc độ và khả năng mở rộng, còn PHP vẫn mạnh ở mảng web truyền thống, blog, CMS.


Khi nào nên chọn Node.js?

  • Khi xây dựng API cho ứng dụng ecommerce, cần xử lý nhiều yêu cầu đồng thời.
  • Khi muốn tích hợp các tính năng real-time như thông báo đơn hàng, chat hỗ trợ khách hàng.
  • Khi cần tốc độ phát triển nhanh, nhiều thư viện hỗ trợ.
  • Khi muốn xây dựng hệ thống có khả năng mở rộng và hiệu năng cao.

Chuẩn bị cho khóa học Node.js

Kiến thức cần có

Để học Node.js hiệu quả, bạn nên có kiến thức cơ bản về:

  • JavaScript ES6+: Hiểu các khái niệm như let, const, arrow function, async/await.
  • Networking và HTTP: Hiểu cách giao tiếp giữa client và server qua giao thức HTTP.
  • Cơ sở dữ liệu: Biết cách làm việc với cơ sở dữ liệu như MongoDB hoặc MySQL.

Thiết lập môi trường

1. Cài đặt Node.js

Node.js là nền tảng giúp chạy JavaScript phía server. Nếu máy chưa có, hãy vào https://nodejs.org/en để tải về và cài đặt.

2. Cài đặt pnpm

Thầy khuyên dùng pnpm thay cho npm vì tốc độ cài đặt nhanh và tiết kiệm bộ nhớ hơn. Cài đặt bằng lệnh:

bash
npm i -g pnpm

3. Khởi tạo dự án Node.js

  • Tạo một thư mục mới cho dự án, ví dụ: WD20104. Tên gì cũng được, miễn các em dễ nhớ.

  • Mở terminal, di chuyển vào thư mục đó và khởi tạo dự án:

    bash
    npm init -y

    Lệnh này sẽ tạo file package.json – nơi lưu thông tin dự án và các thư viện sẽ cài đặt sau này.

  • Cài các thư viện cần thiết:

    bash
    pnpm i express mongoose cors bcryptjs jsonwebtoken dotenv morgan

    Mỗi thư viện đều có vai trò riêng:

    • express: Giúp xây dựng web/API nhanh chóng.
    • mongoose: Để kết nối và làm việc với MongoDB.
    • cors: Cho phép truy cập API từ nhiều nguồn khác nhau.
    • bcryptjs: Dùng để mã hóa mật khẩu.
    • jsonwebtoken: Phục vụ xác thực người dùng qua token.
    • dotenv: Giúp quản lý các biến môi trường, bảo mật thông tin nhạy cảm.
    • morgan: Hỗ trợ ghi log các request, rất tiện khi debug.

4. Cài đặt Babel cho dự án

Để code hiện đại hơn, các em cần Babel – công cụ chuyển đổi mã JavaScript mới về dạng mà Node.js hiểu được.
Cài đặt các gói cần thiết:

bash
pnpm i -D @babel/core @babel/node @babel/preset-env nodemon
  • @babel/core, @babel/node, @babel/preset-env: Bộ công cụ Babel.
  • nodemon: Giúp tự động restart server khi code thay đổi.

Sau đó, tạo file .babelrc ở thư mục gốc với nội dung:

json
{
    "presets": ["@babel/preset-env"]
}

Nhờ vậy, các em có thể dùng cú pháp import/export, async/await... mà không lo Node.js chưa hỗ trợ.


5. Cấu hình package.json

Thêm script để chạy dự án:

json
"scripts": {
  "dev": "nodemon --exec babel-node src/app.js"
}

Script này giúp các em chỉ cần chạy pnpm run dev là server sẽ tự động khởi động bằng Babel, đồng thời nodemon sẽ theo dõi mọi thay đổi trong mã nguồn và tự động restart server.


6. Thiết lập cấu trúc thư mục

src/
├── app.js                  # Tệp chính khởi chạy ứng dụng
├── routers/                # Chứa các file định nghĩa route
│   ├── index.js            # Router chính, tập hợp các router con
│   └── posts.js            # Router cho bài viết
├── note/                   # Thư mục lưu ghi chú hoặc tài liệu
├── .babelrc                # Cấu hình Babel
├── .env                    # Lưu thông tin biến môi trường
└── .gitignore              # Định nghĩa các file/thư mục cần bỏ qua khi đẩy lên Git

7. Cấu hình biến môi trường

Tạo file .env với nội dung:

env
PORT=8000

Nhờ vậy, khi muốn đổi port, các em chỉ cần sửa file này mà không phải động vào code.


8. Viết mã nguồn khởi tạo app

src/app.js

js
// filepath: src/app.js
import express from "express";
import dotenv from "dotenv";
import router from "./routers";

dotenv.config();
const app = express();

app.use("/api", router);

app.listen(process.env.PORT, () => {
    console.log(`Server is running on port ${process.env.PORT}`);
});

9. Cấu hình router

src/routers/index.js

js
// filepath: src/routers/index.js
import { Router } from "express";
import postsRouter from "./posts";

const router = Router();
router.use("/posts", postsRouter);

export default router;

src/routers/posts.js

js
// filepath: src/routers/posts.js
import { Router } from "express";

const router = Router();

router.get("/", (req, res) => {
    res.json({ message: "Danh sách bài viết" });
});

export default router;

10. Chạy thử dự án

Chạy lệnh:

bash
pnpm run dev

Nếu thấy dòng "Server is running..." hiện ra, nghĩa là server đã hoạt động.


Kiểm tra API với Postman

  1. Mở Postman (hoặc Insomnia, hoặc bất cứ công cụ nào các em thích).
  2. Tạo một request mới với phương thức GET.
  3. Nhập URL: http://localhost:8000/api/posts
  4. Nhấn Send.
  5. Nếu thành công, các em sẽ thấy kết quả:
    json
    {
        "message": "Danh sách bài viết"
    }

Kết luận

Qua bài này, các em không chỉ biết cách tạo một dự án Node.js/Express mà còn hiểu rõ ý nghĩa của từng bước.
Hãy luôn tự hỏi "vì sao mình làm như vậy", vì hiểu bản chất sẽ giúp các em tiến xa hơn rất nhiều!

Nếu có thắc mắc, đừng ngại hỏi thầy hoặc các bạn nhé!
Chúc các em học tốt! 🚀
Thầy Đạt 🧡

Released under the MIT License.