12/08/2018, 14:15

Những hiểu biết ban đầu về Nodejs

Ở bài này mình xin giới thiệu về những khái niệm cơ bản trong Node.js. Do mới bắt đầu tìm hiểu nên những kiến thức dưới đây rất cơ bản, có thể gây nhàm chán với những bạn đã có kiến thức với node.js. I. Node.js là gì? Node.js là một nền tảng chạy trên môi trường V8 JavaScript runtime - một ...

hoc-lap-trinh-nodejs.png

Ở bài này mình xin giới thiệu về những khái niệm cơ bản trong Node.js. Do mới bắt đầu tìm hiểu nên những kiến thức dưới đây rất cơ bản, có thể gây nhàm chán với những bạn đã có kiến thức với node.js.

I. Node.js là gì?

Node.js là một nền tảng chạy trên môi trường V8 JavaScript runtime - một trình thông dịch JavaScript cực nhanh chạy trên trình duyệt Chrome. Bình thường thì bạn cũng có thể tải bộ V8 và nhúng nó vào bất cứ thứ gì; Node.js làm điều đó đối với các web server. JavaScript suy cho cùng cũng chỉ là một ngôn ngữ - vậy thì không có lý do gì để nói nó không thể sử dụng trên môi trường server tốt như là trong trình duyệt của người dùng được.

Tại sao nên học node.js?

  • Đơn giản là vì khi sử dụng node.js tốc độ ứng dụng web của bạn sẽ tăng lên rất nhiều. Với những ngôn ngữ server khác, mỗi một kết nối tới server sẽ sinh ra một thread mới, và điều này khiến ứng dụng nhanh chóng trở nên chậm chạp hoặc quá tải - cách duy nhất để hỗ trợ nhiều người dùng hơn là bằng cách bổ sung thêm nhiều máy chủ. Nhưng với Node.js thì điều này không phải là vấn đề. Không có một máy chủ Apache lắng nghe các kết nối tới và trả về mã trạng thái HTTP - bạn sẽ phải tự quản lý kiến trúc lõi của máy chủ đó. May mắn thay, có một số module giúp thực hiện điều này được dễ dàng hơn, nhưng công việc này vẫn gây cho bạn một chút khó khăn khi mới bắt đầu.

  • Với hầu hết các ngôn ngữ kịch bản máy chủ, chương trình phải đợi mỗi function thực thi xong trước khi có thể tiếp tục chạy tiếp. Với Node.js, bạn xác định các function sẽ chạy để hoàn thành một tác vụ nào đó, trong khi phần còn lại của ứng dụng vẫn chạy đồng thời. Về vấn đề đồng bộ và bất đồng bộ, các bạn có thể xem chi tiết tại đây hoặc có thể search từ khóa Synchronous and Asynchronous.

Nhược điểm của node.js

  • Giống như hầu hết các công nghệ mới, việc triển khai Node.js trên host không phải là điều dễ dàng. Nếu bạn có một web hosting xài chung, bạn không thể đơn giản tải lên một ứng dụng Node.js và mong chờ nó hoạt động tốt.
  • Một nhược điểm lớn khác của Node.js đó là nó vẫn đang trong giai đoạn phát triển ban đầu, điều này có nghĩa là một số đặc trưng sẽ thay đổi trong quá trình phát triển tiếp theo.

II. Những khái niệm quan trọng trong Node.js

  1. Npm trong node.js

Để phát triển ứng dụng node.js thì không thể thiêú npm được Npm là viết tắt của Node Package Manager cung cấp hai chức năng sau:

  • Tạo các online repository cho node.js mà có thể tìm kiếm được tại địa chỉ search.nodejs.org
  • Cung cấp các tiện ích để cài đặt gói Node.js, quản lí version và quản lí phụ thuộc của các gói trong Node.js.
  1. Khái niệm về callbacks trong node.js

Mình hiểu đơn giản, callback là hàm để xử lý một chức năng, hoặc một kết quả trả về của một sự kiện.

Để hiểu rõ callbacks và xử lý bất đồng bộ trong node.js chúng ta sẽ xét ví dụ về việc đọc file sau đây.

This is content of file!

File index.js sẽ xử lý việc đọc file info.txt ở trên.

var fs = require("fs");

fs.readFile("infor.txt", function(err, data) {
  if(err) return console.log("Reading file have some erros" + err);

  console.log(data.toString());

});

console.log("Reading file is finished!");

Output của chương trình là:

Reading file is finished!

This is content of file!

Node.js sử dụng cơ chế xử lý bất đồng bộ, vì vậy việc trong khi file info.txt đang được đọc thì lệnh thứ 2 vẫn được thực thi, và trả lại kết quả cho người dùng. Đến khi việc đọc file được hoàn thành, callbacks mới được gọi để trả lại nội dung file.

Chính nhờ cơ chế xử lý bất đồng bộ này mà tốc độ ứng dụng được xây dựng bằng node.js nhanh hơn so với các ngôn ngữ khác.

  1. Module trong node.js

Node.js sử dụng kiến trúc Module để đơn giản hóa việc tạo ra các ứng dụng phức tạp.

Module là giống như các thư viện trong C, C#, Java, … Mỗi module chứa một tập các hàm chức năng có liên quan đến một "đối tượng" của Module. Ví dụ, http là Module chứa các hàm cụ thể liên quan đến thiết lập HTTP. Node.js cung cấp một vài các Module core kèm theo để hỗ trợ chúng ta truy cập file trên hệ thống, tạo các máy chủ HTTP, TCP/UDP, và các hàm tiện ích nhỏ hữu dụng khác. Danh sách các modules trong node.js bạn có thể tham khảo tại Modules trong node.js

Để cài đặt một module cho ứng dụng node.js, các bạn có thể sử dụng npm

npm install module_name

Sau đó file package.json sẽ tự động cập nhật module mà bạn mới cài vào ứng dụng. Ví dụ, ở đây mình cài module express bằng lệnh

npm install express

Khi đó, file package.json của mình sẽ có dạng:

{
  "name": "nodejs",
  "version": "1.0.0",
  "description": ""This is the first time i code an node js app"",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1",
    "start": "node index.js",
    "your-custom-script": "echo npm"
  },
  "author": "Hiennv",
  "license": "ISC",
  "dependencies": {
    "express": "^4.14.0",
    "lodash": "^4.17.0",
    "request": "^2.79.0",
    "request-promise": "^4.1.1"
  },
  "devDependencies": {
    "mocha": "^3.1.2"
  }
}

Bây giờ bạn đã có thể sử dụng các function có sẵn của module express trong ứng dụng của bạn.

Trên đây là những kiến thức rất cơ bản về những khái niệm ban đầu về node.js. Hy vọng nó hữu ích với bạn. Thanks!

Nguồn tham khảo:

http://vietjack.com/nodejs

0