Build project - part 2 - Vì sao lại phát triển web application sử dụng nodejs và expressjs?

Nội dung bài viết

Chúng ta đang tiếp tục Series build a project, và đây là part 2 rồi. Tôi chưa mệt mà, các bạn có đừng mệt chứ. Và tiếp tục trên con đường hoàn thành một project, chúng ta sẽ tìm hiểu lý do vì sao lại chọn nodejs và express để xây dựng một web app hay mobile. Nhưng trước tiên, nêu bạn vô tình đi ngang qua đây thì hãy đọc lại những bài trước kia để hiểu vì sao lại có bài hôm nay nhé.

Series build a project

Đề tài: Build một blog + chat sử dụng nodejs, expressjs, mongodb, firebase

Part 1 - Vì sao mỗi developer nên có một blog

Part 2 - Vì sao lại phát triển web application sử dụng nodejs và expressjs?

Part 3 - Setup project with nodejs, expressjs và connect mongodb

Part 4: Tạo chức năng login và register sử dụng nodejs, expressjs, mongodb

Lý do vì sao tôi dùng nodejs và expressjs

Lý do đầu tiên và đúng nhất đó là vì blog anonystick.com nói nhiều về ngôn nhữ lập trình javascript. Đồng thời, về javascript thì tôi tự tin hơn các ngôn ngữ khác, mặc dù những ngôn ngữ khác như PHP, JAVA, tôi cũng đã từng nhúng chàm. Thật là may mắn khi nodejs ra đời, và khi xây dựng back-end với nodejs với expressjs khi chúng sử dụng javascript. Đến tận bây giờ, tôi vẫn cứ ngỡ rằng javascript chỉ chạy trên client thôi chứ.

 Vì sao lại phát triển web application sử dụng nodejs và expressjs?


Lý do thứ hai đó là nhiều dự án cụ thể là REST FULL quá khứ và hiện tại đa số tôi đều dùng nodejs. Và có nhiều kinh nghiệm trong mô hình này.

Lý do thứ ba đó là fix bug một cách nhanh chóng, theo dõi log từ xa, dựa trên nhiều tool khác nhau. Đương nhiên ở đây tôi sẽ chỉ cho các bạn là những tool free mà thôi.

Sự khác biệt giữa Expressjs và nodejs thế nào?

Thật ra để hiểu bản chất nó thì sẽ có thể mộ bài viết dài hơn những gì viết ở đây. Thế nhưng, dân coder rất thông minh nên tôi chỉ nói sơ qua cách hoạt động của nó. Cả hai đều có mục đích khác nhau. Bạn thử nghĩ nodejs và expressjs như một chiếc xe vậy. Ở đó nodejs là công nghệ cốt lõi hoạt động như động cơ, luôn sẵn sàng khởi động và chạy.

Mặt khác, expressJS là the wrapper vậy , expressJS cung cấp một khung có thể được sử dụng trên đỉnh của nodejs để cung cấp cho bạn chức năng phát triển web một cách phong phú. Hãy nghĩ về nodeJS như một động cơ, bây giờ nếu bạn có động cơ, bạn có thể phát triển một cấu trúc xe hơi xung quanh nó và làm cho nó hoạt động. Bạn sẽ phải đặt bánh xe, thực hiện hệ thống phanh và những gì không nên làm. ExpressJS là một chiếc xe được chế tạo sẵn, bạn có thể bắt đầu sử dụng ngay (nếu bạn biết cách lái xe đó). Tương tự như Koa.js cũng vậy, nhưng có là mẫu mã của chiếc xe khác, nhưng nếu muốn chạy thì cũng phải có một động cơ.

Nói oai hơn về ngôn ngữ lập trình đó là Node.js là một nền tảng để xây dựng ứng dụng i / o hướng sự kiện phía máy chủ bằng cách sử dụng javascript. Express.js là một khung dựa trên node.js để xây dựng ứng dụng web bằng cách sử dụng các nguyên tắc và cách tiếp cận của node.js. Chính vì vậy, nếu bạn viết ứng dụng web, tốt nhất bạn có thể thử sử dụng Express.js ngay từ bây giờ.

Nodejs là gì? Và vì sao nodejs lại được sử dụng nhiều

Trước khi chúng ta tìm hiểu sâu về nodejs là gì? Thì hãy xem lợi thế khi bạn sử dụng chúng mang lại trước mắt là :

  • Chia sẻ code và tái sử dụng cấu trúc code
  • Tốc độ và hiệu suất có thể nói là ngon với chi phí thấp
  • Chia sẻ kiến thức dễ dàng cho những người học javascript, chưa biết về back-end
  • Một số lượng lớn các công cụ miễn phí cho anh em devjs

Node.js là gì? Node.js là một thư viện để thực thi các ứng dụng JavaScript bên ngoài trình duyệt. Nó được sử dụng khi bạn muốn tạo các chương trình phía máy chủ hoặc nối mạng một ứng dụng web. Các mô-đun cơ bản của nó được ghi bằng JavaScript. Nó chủ yếu được sử dụng cho các ứng dụng máy chủ trong thời gian thực. Node.js cho phép JavaScript thực thi cục bộ trên máy hoặc máy chủ. Trước đây, trước khi Node được giới thiệu, việc thực thi JavaScript không thể tưởng tượng được trên hệ thống vì nó vẫn là ngôn ngữ phía máy khách hoặc Ngôn ngữ dựa trên trình duyệt. Nó chỉ hữu ích cho việc tạo và kiểm soát các phần tử DOM. Node.js cung cấp nhiều khung để sử dụng, ví dụ như koa, hapi, v.v. Một trong những khung như vậy là Express.js. Nó hữu ích và phổ biến hơn các khung công tác khác của Node.js.


#Tính năng của nodejs Realtime

Đây là tính năng quan trọng nhất của NodeJS. Realtime ở đây chính là xử lý giao tiếp từ client tới máy chủ theo thời gian thực. Giống như khi bạn lướt Facebook thì mỗi khi bạn comment hay like một topic nào đó thì ngay lập tức chủ topic và những người đã comment trên đó sẽ nhận được thông báo là bạn đã comment.


Không đồng bộ

Tất cả các API của NodeJS đều không đồng bộ (none-blocking), nó chủ yếu dựa trên nền của NodeJS Server và chờ đợi Server trả dữ liệu về. Việc di chuyển máy chủ đến các API tiếp theo sau khi gọi và cơ chế thông báo các sự kiện của Node.js giúp máy chủ để có được một phản ứng từ các cuộc gọi API trước (Realtime).


Notes: none-blocking IO một cụm từ nhiều người nghe rồi, nhưng không hiểu nhiều vì mỗi người một giải thích. Cho nên nhân tiện mình xin giải thích dễ hiểu là thế này. Chúng ta sắp xếp công việc thứ tự là đọc sách, ăn cơm, chơi game (đó là IO), xong rồi mới đến đánh răng (blocking). Trong lập trình thì chúng ta có thể đánh răng trước chơi game, đó là (non-Blocking IO). Không cần chờ đợi nhau. 


Còn ở trong nghề lập trình là Non-Blocking I/O, một cách đơn giản, có nghĩa những công việc gì có dính dáng về input output không thể có quyền ngăn chặn những công việc khác. IO có nghĩa dữ kiện chạy đi chạy lại từ một nơi này đến một nơi khác như từ: bộ nhớ vào ổ cứng hay ngược lại; server đến browser và ngược lại, vân vân. Trong các loại công việc của máy tính, chung chung, IO là chậm nhất. Chậm hơn rất nhiều so với tính toán. Vì lý do đó nếu IO được điều hành làm sao mà không bê trễ những công việc khác của máy tính thì cả hệ thống tính toán sẽ bớt trì trệ, hay nói cách khác là nhanh hơn. Điều này không phải là khám phá mới mà đã được làm trong quá khứ, tuy nhiên chỉ là đắp vá tạm thời và chưa bao giờ ở cả một hệ thống tính toán như node.js.


Chạy rất nhanh

NodeJ được xây dựng dựa vào nền tảng V8 Javascript Engine nên việc thực thi chương trình rất nhanh.


Đơn luồng nhưng khả năng mở rộng cao 

Node.js sử dụng một mô hình luồng duy nhất với sự kiện lặp. cơ chế tổ chức sự kiện giúp các máy chủ để đáp ứng một cách không ngăn chặn và làm cho máy chủ cao khả năng mở rộng như trái ngược với các máy chủ truyền thống mà tạo đề hạn chế để xử lý yêu cầu. Node.js sử dụng một chương trình đơn luồng và các chương trình tương tự có thể cung cấp dịch vụ cho một số lượng lớn hơn nhiều so với yêu cầu máy chủ truyền thống như Apache HTTP Server.

Trích:

Expressjs là gì? Vì sao lại chọn Expressjs với Nodejs

Express là một framework ứng dụng web Node.js tối thiểu và linh hoạt, cung cấp một bộ tính năng mạnh mẽ cho các ứng dụng web và di động. Với vô số phương thức tiện ích HTTP và tạo middleware theo ý của bạn, việc tạo một API mạnh mẽ thật nhanh chóng và dễ dàng. Express cung cấp một lớp nhiều các tính năng ứng dụng web cơ bản, mà không làm mờ các tính năng Node.js mà bạn biết và yêu thích.


Mỗi khi bạn bắt đầu một dự án, có một môi trường cơ bản mà bạn có thể cần để bắt đầu phát triển. Bạn có thể sử dụng các khung như Express để giảm bớt công việc của bạn. Ngoài ra khi bạn cố gắng viết mã trong Nodejs lõi, nó thực sự dài và phức tạp. Express js làm cho mọi thứ thực sự dễ dàng bằng cách tạo một trình bao bọc trên logic Nodejs để bạn có thể đạt được điều tương tự sẽ ít mã hơn. Điều hay ho về nhất về Expressjs là nó rất đơn giản và nó là nguồn mở.


Series build a project

Đề tài: Build một blog + chat sử dụng nodejs, expressjs, mongodb, firebase

Part 1 - Vì sao mỗi developer nên có một blog

Part 2 - Vì sao lại phát triển web application sử dụng nodejs và expressjs?

Part 3 - Setup project with nodejs, expressjs và connect mongodb

Có thể bạn đã bị miss