1. Trang chủ
  2. » Tất cả

2-nodejs

248 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 248
Dung lượng 10,79 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Node.js cũng cung cấp một thư viên phong phú gồm nhiềumô-đun JavaScript khác nhau giúp đơn giản hóa việc pháttriển các ứng dụng web bằng cách sử dụng Node.js đến mộtmức độ lớn... Node.js

Trang 1

Node.js - Giới thiệu

Node.js là một nền tảng phía máy chủ được xây dựng trênCông cụ JavaScript của Google Chrome (V8 Engine) Node.jsđược phát triển bởi Ryan Dahl trong năm 2009 và phiênbản mới nhất của nó là v0.10.36 Định nghĩa của Node.jsđược cung cấp bởi https://nodejs.org :

Node.js là môi trường thời gian chạy đa nền tảng nguồn mở

để phát triển các ứng dụng mạng và phía máy chủ Các ứngdụng Node.js được viết bằng JavaScript và có thể chạy trên

OS X, Microsoft Windows và Linux

Node.js cũng cung cấp một thư viên phong phú gồm nhiềumô-đun JavaScript khác nhau giúp đơn giản hóa việc pháttriển các ứng dụng web bằng cách sử dụng Node.js đến mộtmức độ lớn

Node.js = Runtime Environment + JavaScript Library

Trang 2

Các tính năng của Node.js

• Không đồng bộ và điều khiển sự kiện - Tất cả các API của thư viện

Node.js là không đồng bộ, nghĩa là, không bị chặn Về cơ bản nó có nghĩa là một máy chủ dựa trên Node.js không bao giờ chờ đợi một API để trả về dữ liệu Máy chủ chuyển sang API tiếp theo sau khi gọi nó và cơ chế thông báo của Sự kiện của Node.js giúp máy chủ nhận được phản hồi từ cuộc gọi API trước đó.

• Rất nhanh - Được xây dựng trên Công cụ JavaScript V8 của Google

Chrome, thư viện Node.js rất nhanh trong việc thực thi mã.

• Single Threaded nhưng Highly Scalable - Node.js sử dụng một mô

hình luồng đơn với vòng lặp sự kiện Cơ chế sự kiện giúp máy chủ phản hồi theo cách không chặn và làm cho máy chủ có khả năng

mở rộng cao hơn so với các máy chủ truyền thống tạo ra các chuỗi giới hạn để xử lý các yêu cầu Node.js sử dụng một chương trình luồng đơn và cùng một chương trình có thể cung cấp dịch vụ cho một số lượng lớn các yêu cầu hơn các máy chủ truyền thống như Apache HTTP Server.

• Không đệm - Các ứng dụng Node.js không bao giờ đệm bất kỳ dữ

liệu nào Các ứng dụng này đơn giản xuất dữ liệu theo khối.

• Giấy phép - Node.js được phát hành theo giấy phép MIT

Trang 4

Nơi nào để sử dụng Node.js?

Sau đây là các lĩnh vực mà Node.js đang chứng tỏ mình làmột đối tác công nghệ hoàn hảo

• Ứng dụng nhập/xuất

• Ứng dụng truyền dữ liệu

• Ứng dụng thời gian thực dữ liệu chuyên sâu (DIRT)

• Các ứng dụng dựa trên API JSON

• Ứng dụng trang đơn (Single Page Applications)

Nơi nào không sử dụng Node.js?

Không nên sử dụng Node.js cho các ứng dụng chuyên sâucủa CPU

Trang 5

Node.js - Thiết lập môi trường

Thiết lập môi trường cục bộ

Cần hai phần mềm sau đây có sẵn trên máy tính là (a) Trìnhsoạn thảo văn bản và (b) File cài đặt nhị Node.js

Trình chỉnh sửa văn bản

Điều này sẽ được sử dụng để nhập chương trình của bạn Ví

dụ về một vài trình soạn thảo như Atom, Sublime, Bracket,

Visual Studio Code.

Các tệp bạn tạo bằng trình chỉnh sửa của bạn được gọi làtệp nguồn và chứa mã nguồn của chương trình Các tệpnguồn cho các chương trình Node.js thường được đặt tênvới phần mở rộng ".js"

Trang 6

The Node.js Runtime

Mã nguồn được viết trong tệp nguồn chỉ đơn giản làjavascript Trình thông dịch Node.js sẽ được sử dụng đểdiễn giải và thực thi mã javascript của bạn

Tải xuống kho lưu trữ Node.js

Tải xuống phiên bản mới nhất của tệp lưu trữ có thể cài đặt

Node.js từ http://nodejs.org/download/ Tại thời điểm viếthướng dẫn này, có các phiên bản như sau

Windows node-v6.3.1-x64.msi Linux node-v6.3.1-linux-x86.tar.gz Mac node-v6.3.1-darwin-x86.tar.gz SunOS node-v6.3.1-sunos-x86.tar.gz

Trang 7

Cài đặt trên Windows

Sử dụng tệp MSI và làm theo lời nhắc để cài đặt Node.js.Theo mặc định, trình cài đặt sử dụng phân phối Node.jstrong C:\Program Files\nodejs Trình cài đặt nên đặt thưmục C:\Program Files\nodejs\bin trong biến môi trườngPATH của cửa sổ Khởi động lại mọi lời nhắc lệnh mở đểthay đổi có hiệu lực

Xác minh cài đặt: Thực thi tệp

Tạo tệp js có tên main.js trên máy của bạn (Windows hoặcLinux) có mã sau

/*Hello, World! program in node.js */

console.log("Hello, World!")

Bây giờ hãy chạy tệp main.js bằng cách sử dụng trình thôngdịch Node.js để xem kết quả:

$ node main.js

Nếu mọi thứ đều ổn với cài đặt của bạn, ta có kết quả sau:

Hello, World!

Trang 8

Node.js - Ứng dụng đầu tiên

Trước khi tạo "Hello, World!” sử dụng Node.js, hãy xem cácthành phần của ứng dụng Node.js Một ứng dụng Node.jsbao gồm ba thành phần quan trọng sau:

•Nhập module cần - Chúng tôi sử dụng đòi hỏi chỉ để tải cácmodule Node.js

•Tạo máy chủ - Máy chủ sẽ lắng nghe các yêu cầu của máykhách tương tự như Máy chủ HTTP Apache

•Đọc yêu cầu và trả về phản hồi - Máy chủ được tạo trongbước trước sẽ đọc yêu cầu HTTP do ứng dụng khách thựchiện có thể là trình duyệt hoặc bảng điều khiển và trả vềphản hồi

Trang 9

Node.js - Ứng dụng đầu tiên (t.t)

Bước 1 - Nhập mô-đun bắt buộc

Sử dụng chỉ thị require để tải mô-đun http và lưu trữ vô thể hiện HTTP trả về:

var http = require("http");

Bước 2 - Tạo máy chủ

Chúng tôi sử dụng cá thể http đã tạo và gọi phương thức http.createServer ()

để tạo một cá thể máy chủ và sau đó chúng ta liên kết nó tại cổng 8081 bằng cách sử dụng phương thức nghe được liên kết với cá thể máy chủ Chuyển cho nó một hàm với các tham số yêu cầu và đáp ứng Viết triển khai mẫu để luôn trả về "Hello World".

http createServer ( function ( request , response ) {

// Send the HTTP header // HTTP Status: 200 : OK // Content Type: text/plain response writeHead (200, { 'Content-Type' : 'text/plain' });

// Send the response body as "Hello World"

response end ( 'Hello World\n’ );

}) listen (8081);

// Console will print the message

console log ( 'Server running at http://127.0.0.1:8081/' );

Đoạn mã trên là đủ để tạo

ra một máy chủ HTTP mà lắng nghe, nghĩa là, chờ đợi một yêu cầu trên cổng

8081 của máy cục bộ.

Bước 3 - Yêu cầu và phản hồi thử nghiệm

Hãy đặt code ở bước 1 và 2 vào trong một tệp có tên main.js và khởi động máy chủ HTTP như sau $ node main js

Trang 10

Node.js - Ứng dụng đầu tiên (t.t)

Xác minh đầu ra Máy chủ đã bắt đầu

Server running at http://127.0.0.1:8081/

Thực hiện một yêu cầu đến máy chủ Node.js

Mở http://127.0.0.1:8081/ trong mọi trình duyệt và quan sát kết quả sau

Xin chúc mừng, bạn đã khởi động và chạy máy chủ HTTP đầu tiên của mình, ứng dụng này đang phản hồi tất cả các yêu cầu HTTP tại cổng 8081.

Trang 11

Node.js - Thiết bị đầu cuối REPL

REPL là viết tắt của Read Eval Print Loop và nó đại diện cho

một môi trường máy tính như Windows console hoặc Unix/ Linux shell, nơi một lệnh được nhập vào và hệ thống đápứng với một đầu ra trong một chế độ tương tác Node.js

hoặc Node đi kèm với một môi trường REPL Nó thực hiện

các tác vụ sau

•Read (Đọc) - Đọc đầu vào của người dùng, phân tích cú

pháp đầu vào thành cấu trúc dữ liệu JavaScript và lưu trữtrong bộ nhớ

•Eval (ước lượng) - Đưa ra và ước lượng cấu trúc dữ liệu.

•Print (In) - In kết quả.

•Loop (Vòng lặp) - Vòng lệnh trên cho đến khi người dùng

nhấn ctrl-c hai lần

Tính năng REPL của Node rất hữu ích trong việc thử nghiệmvới các mã Node.js và để gỡ lỗi các mã JavaScript

Trang 12

Thiết bị đầu cuối REPL trực tuyến

Bắt đầu REPL

REPL có thể được bắt đầu bằng cách chạy nút trên shell / console

mà không có bất kỳ đối số nào như sau $ node

Bạn sẽ thấy dấu nhắc lệnh REPL> nơi bạn có thể gõ bất kỳ lệnh Node.js nào $ node

>

Biểu thức đơn giản

Hãy thử một toán học đơn giản tại dấu nhắc lệnh Node.js REPL

Trang 13

Sử dụng Biến (Variables)

Bạn có thể sử dụng các biến để lưu trữ các giá trị và in saunày giống như bất kỳ tập lệnh thông thường nào Nếu từkhóa var không được sử dụng, thì giá trị được lưu trữ trong

biến và biến được in Trong khi nếu dùng từ khóa var, thì giá

trị được lưu trữ nhưng biến không được in Bạn có thể incác biến bằng cách sử dụng console.log ()

Trang 14

Biểu thức trên nhiều dòng (Multiline Expression)

Node REPL hỗ trợ nhiều biểu thức tương tự như JavaScript.Hãy kiểm tra vòng lặp do-while sau đây đang hoạt động -

Trang 16

.break - thoát khỏi biểu thức nhiều dòng.

.clear - thoát khỏi biểu thức nhiều dòng.

.save filename - lưu phiên Node REPL hiện tại vào một tập

tin

.load filename - tải nội dung tập tin trong phiên Node REPL

hiện tại

Trang 18

Chạy code NodeJS từ dòng lệnh

Ta code trực tiếp trên console hoặc viết code tron file js rồi gọi chạy

Trang 19

Chạy code NodeJS từ file JS đã có

Trang 20

Khái niệm cơ bản

Node.js hỗ trợ JavaScript Vì vậy, cú pháp JavaScript trên Node.js tương tự như cú pháp JavaScript của trình duyệt.

Trang 21

Các loại nguyên thủy

Node.js bao gồm các kiểu nguyên thủy sau: Chuỗi (String)

Trang 23

Khai báo biến

Trang 24

Ép kiểu các biến để dùng

Trang 25

Truyền theo tham trị

Trang 26

Vd truyền theo tham trị

Trang 27

Truyền theo tham chiếu

Trang 28

Vd truyền theo tham chiếu

Trang 29

Cấu trúc rẽ nhánh - if

Trang 30

Vòng lặp - for , while

Trang 31

Khai báo mảng

Trang 33

Khai báo hàm - function

Trang 34

Hàm làm tham số cho hàm

Trang 35

Một biến đại diện cho hàm

Trang 36

Scope

Trang 37

Ví dụ dùng hàm không tên

Chương trình sẽ bị lỗi, không chạy được,

để sửa lỗi ta bọc lại hết bằng ngoặc đơn

Trang 38

Ví dụ về phạm vi (scope)

Code 2 bên chạy bình thường mặc dù không khai báo tên hàm, và kết quả Hoa Mai, JS hiểu biến firstName trong từng phạm vi tương ứng, nên kết quả ra giống nhau

Trang 39

Truyền tham số cho hàm để biết

phạm vi truy cập hàm

Kết quả sau khi chạy sẽ là

Hoa Phượng Mai

Trang 41

Thao tác với thuộc tính của Object

Giả sử ta có một object literal, ta xuất ra màn hình có nhiều cách như sau

Trang 42

Lời gọi function, array

Các lời gọi hàm cũng chính là event emitter trong NodeJS

Trang 43

OOP trong Node

Trang 44

Sự kế thừa trong JS

Trang 45

Kế thừa Prototype

Trang 46

Hàm khởi tạo

Trang 47

Mở rộng phương thức của Person

Trang 48

Mở rộng thuộc tính của Person

Person.prototype.level = “admin”

Trang 49

Tạo đối tượng User kế thừa mọi thứ từ Prototype từ Person

Prototype của User đã được mở rộng từ Person

Và User sẽ có phương thức getName, getPassword và thuộc tính level, nhưng password không có giá trị vì ta không khởi tạo password

Trang 50

Kết quả khi chạy chương trình

Trang 51

Mở rộng đối tượng sẵn có trong JS thông qua kế thừa Prototype

Trang 52

Tạo hàm trong OOP

Trang 53

Hàm call và apply giúp thay đổi ngữ cảnh của this

Kết quả ra giống nhau ở call và

apply, 2 hàm giúp ta đổi ngữ

cảnh biến name tham số

Trang 54

call và apply khác nhau ở kiểu tham số dạng danh sách hay dạng mảng

Trang 55

Để sử dụng được class từ NodeJS 4.x trở lên

Ta dùng từ khóa

‘use strict’;

Tại dòng đầu tiên của tập tin JS trước khi khai báo class

Trang 56

Xét ví dụ chưa dùng class mà chỉ dùng function và dùng prototype để mở rộng

Trang 57

Ta sử dụng class

Trang 58

Dùng prototype để so sánh 2 đối tượng xem có cùng kiểu hay không ?

Trang 59

Module trong Node.JS

 Mô-đun trong Node.js là một hàm đơn giản hoặc phức tạp được tổ chức trong một hoặc nhiều tệp JavaScript có thể được sử dụng

lại trong suốt ứng dụng Node.js.

 Mỗi mô-đun trong Node.js có ngữ cảnh

riêng của nó, và nó không được ảnh hưởng vào các mô-đun khác hoặc gây ảnh hưởng đến toàn ứng dụng Mỗi mô-đun có thể

được đặt trong một tệp js riêng biệt trong

một thư mục riêng biệt.

Trang 61

Core Modules trong Node.JS

Các mô-đun chính này được biên dịch thành nhị phân và

ta cần import nó trước khi dùng

Core Module Mô tả

http gồm các lớp, phương thức và sự kiện để tạo máy chủ http

Nodejs.

url gồm các phương thức để phân giải và phân tích cú pháp

URL.

querystring gồm các phương thức để xử lý chuỗi truy vấn.

path gồm các phương thức để xử lý đường dẫn tệp.

fs gồm các lớp, phương thức và sự kiện để làm việc

nhập/xuất tập tin.

util gồm các hàm tiện ích giúp cho các lập trình viên.

Trang 62

Mặc định là cục bộ

JavaScript của Node khác với JavaScript của trình duyệt khi nói đến phạm vi toàn cục Trong JavaScript của trình duyệt, các biến được khai báo mà không có từ khóa var trở thành toàn cục Trong Node.js, mọi thứ trở thành cục bộ theo mặc định.

Trang 63

Phạm vi truy cập toàn cục

Trong một trình duyệt, phạm vi toàn cục là đối tượng

window Trong Node.js, đối tượng global đại diện cho

phạm vi toàn cục

Để thêm một cái gì đó vào phạm vi toàn cục, ta cần

module.export Và để nhập mô-đun/đối tượng từ toàn

cục vô dùng ta dùng hàm require().

Ví dụ, để xuất một đối tượng trong Node.js, sử dụng

hàm exports.name = object

Trang 64

var name = 'Hello my name is MrTeacherLong' ;

Ví dụ: dùng Export để xuất thông tin 1 file cần dùng nhiều lần ra để dùng khi cần thiết

Bước 1: tạo 1 file cần export (vd: hello.js )

var ten = require ( './hello.js' );

Bước 2: tạo 1 file khác gọi sử dụng file đã export

Trang 66

Tải một core module

var module = require ('module_name');

Ta import module cần dùng bằng hàm require () như sau

Theo cú pháp trên, chỉ định tên mô-đun trong hàm require() Hàm require() sẽ trả về một object, function, property hoặc bất kỳ loại JavaScript nào khác, tùy thuộc vào mô đun được chỉ định trả về.

Trang 67

Ví dụ tải một core module http

var http = require( 'http' );

var server = http.createServer(

function (req, res){

//write code here

} );

server.listen(5000);

Trong ví dụ trên, hàm require() trả về một đối tượng vì

mô đun http trả về hàm ở dạng đối tượng, khi đó ta có thể sử dụng các thuộc tính và phương thức của nó bằng cách sử dụng ký pháp chấm, ví dụ:

http.createServer()

Trang 68

Tải một core module

Trang 69

Local Module

• Local Module (Mô-đun cục bộ) là các mô-đun

được tạo cục bộ trong ứng dụng Node của bạn

• Các mô-đun này bao gồm các chức năng khác

nhau của ứng dụng trong các tệp và thư mụcriêng biệt

• Ta cũng có thể đóng gói và phân phối nó thông

qua NPM, để cộng đồng Node có thể sử dụngnó

• Ví dụ, nếu cần kết nối với MongoDB và tìm nạp

dữ liệu thì có thể tạo một mô-đun cho nó, có thể được tái sử dụng trong ứng dụng.

Trang 70

Viết mô-đun đơn giản

• Bước 1:

• Viết mô-đun đơn giản là ghi nhật ký thông tin,

cảnh báo hoặc lỗi vào console

• Trong Node, mô-đun phải được đặt trong một

tệp JavaScript riêng biệt Vì vậy, ta sẽ tạo một tệp Log.js và viết mã vào nó

• Bước 2: xuất mô-đun ra để bên ngoài dùng

Trang 71

Bước 1: Tạo local module

Export gián tiếp

Export trực tiếp

Trong Node.js, mô-đun phải được đặt trong một tệp JavaScript riêng biệt.

Trang 72

Bước 2: sử dụng module đã export

Nếu export function thì gọi sử dụng như sau

Nếu export đối tượng thì gọi sử dụng như sau

• Ứng dụng module như

một library để dùng chung cho các hàm

• Ta cũng có thể để local

module trong thư mục khác và gọi đúng đường dẫn để dùng

Đây cũng được gọi là

import một module vô

để dùng

Trang 73

Giải thích cách dùng Local Module

Trong ví dụ trên, main.js đang sử dụng mô đun log Đầutiên, nó tải mô đun log bằng hàm require() và đường dẫn

cụ thể nơi lưu trữ mô-đun được lưu trữ Mô-đun log chứatrong tệp Log.js trong thư mục gốc Vì vậy, ta chỉ địnhđường dẫn './Log.js' trong hàm require() Ký hiệu '.’ thể

hiện cho một thư mục gốc

Hàm require() trả về một đối tượng log vì mô đun đượctìm thấy trong Log.js nhờ sử dụng module.exports Vì vậy,

bây giờ ta có thể sử dụng mô-đun log làm đối tượng và gọi

bất kỳ hàm nào của nó bằng cách sử dụng ký hiệu chấm, ví

dụ logger.info() hoặc logger.warning() hoặc logger.error()

Trang 74

Cách thức xuất module

tượng đặc biệt được bao gồm trong mọi tệp

JS trong ứng dụng Node.js theo mặc định.

export là một đối tượng sẽ được tìm ra dưới dạng mô-đun Vì vậy, bất cứ gì gán vô

module.exports hoặc exports, sẽ được trình

bày như mô-đun.

Trang 75

Export Literals

Như đã đề cập ở trên, exports là một đối tượng Vì vậy, nó sẽ

phơi bày ra bất cứ gì ta gán cho nó như một mô-đun Chẳng

hạn, nếu ta gán một chuỗi ký tự thì nó sẽ phơi bày chuỗi ký tự

đó ở dạng mô-đun Ví dụ sau ta xuất chuỗi thành dạng mô-đun trong Message.js.

module.exports = 'Hello world' ;

//hoặc

exports = 'Hello world' ;

Sau đó ta import mô-đun vào file app.js và dùng như sau.

var msg = require( './Messages.js’ );

console.log(msg);

Lưu ý: phải chỉ định './' làm đường dẫn của thư mục gốc để nhập mô-đun cục bộ Và

không cần chỉ định đường dẫn để nhập core hoặc NPM mô-đun

Messages.js

Ngày đăng: 12/08/2021, 10:01