[Khóa học Node & Express] Bài 1 - Express/Node introduction

Share:

Điều đầu tiên trong loạt bài hướng dẫn Node và Express, chúng ta hãy trả lời hai câu hỏi sau.
"Node là gì?" và "Express là gì?". Chúng tôi sẽ đưa đến cho bạn những kiến thức tổng quan làm cho Node và Express trở nên đặc biệt, sau khi hoàn thành bài viết này, bạn sẽ có một kiến thức tổng quan về Node và Express. Let's start!
Bạn cần có: kiến thức cơ bản về lập trình, kiến thức lập trình web: server-side và mô hình client-server.
Mục tiêu bài viết: làm quen với Express và hiểu được cách làm việc của Node và Express, biết cách xây dựng một Express application.
Introduction Node

Node (hay Node.js) là một cross-platform mã nguồn mở, cho phép lập trình viên tạo ra tất cả các công cụ và application server-side bằng ngôn ngữ JavaScript.

Những lợi ích khi dùng Node:
  • Hiệu suất cực kì nhanh! Node được thiết kế để tối ưu hóa cho các ứng dụng web đặc biệt là các ứng dụng real-time. 
  • Node được phát triển trên nền tảng JavaScript, nên bạn rất dễ dàng tiếp cận, bạn có thể đi theo con đường fullstack JavaScript.
  • JavaScript là một ngôn ngữ tương đối mới và có nhiều cải thiện so với các ngôn ngữ truyền thống như Python, PHP (nhưng mỗi ngôn ngữ có một thế mạnh khác nhau). Có rất nhiều ngôn ngữ mới và phổ biến mà có thể biên dịch, chuyển đổi thành JavaScript như TypeScript, CoffeeScript, ClojureScript, Scala, LiveScript, vv.
  • Node package manager (NPM) là một công cụ cực kì hữu ít để quản lý các thư viện, package cho Node, NPM dễ dàng cài đặt các dependency hổ trợ cho việc phát triển các ứng dụng Node. Bạn sẽ được làm quen với NPM sau.
  • Node có thể chạy trên Windows, MacOS, Linux, Solaris, FreeBSD, OpenBSD, WebOS, và NonStop OS. Hơn thế nữa, nó còn được hổ trợ bởi rất nhiều các nhà cung cấp hosting.
  • Node có một cộng đồng lập trình viên cực kì lớn trên thế giới
Bây giờ, bạn sẽ bắt đầu sử dụng Node để xây dựng web server đơn giản sử dụng Node HTML package.

Hello Node.js

Bây giờ bạn sẽ tạo một web server đơn giản, server này là một HTTP server lắng nghe ở port 8000.
Khi có request (yêu cầu) bằng URL http://127.0.0.1:8000/ hoặc http://localhost:8000/ bạn sẽ nhận được dòng chữ Hello World trên trình duyệt.
Bước đầu tiên, bạn hãy cài đặt Node và follow các bước bên dưới:

1. Mở Terminal (trên Windows bạn có thể dùng cmd, git-scm, hoặc bất kì ứng dụng command line nào).
2. Tạo một folder để chứa project của bạn, bạn có thể đặt tên là test-node. Sau đó hãy di chuyển vào thư mục này bằng lệnh cd.

cd test-node

3. Sử dụng một text editor ưu thích của bạn, tạo một file có tên hello.js và gõ đoạn code sau:

4. Lưu file mới được tạo.
5. Quay trở lại terminal và gõ lệnh:

node "hello.js"

Và cuối cùng, bạn hãy mở trình duyệt lên và gõ URL http://localhost:8000/, bạn sẽ nhìn thấy dòng chữ Hello world xuất hiện. Chúc mừng bạn!

Introducing Express

Express là một framework phổ biến nhất dành cho Node. Express có thể:
  • Xử lý các HTTP request khác nhau tại các route khác nhau.
  • Tích hợp view engine cực kì tiện lợi cho việc rendering.
  • Thêm các middleware tại bất kì điểm nào trong request handling pipeline.
  • Thiết lập các cài đặt web application thông thường như port sử dụng cho các connection, và vị trí của các template được sử dụng trong việc rendering
Trong khi Express khá nhỏ gọn, các lập trình viên đã tạo ra các gói phần mềm trung gian (middleware) để giải quyết hầu hết các vấn đề trong phát triển web. Có các thư viên làm việc với cookie, session, user login, URL params, POST, security header và còn rất nhiều nữa.
Bạn có thể xem danh sách các middleware package tại Express Middleware.
Note: Sự linh hoạt của Express là con dao hai lưỡi. Có các gói middleware có thể giải quyết hầu hết mọi vấn đề, nhưng việc sử dụng các middleware một cách phù hợp đôi khi là một thách thức, cũng không có một cách tốt nhất để cấu trúc ứng dụng. Bạn có thể tìm được rất nhiều ví dụ không tối ưu trên internet hay chỉ show ra một phần nhỏ những gì bạn cần để phát triển web application.
Helloworld Express

Chúng ta cùng xem xét ví dụ dưới đây để xem code Express trông như thế nào. Để chạy được ví dụ bên dưới, bạn sẽ phải cài đặt Express bằng câu lệnh npm install express --save. Bây giờ bạn hãy tạo file có tên là app.js với nội dung sau:

Hai dòng đầu tiên tạo ra một Express application, kết quả sẽ trả về một object có tên là app, object này có những phương thức dành cho routing, configure middleware, render HTML, remplate engine, vv.

Khi người dùng request một "/" path (root site) bằng phương thức HTTP GET ở dòng 4 5 6, sau đó phương thức get sẽ trả về một hàm callback, hàm callback này có 2 tham số là req (request) và res (response), sau đó gọi hàm send() và trả về chuỗi Hello World! trên trình duyệt.

Cuối cùng, bạn hãy chạy lệnh node ./app.js và mở trình duyệt với URL http://localhost:3000/ để xem kết quả.

Importing and creating modules

Trong 2 ví dụ ở trên, bạn có thể import một file hoặc module bằng cách sử dụng hàm require(). Bản thân Express cũng là một module, giống như là các middleware và thư viện database mà chúng ta sử dụng trong các Express application.

Khi chúng ta gọi hàm require('express'), hàm này sẽ trả về một object, object này dùng để tạo Express application, và chắc chắn rồi, bạn có thể truy cập được các thuộc tính hay chức năng trong object Express này.

Express là một module, thì bạn vẫn có thể tạo cho riêng mình những module khác nhau trong Node và bạn vẫn dùng cách này để sử dụng module mà bạn đã tạo.
Tip: Bạn sẽ muốn tạo cho mình những module, bởi vì việc làm này cho phép bạn dễ tổ chức và quản lý code hơn, thay vì để toàn bộ code trong một file application, rất khó để hiểu và bảo trì update code. Sử dụng module sẽ giúp bạn quản lý tốt các namespace của bạn.
Khi bạn tạo ra một module, bạn phải export những biến mà bạn muốn sử dụng ra ngoài, sau đó một application khác mới có thể import module này và sử dụng những gì bạn đã export.
Đơn giản bạn có thể hiểu, việc export sẽ tạo ra một "export object", và bất kì application nào import module này, sẽ sử dụng được object đã export.

Như ví dụ bên dưới, square.js export 2 phương thức là area() và perimeter():

Bây giờ bạn có thể import module square.js này bằng phương thức require(), sau đó bạn có thể sử dụng những hàm mà đã export trước đó.


Note: Bạn có thể require với tên file (không có đuôi .js như ở trên) hoặc là đường dẫn tuyệt đối đến file này.
Nếu bạn không muốn export 2 lần như trên, bạn có thể export một lần bằng cách sử dụng module.exports như bên dưới:

2 nhận xét: