Cài đặt NodeJS

Để cài đặt Nodejs thì việc cần làm là lên trang web chính thức của Nodejs là nodejs.org và tải về bản cài đặt cho hệ điều hành bạn muốn. Riêng với Linux, chúng ta chỉ cần chạy câu lệnh install cơ bản.

sudo apt install nodejs

Sau khi đã cài đặt xong, để kiểm tra xem Nodejs đã được cài chưa, mình chạy câu lệnh node -v trong command prompt để xem phiên bản Nodejs được cài.

Viết chương trình “Hello World!”

Cài xong Nodejs, mình viết chương trình đơn giản với Nodejs. Cú pháp của Nodejs chính là Javascript, mà mình chỉ biết sơ sơ thôi. Thôi thì cứ thử làm, thiếu ở đâu thì học ở đó.

Để in một chuỗi ra màn hình dòng lệnh, mình biết một câu lệnh là console.log(), vậy là đủ.

Tạo một file mới có tên HelloWorld.js và viết câu lệnh đơn giản này vào.

console.log("Hello world!");

Vào command line và di chuyển đến thư mục có tệp vừa mới tạo bên trên. Để chạy file vừa mới tạo, chỉ cần gọi node + fileName, trong ví dụ này, câu lệnh sẽ là node HelloWorld.js.

$ node HelloWorld.js
Hello world!

Vậy là xong một chương trình Nodejs.

Biến và hằng

Dùng var hoặc không dùng gì cả, tuy nhiên mình sẽ dùng letconst . Cách dùng giống nhau nhưng các cách hoạt động sẽ khác nhau. So với các ngôn ngữ lập trình cổ điển, var có vẻ như hoạt động khác so với các cách khai bao biến khác. Vì vậy mình sẽ ưu tiên dùng letconst vì cách nó hoạt động cũng giống với các ngôn ngữ như C/C++, Java…

Ví dụ khi khai báo biến trong NodeJS

let a = "the_string";
let b = 5;
let the_float = 99.99;
const the_const = 99;

Toán tử

Phép gán cũng là một toán tử.

Các toán tử toán học là giống nhau so với các ngôn ngữ như C, Java.

Các toán tử logic cũng sẽ giống như các ngôn ngữ khác.

Toán tử so sánh cũng sẽ tương tự, tuy nhiên sẽ có toán tử đồng nhất === hiểu đơn giản là nó so sánh một cách nghiêm ngặt mà không tự chuyển sang cùng một kiểu dữ liệu.

Và các toán tử kết hợp như ++, --, += -=

Hàm

Khai báo hàm trong Node

function func() {
    console.log("Hello world!");
}

Để gọi hàm thì chỉ cần gọi tên hàm ra.

func();
>> Hello world

Hàm cũng có thể có các tham số truyền vào.

function func(name) {
    console.log("Hello" + name);
}

Khi gọi hàm, ta sẽ truyền tham số vào.

func("Code cho vui!");
>> Hello Code cho vui!

func(1234);
>> Hello 1234

Hàm vô danh – Anonymous Function

Mình biết thêm một khái niệm mới đó là hàm vô danh (Anonymous Funtion).

Hàm này đặc biệt ở chổ, nó là hàm không có tên (anonymous).

Khai báo một hàm vô danh không khác so với hàm thông thường, tuy nhiên, chúng ta không khai báo tên cho hàm.

function (a, b) {
    return a + b;
}

Mình nhìn mấy câu lệnh trên một hồi, rồi nghĩ “Ủa, rồi khi cần gọi hàm đó ra sao?”. Rất may là người ta đã nghĩ đến vấn đề này (LOL). Vì vậy khi khai báo một hàm vô danh như trên, khi chạy, chương trình sẽ báo lỗi SyntaxError.

function () {
    console.log("Hello!");
}

// SyntaxError: Function statements require a function name

Do đó khi khai báo hàm vô danh, chúng ta cần phải có một biến để đại diện cho hàm đó hoặc bao toàn bộ hàm bằng cặp dấu ngoặc đơn.

let greet = function (name) {
    console.log("Hello " + name);
}
 
// or
 
(function (a, b) {
    return a + b;
})

Vậy mình sẽ gọi hàm như thế nào?

Để gọi hàm ra mình thấy có hai cách.

// way 1: call the variable represent the function
let greet = function (name) {
    console.log("Hello " + name);
}
greet("Code Cho Vui");
// Hello Code Cho Vui
 
// way 2: call the function right at declaration
(function (a, b) {
    console.log(a + " + " + b "=" + (a + b));
})(7, 9);
// 7 + 9 = 16

Vậy là mình đã biết hàm ẩn danh, nhưng vẫn chưa chắc lắm về các công dụng của nó.

Mình sẽ tìm hiểu thêm khi đi sâu vào các dự án nho nhỏ.

Lệnh rẽ nhánh

Các câu lệnh rẽ nhánh trong Node sẽ giống như C.

if (condition == true) {
    // do something;
} else {
    // do other thing;
}

Hoặc

if (condition == true) {
    // do something;
} else if (condition2 == true) {
    // do some other things;
} else {
    // do the rest;
}

Node cũng có câu lệnh switch case.

switch (number) {
    case value1:
        // do something here;
        break;
    case value2:
        // do something here;
        break;
    case valueN:
        // do something here;
        break;
    default:
        // do something here;
}

Mảng trong Nodejs

Khai báo một mảng.

let names = ['Harry', 'Tom', 'Rosé'];

Truy xuất giá trị trong mảng

console.log(names[0]);
// Harry
 
console.log(names[2]);
// Rosé

Ngoài ra còn có những cách khác để làm việc với mảng

// thêm phần tử cuối mảng
names.push('Ben');
console.log(names);
// ['Harry', 'Tom', 'Rosé', 'Ben']
 
// xóa phần tử cuối mảng
names.pop();
console.log(names);
// ['Harry', 'Tom', 'Rosé']

Và còn khá nhiều thứ khác. Xem thêm tại developer.mozilla.org

Đối tượng (Object) trong Nodejs

Trong một đối tượng sẽ có hai thứ được định nghĩa, đó là thuộc tính và phương thức.

Có hai cách để khởi tạo một đối tượng mới.

// way 1
let myObject = new Object();
// note: Object is a key word
 
// way 2
let myObject = {};

Khai báo thuộc tính và phương thức.

// Cách 1: Khởi tạo sau khi khai báo đối tượng.

let person = {};
// declare properties
person.name = "Code Cho Vui";
person.age = 15;
 
// declare methods
person.getName = function () {return this.name};
person.getAge = function () {return this.age};
// Cách 2: Khởi tạo trong khi khai báo đối tượng.

let person = {
    name: "Code Cho Vui",
    age: 15,
    getName: function () {
        return this.name;
    },
    getAge: function () {
        return this.age;
    }
}

Cách gọi một thuộc tính.

person.name;
// or
person['name'];

Cách gọi một phương thức.

person.getName();

Chúng ta có thể có những đối tượng bên trong đối tượng khác.

let person = {
    name: {
        firstName: "Code",
        lastName: "Cho Vui"
    },
    birthday: {
        day: 28,
        month: 2,
        year: 2021
    }
}

Cách để truy vấn thông tin.

person.name.firstName;

Vậy là mình đã biết các khái niệm cơ bản của Nodejs (nói cách khác là JavaScript). Bài đăng sau mình sẽ thử tạo một server http đơn giản.


Kunniii