Học Backend NodeJS

Tôi bắt đầu con đường lập trình của mình bằng Java & lập trình web dùng PHP. Sau đó tôi không dùng PHP nữa mà chuyển sang dùng Java Web, tôi chủ yếu sử dụng framework Spring MVC bởi vì công ty tôi chỉ dùng Spring MVC.

Đằng đẵng 3 năm trôi đi, tôi vùi đầu trong J2EE application và tôi cũng tự viết cho mình được một Java Web Framework, thứ mà cho đến bây giờ tôi không còn dùng nữa. Thực sự, tôi chỉ dùng nó cho một dự án tầm trung, sau đó là bỏ đi luôn. Khá là buồn nhưng cũng phải chấp nhận. Lý do tôi bỏ đi là vì khách hàng của tôi khá nhiều, đa số họ là khách hàng vừa và nhỏ, để triển khai các dự án kiểu như vậy quả thực khó với tôi, với khách hàng và khó cả với đồng đội của tôi... Tưởng chừng Java là thứ miễn phí nên chi phí đầu tư thấp nhưng không, thực sự tôi phải bỏ ra khá nhiều chi phí đầu tư cho hosting, cái cần để hỗ trợ cho Java Web. Và nó không rẻ...

Chi phí không phải là cái duy nhất quyết định đến việc tôi từ bỏ Java Web, còn nhiều thứ khác như, ngôn ngữ lập trình, cách lập trình, cách triển khai một dự án, ... tôi sẽ cố gắng nói chi tiết hơn ở một bài viết khác.

Học Backend NodeJS

Từ nhiều lý do ngớ ngẩn nhất có thể, tôi đi tìm một con đường khác để mang về cho mình nhiều tiền hơn, tốn ít chi phí cho lập trình, triển khai và bảo trì hơn.

Tôi gặp NodeJS thế nào?

Cũng sẽ chẳng có gì nếu không gặp thằng bạn dở hơi của tôi, nó là trùm Javascript và dĩ nhiên nó tôn sùng NodeJS. Và nó giới thiệu cho tôi biết rằng NodeJS rất nhẹ, dễ viết, nó là Javascript, có thể xử lý cả triệu request nhẹ nhàng =)), tốn ít ram, phần cứng thấp, dễ triển khai, dễ bảo trì, v.v...

OK. Quất liền.

Học Backend NodeJS

Tiếp cận NodeJS có đơn giản?

Đơn giản hơn tôi nghĩ các bạn ạ. Đơn giản đến độ không thể đơn giản hơn...

  1. Cài Node & npm

    console.log("Hello World");
    
    0 là cái quái gì nhỉ, lúc đấy tôi cũng chả biết đâu, cứ nghĩ đại nó giống Java JDK, thế là cứ cài đại nó vô. Còn
    console.log("Hello World");
    
    1, giời ơi, mệt quá cơ. Lắm thứ phải học dữ trời. Nhưng không, nó đơn giản lắm. Tôi đang cần tìm thư viện
    console.log("Hello World");
    
    2 thì tôi chỉ cần gõ 1 dòng lệnh đơn giản:
    console.log("Hello World");
    
    3, done!! Không cần phải google
    console.log("Hello World");
    
    4 rồi download package đó từ trên maven repository rồi lại đẩy vào trong thư mục
    console.log("Hello World");
    
    5 của project.
    Học Backend NodeJS
    Đại khái, nó giống
    console.log("Hello World");
    
    6 hay
    console.log("Hello World");
    
    7 nếu ai đã xài qua.

  2. Tạo project mới hmm... Nghe có vẻ khó khăn, chắc phải kiếm cái

    console.log("Hello World");
    
    8 nào ngon ngon, rồi
    console.log("Hello World");
    
    9, ... Haha.
    Học Backend NodeJS
    Đơn giản hơn thế, Thích cái gì thì tạo cái đấy thôi. =))
        var express = require('express')
        var app = express()
    
        app.get('/', function (req, res) {
          res.send('Hello World!')
        })
    
        app.listen(3000, function () {
          console.log('Example app listening on port 3000!')
        })
    
    0 Vâng, khởi tạo một dự án mới bằng command line, nghe có vẻ ngầu ha... Đơn giản quá. Và cái project của tôi nhìn như thế này đây.

    --
      - package.json
    

    Có 1 file duy nhất. Are you kidding me? Lúc đầu tôi tưởng nó sẽ hầm hố lắm, ai dè có mỗi file

        var express = require('express')
        var app = express()
    
        app.get('/', function (req, res) {
          res.send('Hello World!')
        })
    
        app.listen(3000, function () {
          console.log('Example app listening on port 3000!')
        })
    
    1 con con. -> Thất vọng ê chề.

         {
           "name": "demo-nodejs",
           "version": "1.0.0",
           "description": "Demo NodeJS",
           "main": "index.js",
           "scripts": {
             "test": "echo \"Error: no test specified\" && exit 1"
           },
           "author": "Luc Duong",
           "license": "MIT"
         }
    
  3. Ví dụ kinh điển trên

        var express = require('express')
        var app = express()
    
        app.get('/', function (req, res) {
          res.send('Hello World!')
        })
    
        app.listen(3000, function () {
          console.log('Example app listening on port 3000!')
        })
    
    2 Tôi đã tạo file
        var express = require('express')
        var app = express()
    
        app.get('/', function (req, res) {
          res.send('Hello World!')
        })
    
        app.listen(3000, function () {
          console.log('Example app listening on port 3000!')
        })
    
    2 và viết
        var express = require('express')
        var app = express()
    
        app.get('/', function (req, res) {
          res.send('Hello World!')
        })
    
        app.listen(3000, function () {
          console.log('Example app listening on port 3000!')
        })
    
    4 example xem nó chạy như thế nào. :v

    ╭─luc@Duongs-MacBook-Pro  ~/Projects/demo-nodejs
    ╰─$ vi index.js
    ╭─luc@Duongs-MacBook-Pro  ~/Projects/demo-nodejs
    ╰─$ node index.js
    Hello World
    

    Cái file nó nhìn thế này đây

    console.log("Hello World");
    

    Chỉ có một dòng duy nhất.

    Học Backend NodeJS
    Haha. Great!!

  4. Dạo chơi với

        var express = require('express')
        var app = express()
    
        app.get('/', function (req, res) {
          res.send('Hello World!')
        })
    
        app.listen(3000, function () {
          console.log('Example app listening on port 3000!')
        })
    
    5 framework. Đúng là chỉ có vài dòng thôi... Haha. Trước tiên tôi cài
        var express = require('express')
        var app = express()
    
        app.get('/', function (req, res) {
          res.send('Hello World!')
        })
    
        app.listen(3000, function () {
          console.log('Example app listening on port 3000!')
        })
    
    6 framework.
        var express = require('express')
        var app = express()
    
        app.get('/', function (req, res) {
          res.send('Hello World!')
        })
    
        app.listen(3000, function () {
          console.log('Example app listening on port 3000!')
        })
    
    7 Sau đó sửa lại file
        var express = require('express')
        var app = express()
    
        app.get('/', function (req, res) {
          res.send('Hello World!')
        })
    
        app.listen(3000, function () {
          console.log('Example app listening on port 3000!')
        })
    
    2

        var express = require('express')
        var app = express()
    
        app.get('/', function (req, res) {
          res.send('Hello World!')
        })
    
        app.listen(3000, function () {
          console.log('Example app listening on port 3000!')
        })
    

    Và kết quả thì thật bất ngờ.

    Học Backend NodeJS

  5. Vận dụng những gì mình đã biết Vâng, vận dụng những gì tôi đã biết ở

        var express = require('express')
        var app = express()
    
        app.get('/', function (req, res) {
          res.send('Hello World!')
        })
    
        app.listen(3000, function () {
          console.log('Example app listening on port 3000!')
        })
    
    9 và kiến thức căn bản của lập trình web, tôi đã tiếp cận
        app.get('/', function (req, res) {
          res.send('Hello World!')
        })
    
    0 nhanh hơn rất nhiều. Xem nào...