Bắt đầu với NodeJS – Từ cơ bản đến nâng cao

1280px-Node.js_logo.svg

Như bài trước chúng ta đã thảo luận về NodeJS, những điều thú vị và tại sao nó lại được sử dụng rộng rãi như vậy. Bài viết này sẽ đi sâu về khía cạnh kỹ thuật của NodeJS, từ cài đặt, cấu hình cơ bản đến các bước lập trình một ứng dụng web.

  1. Cài đặt

Cài đặt NodeJS rất dễ dàng, bạn vào trang nodejs.org và làm theo hướng dẫn. Lưu ý là NodeJS có thể chạy trên nhiều nền tảng (hệ điều hành) khác nhau, và bạn cũng có thể cài đặt NodeJS qua dòng lệnh, bạn có thể vào mục download để xem cách cài đặt cho hệ điều hành bạn đang sử dụng.

Sau khi cài đặt xong bạn có thể check lại xem đã thành công chưa bằng cách mở cửa sổ terminal và gõ:

 $ node --version
v10.1.0

Nếu không có thông báo lỗi gì nghĩa là bạn đã thành công ở bước cài đặt.

2. Bắt đầu với helloworld

Chúng ta sẽ bắt đầu bằng một project quen thuộc: hello world 🙂

Bạn hãy tạo một file tên là helloworld.js có nội dung như sau

let hello = ​`​Welcome to NodeJS Tutorial.  Hello World!`
console.log(hello);

Chạy file này bằng dòng lệnh

$ node helloworld.js

Kết quả bạn nhận được trên màn hình sẽ là

​Welcome to NodeJS Tutorial. Hello World!

Chúc mừng! như vậy là bạn đã viết được chương trình hello world chạy trên nodeJS.

NodeJS coi một file là một module, hay là một thư viện gồm có các hàm hay giá trị, biến được định nghĩa và có thể tái sử dụng ở nhiều nơi. Ở ví dụ trên file helloworld.js là một module như vậy, ta có thể sử dụng module này ở một module/file khác nếu module helloworld.js export ra các giá trị/ hàm nào đó, chẳng hạn

let hello = ​`​Welcome to NodeJS Tutorial.  Hello World!`
module.exports = hello;

và trong một file khác chẳng hạn file global.js

// global.js
let hello = require('./helloworld'); // relative path to helloworld.js
console.log(hello); //​ Welcome to NodeJS Tutorial. Hello World!

Lưu ý là ta có thể export bất cứ thứ gì trong file helloworld.js

NodeJS có rất nhiều những thư viện built-in như vậy, và đơn giản là ta chỉ cần require những module cần thiết trong khi xây dựng các ứng dụng. Chẳng hạn một module được dùng phổ biến khi lập trình web là http.

Bạn hãy tạo một file có tên hello-world.js với nội dung như sau:


const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World!\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});

view raw

hello-world.js

hosted with ❤ by GitHub

$ node hello-world.js

Ta sẽ nhận được thông báo là server đã chạy

Server running at http://127.0.0.1:3000/

Bạn truy cập vào địa chỉ 127.0.0.1:3000 từ trình duyệt và sẽ thấy dòng chữ Hello, world! hiện lên trên màn hình. Điều đó cũng có nghĩa là bạn đã chạy thành công một ứng dụng web trên nền NodeJS!

Dòng lệnh http.createServer() tạo ra một instance của web server và nó nhận 2 tham số là req (request)res (response). Ở đây ta chỉ đơn giản là trả lại một đoạn text cho web client với bất kỳ request nào tới địa chỉ http://127.0.0.1:3000/.

Trong thực tế, content type của một trang web sẽ là html được server generate từ một file html nào đó. Chẳng hạn chúng ta có một file gọi là demo.html với nội dung như sau:

<h1>Hello world</h1>

<p>Welcome to NodeJS Tutorial. Hello World!</p>

Và server của chúng ta như sau


let http = require('http');
let fs = require('fs');
http.createServer(function (req, res) {
  fs.readFile('demo.html', function(err, data) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write(data);
    res.end();
  });
}).listen(3000);

view raw

server.js

hosted with ❤ by GitHub

Ngoài các thư viện built-in, chúng ta còn có thể cài thêm các thư viện bên ngoài vào, điển hình là thư viện Express.JS – một web framework nổi tiếng dành cho NodeJS. Việc cài đặt và quản lý các thư viện ngoài được thông qua một package manager gọi là npm. Khi bạn cài đặt NodeJS thì mặc nhiên là npm đã được cài đặt kèm theo, để kiểm tra phiên bản npm hiện tại, bạn hãy gõ lệnh:

$ npm --v
6.1.0

3. Xây dựng trang web cùng Express.JS

Bây giờ chúng ta sẽ xây dựng một ứng dụng web một cách “nghiêm túc” hơn, sử dụng web framework ExpressJS.

Đầu tiên tạo một thư mục tên là myapp

$ mkdir myapp
$ cd myapp

Sau đó tạo ra một file package.json để quản lý danh sách các thư viện đã cài đặt.

$ npm init

npm sẽ hỏi bạn các cấu hình cho ứng dụng web của chúng ta, ấn enter để chọn cấu hình mặc định, hoặc chỉnh sửa các thông số nếu muốn. Ví dụ

entry point: (index.js) app.js

Confirm lần nữa về cấu hình ứng dụng:

About to write to /Users/vip/temp/myapp/package.json:
{
  "name": "myapp",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
Is this OK? (yes) yes

Bước tiếp theo là cài đặt Express.JS

$ npm install express --save

Sau khi cài đặt thành công bạn sẽ thấy thư viện express.js đã xuất hiện trong file package.json

{
  "name": "myapp",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.16.3"
  }
}

Tạo một file app.js với nội dung

const express = require('express')
const app = express()

app.get('/', (req, res) => res.send('Hello World!'))

app.listen(3000, () => console.log('Example app listening on port 3000!'))

Sau đó chạy server

$ node app.js

Bạn sẽ thấy dòng chữ “Hello World!” xuất hiện trên màn hình khi truy cập vào địa chỉ http://127.0.0.1:3000/

Leave a comment