Bạn đang xem bài viết Phần 6: Module Url Trong Node.js được cập nhật mới nhất tháng 9 năm 2023 trên website 2atlantic.edu.vn. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất.
Như trong bài trước, module URL dùng để tách địa chỉ web thành các phần đọc được. Để nhúng module URL ứng dụng, bạn chỉ cần dùng phương thức require().
var url = require('url');Phương thức url.parse() dùng để phân tích địa chỉ URL và trả về 1 đối tượng URL với các phần địa chỉ dưới dạng các thuộc tính. Ví dụ sau tách 1 địa chỉ web thành các phần có thể đọc được.
var url = require('url'); var adr = 'http://localhost:8080/dammio.htm?year=2023&month=may'; var q = url.parse(adr, true); console.log(q.host); console.log(q.pathname); console.log(q.search); var qdata = q.query; console.log(qdata.month);Server tập tin Node.js Đến đây, bạn đã biết cách phân tích chuỗi truy vấn và ở bài trước, bạn đã học cách chúng tôi tương tác với 1 file server. Ví dụ sau thử kết hợp 2 cách, và nhận các tập tin theo yêu cầu từ máy khách. Tạo 2 tập tin HTML và lưu cùng thư mục với các tập tin chúng tôi .
Nội dung tập tin dammio1.html
Nội dung tập tin dammio2.html
Tạo 1 tập tin chúng tôi cho phép mở tập tin theo yêu cầu và trả nội dung về máy khách. Nếu bị lỗi thì trả về lỗi 404.
Nội dung tập tin dammio_fileserver.js
var http = require('http'); var url = require('url'); var fs = require('fs'); http.createServer(function (req, res) { var q = url.parse(req.url, true); var filename = "." + q.pathname; fs.readFile(filename, function(err, data) { if (err) { res.writeHead(404, {'Content-Type': 'text/html'}); return res.end("404 Not Found"); } res.writeHead(200, {'Content-Type': 'text/html'}); res.write(data); return res.end(); }); }).listen(8080);
Tương tự như các bài trước để chạy đoạn mã trên, chúng ta cũng phải dùng lệnh CMD.
Tiếp theo, bạn mở trình duyệt và chạy địa chỉ http://localhost:8080/dammio1.html và http://localhost:8080/dammio2.html để thấy nội dung 2 tập tin này.
Kết luận: Bài viết đã trình bày cho bạn về Module URL trong chúng tôi mời bạn tiếp tục bài học tiếp theo để hiểu rõ hơn về Node.JS
Node.js Module Là Gì? Cách Tạo Và Sử Dụng Module Trong Nodejs
Bài viết này chúng ta sẽ cùng nhau tìm hiểu về modue trong chúng tôi Từ khái niệm , tầm quan trọng và cách tự xây dựng một module cho riêng mình.
Khi bạn viết ứng dụng web sử dụng chúng tôi bạn hoàn toàn có thể bỏ tất cả code vào một file chúng tôi mà không gặp lỗi lầm gì cả.
Kể cả ứng dụng của bạn lớn và phức tạp tới đâu thì bỏ tất cả code vào một file cũng không ảnh hưởng tới tốc độ của ứng dụng.
Tuy nhiên, về mặt tổ chức code, hay nói cách khác là tính clean code thì thật là thảm họa. Mã nguồn ứng dụng của bạn sẽ như một bãi rác, khó debug và tính maintain cực kém.
Bạn thử tưởng tượng, nếu bạn là người phải maintain một dự án mà người tiền nhiệm viết code kiểu như vậy. Chắc là mình chỉ muốn “giết người” thôi 😀
Vì vậy, phàm là con người thì chúng ta cần phải viết code có tâm. Code cần phải clean, mã nguồn dễ đọc dễ hiểu. Và lúc này khái niệm Module ra đời và thể hiện vai trò quan trọng của nó.
#Node.js Module là gì?Module là những đoạn mã được đóng gói lại và được giữ Private. Điều đó có nghĩa là các hàm hay biến trong module mới có thể truy cập và thao tác với nhau. Nếu bạn muốn sử dụng module từ bên ngoài thì cần phải chìa API là các biến/hàm ra bằng cách sử dụng exports hoặc module.exports.
Chính nhờ tính đóng gói như thế này mà đảm bảo tính toàn vẹn của Module. Sẽ chỉ có những hàm, biến được exports thì bên ngoài mới truy cập được.
Các module hoàn toàn tách biệt độc lập nhau, mỗi module sẽ thực hiện nhiệm vụ của riêng nó mà không ảnh hưởng tới module khác. Khi nào cần sử dụng module nào thì gọi chúng ra và kết hợp các module lại với nhau tùy logic xử lý của bạn.
Trong chúng tôi có hai loại module. Một loại module được tích hợp sẵn trong chúng tôi và người ta gọi là built-in module.
Còn loại mà do bên thứ 3 phát triển và có thể cài đặt thêm bất cứ lúc nào thì gọi là external module. Với external module, bạn có thể dễ dàng cài đặt thông qua NPM.
1. Built-in ModulesNhư mình đã nói ở trên, built-in modules là những module được tích hợp sẵn trong chúng tôi Có thể kể tên một số built-in module như: http, url, crypto, fs, events, path…
Như ở bài viết giới thiệu về Nodejs, mình có thể tạo một server http mà không cần phải cài đặt thêm bất cứ module nào khác.
/** * Son Duong * https://vntalking.com * June 04, 2023 */ const http = require('http'); res.end(); }); server.listen(3000, 'localhost');Trong ví dụ trên mình require module http, sau đó khởi tạo server bằng phương thức http.createServer(), cuối cùng là lắng nghe server này trên port 3000.
2. Các module do 3rd party xây dựng (External Modules)Các built-in module chỉ mang lại cho Nodejs những tính năng cơ bản. Điều mà làm cho Nodejs phổ biến chính là một kho các module do cộng đồng phát triển.
Chúng ta có thể dễ dàng cài đặt một module thông qua NPM, với repository nổi tiếng là npmjs.
Ở bài viết về xây dựng website bằng chúng tôi chính là một ví dụ về việc sử dụng module bên ngoài.
/** * Son Duong * https://vntalking.com * June 04, 2023 */ const express = require('express') const app = express() const port = 3000Câu lệnh cài đặt một module bên ngoài: npm install --save express
Để sử dụng thì cũng tương tự như build-in module thôi: require('express')
3. Tự xây dựng moduleĐể tạo một module trong Nodejs cực kì dễ. Nếu không bàn đến logic của business thì cú pháp để tạo và đóng gói một module rất đơn giản, chỉ với vài dòng code.
Để dễ hiểu hơn, mình sẽ minh họa bằng một ví dụ tạo một module: Trả về một số ngẫu nhiên trong khoảng từ 1 đến 10.
Bước 1: Viết Module và chìa ra APIĐầu tiên, bạn tạo một file chúng tôi và chìa ra một API để có thể sử dụng ở bên ngoài module.
/** * Son Dương * https://vntalking.com * June 04, 2023 */ function getRandom(min, max) { return Math.random() * (max - min) + min; } exports.between1and10 = function() { return getRandom(1, 10); };Bạn có thể thấy đoạn code trên, mình sẽ “thò” một hàm có tên là between1and10() bằng từ khóa exports. Như vậy, từ bên ngoài module chỉ có thể sử dụng được hàm between1and10 mà thôi.
Như mình đã nói ở phần trên, module là một có tính đóng gói. Tức là chỉ những hàm/biến được phép truy xuất từ bên ngoài qua từ khóa exports, còn lại thì bên ngoài không thể truy nhập được.
Để sử dụng module, bạn làm như sau:
var myRandom = require('./myRandom.js'); console.log(myRandom.between1and10());Nếu bạn cố tình gọi hàm getRandom() từ bên ngoài như sau:
var myRandom = require('./myRandom.js'); console.log(myRandom.getRandom(5, 99));Nodejs sẽ báo lỗi ngay: TypeError: myRandom.getRandom is not a function.
Bằng cách ẩn những hàm/biến trong module, và chỉ cho phép những phần được phép sẽ cho phép mã nguồn của bạn được tổ chức tốt hơn.
4. Tạm kếtQua bài viết này, bạn đã hiểu về chúng tôi module là gì rồi đúng không? Nếu bạn đã đọc bài viết về clean code trong Nodejs, bạn sẽ hiểu về tầm quan trọng của module trong việc giúp mã nguồn sáng sủa hơn.
Node.js Là Gì? Các Ứng Dụng Của Node.js?
I. chúng tôi là gì?
Node.js là một nền tảng (Platform) phát triển độc lập được xây dựng ở trên JavaScript Runtime của Chrome. Chúng ta có thể xây dựng được các ứng dụng mạng một cách nhanh chóng và dễ dàng mở rộng.
Node.js được xây dựng và phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ sở tại California, Hoa Kỳ.
Phần Core bên dưới của Nodejs được viết hầu hết bằng C++ nên cho tốc độ xử lý và hiệu năng khá cao.
Nó tạo ra được các ứng dụng có tốc độ xử lý nhanh, real-time thời gian thực.
Node.js áp dụng cho các sản phẩm có lượng truy cập lớn, cần mở rộng nhanh, cần đổi mới công nghệ hoặc tạo ra các dự án Startup nhanh nhất có thể.
II. Phân biệt chúng tôi và JavaScriptVề bản chất, chúng tôi chính là ngôn ngữ JavaScript. Tuy nhiên, điểm khác của chúng tôi khác với JavaScript là các chương trình viết bằng chúng tôi sẽ được chạy trên môi trường máy chủ. Ngược lại các chương trình JavaScript thường sẽ được chạy trên môi trường trình duyệt.
Ứng dụng của Node.js
– Websocket server: Các máy chủ web socket như là Online Chat, Game Server…
– Fast File Upload Client: là các chương trình upload file tốc độ cao.
– Cloud Services: Các dịch vụ đám mây.
– RESTful API: đây là những ứng dụng mà được sử dụng cho các ứng dụng khác thông qua API.
– Any Real-time Data Application: bất kỳ một ứng dụng nào có yêu cầu về tốc độ thời gian thực. Micro Services: Ý tưởng của micro services là chia nhỏ một ứng dụng lớn thành các dịch vụ nhỏ và kết nối chúng lại với nhau. Nodejs có thể làm tốt điều này.
Nhược điểm của Node.js
Tốn tài nguyên Giống như hầu hết các công nghệ mới, việc triển khai chúng tôi trên host không phải là điều dễ dàng. chúng tôi đó là nó vẫn đang trong giai đoạn phát triển ban đầu, điều này có nghĩa là một số đặc trưng sẽ thay đổi trong quá trình phát triển tiếp theo.
III. Nhược điểm của Node.js– Tốn tài nguyên
– Giống như hầu hết các công nghệ mới, việc triển khai chúng tôi trên host không phải là điều dễ dàng. chúng tôi đó là nó vẫn đang trong giai đoạn phát triển ban đầu, điều này có nghĩa là một số đặc trưng sẽ thay đổi trong quá trình phát triển tiếp theo.
Nếu bạn cần xử lý các ứng dụng tốn tài nguyên CPU như encoding video, convert file, decoding encryption… hoặc các ứng dụng tương tự như vậy thì không nên dùng NodeJS (Lý do: NodeJS được viết bằng C++ & Javascript, nên phải thông qua thêm 1 trình biên dịch của NodeJS sẽ lâu hơn 1 chút ). Trường hợp này bạn hãy viết 1 Addon C++ để tích hợp với NodeJS để tăng hiệu suất tối đa! (Việc tích hợp rất thân thiện và nhanh chóng)!
Nodejs Bài 12: Static File (Tập Tin Tĩnh) Trong Nodejs
Series NodeJS căn bản cho người mới bắt đầu
Ở bài trước, chúng ta đã hoàn thiện phần nhúng Bootstrap vào dự án kết hợp với Template layout. Trên thực tế, dự án của chúng ta hoàn toàn có thể có thêm các tập tin tĩnh (static file). Các static file này có thể là file ảnh, file CSS, JS,..Nó sẽ được sử dụng vào các trang HTML của chúng ta, hay lưu các document dạng word, excel, pdf,… để cho phép người dùng tải về
Ở bài học hôm nay, ta sẽ tìm hiểu về cách lưu tập tin tĩnh và sử dụng nó
Bài toán đặt ra hôm nay, là mỗi users sẽ có thêm 1 thuộc tính có tên là “avatar” để lưu ảnh đại diện. Mình sẽ chỉnh lại mảng thông tin user tại file “controllers/user.js” như sau:
Lúc này, khi các bạn reload lại trang chúng tôi các bạn sẽ thấy các ảnh không được hiển thị dù đường dẫn đã đúng. Lý do, là Express chưa hiểu được rằng đường dẫn mà bạn cung cấp chứa 1 tập tin tĩnh, Do đó, nó sẽ hiểu rằng đó là 1 route bình thường, trong khi bạn không hề định nghĩa route cho nó. Do vậy, kết quả không được trả về.
Với Express JS, ta sẽ cần khai báo thư mục chứa các tập tin tĩnh của chúng ta, để nó có thể gửi đúng dữ liệu mà ta muốn. Để khai báo 1 thư mục chứa tập tin tĩnh, Express cung cấp cú pháp sau:
Trong đó, biến ‘folder_name’ ở đây chính là tên folder chứa file tĩnh
Ở đây, mình lưu các file tĩnh trong thư mục “assets”, do đó, mình sẽ điều chỉnh tập tin “app.js” như sau:
Các bạn có thể thấy, mình đã thêm dòng lệnh “app.use(express.static(‘assets’))” để chỉ định thư mục lưu tập tin tĩnh.
Các bạn cần lưu ý rằng, Express sẽ tìm kiếm các tập tin tĩnh bên trong thư mục được khai báo, do đó, trong URL của tập tin, bạn cần không được kèm tên của thư mục được khai báo. Như vậy, mình sẽ bỏ đi phần “assets/” trong URL của các avatar ở mảng users
Vậy là chúng ta đã thành công trong việc sử dụng các static file trong dự án của mình rồi
Nếu các bạn muốn sử dụng nhiều thư mục để lưu các static file, bạn hoàn toàn có thể định nghĩa thêm cho chúng bằng cú pháp đã nêu ở trên. Ví dụ
Các bạn cũng lưu ý rằng, khi các bạn định nghĩa nhiều thư mục chứa static file, thì Express sẽ ưu tiên cao hơn cho thư mục được khai báo trước. Tức là tập tin nào được tìm thấy trước thì sẽ được ưu tiên hiển thị nếu các tập tin có cùng đường dẫn (do đường dẫn không được chứa thư mục khai báo nên chuyện các đường dẫn trùng nhau giữa các thư mục là hoàn toàn có thể xảy ra)
All Rights Reserved
Phân Tích Url Với Module Url Trong Nodejs
Sau khi mình đã giới thiệu xong với mọi người cơ bản về 2 module HTTP và fs trong chúng tôi rồi, thì bài này mình sẽ giới thiệu sơ qua với mọi người về module URL trong chúng tôi và làm một trang web đơn giản sử dụng kết hợp 3 module đã được học từ đầu series đến giờ.
1, Module URL là gì?-Module URL là một module được tích hợp sẵn vào trong core của chúng tôi nó được dùng để xử lý và phân tích chuỗi URL dựa vào đó chúng ta có thể biết được các thông số của URL đó.
2, Khai báo sử dụng Module URL.-Như mình đã nói ở trên là: ” module URL được tích hợp sẵn vào trong core của chúng tôi nên chúng ta không cần phải download hay cài đặt gì thêm cả.
-Để khai báo sử dụng module URL chúng ta sử dụng cú pháp:
require('url');-Module có các thuộc tính giống hệt như đối tượng location trong javascript nên mình sẽ không nhắc nghiều về lý thuyết nữa mà mình sẽ ví dụ luôn cho các bạn.
VD:
var url = require('url'); var website = "http://toidicode.com?a=5";Sau khi chạy đoạn code trên thì chúng ta thu được kết quả như sau:
auth: null hash: null host: chúng tôi hostname: chúng tôi href: http://toidicode.com/?a=5 path: /?a=5 pathname: / port: null protocol: http: query: 5 search: ?a=5 slashes: true 3, Ví dụ.-Ở phần này chúng ta sẽ cùng nhau xây dựng một web server có điều hướng url đơn giản kết hợp giữa 3 module đã được học là HTTP, fs và URL.
-Đầu tiên chúng ta sẽ tạo ra cấu trúc thư mục và file như sau:
File home.html sẽ có nội dung như sau:
File contact.html
-Sau khi đã có nội dung cho các file HTML bây giờ mình sẽ viết code để điều hướng các trang đó.
-Sau khi chạy đoạn code trên thì các bạn sẽ thấy kế quả tương ứng (vd load trang chúng tôi thì url sẽ là localhost:8000/contact)
4, Lời kết.Khái Niệm Callback Trong Nodejs
Để giải thích Callback là gì chúng ta hãy xem một tình huống như sau:
Bạn tới một cửa hàng để mua một món đồ mà bạn yêu thích, nhân viên cửa hàng nói với bạn rằng hiện tại món đồ đó đã hết, bạn để lại số điện thoại và yêu cầu họ gọi lại ngay sau khi có hàng. Sau đó bạn có thể đi chơi hoặc làm một công việc nào đó và không cần quan tâm tới cửa hàng đó nữa, cho tới khi bạn nhận được điện thoại thông báo của hàng đã có món đồ mà bạn yêu thích.
Máy chủ NodeJS có thể nhận rất nhiều các yêu cầu (request) từ rất nhiều người dùng. Vì vậy để nâng cao khả năng phục vụ, tất cả các API của NodeJS được thiết kế hỗ trợ Callback. “callback” là môt hàm (function), nó sẽ được gọi khi NodeJs hoàn thành một tác vụ (task) cụ thể.
Trong NodeJS các API được thiết kế để hỗ trợ Callback. Giả sử rằng bạn đang viết một chương trình để đọc 2 tập tin. Để làm việc này bạn sử dụng module fs, nó cung cấp cho bạn 2 hàm để đọc file là readFile và readFileSync. Chúng ta sẽ tìm hiểu sự khác biệt giữa 2 hàm này.
Blocking
readFileSync là một hàm đọc file một cách đồng bộ (synchronous), chính vì vậy trong khi hàm này đang thực thi nó sẽ chặn (block) chương trình thực thi các dòng code tiếp theo.
Mở cửa sổ CMD và thực thi tập tin chúng tôi .
Và đây là kết quả mà bạn nhận được:
Non Blocking
Bạn nên sử dụng hàm readFile để đạt được hiệu suất tốt hơn cho chương trình. Hàm này đọc file một cách “không đồng bộ” (asynchronous), nó “không chặn” (non block) chương trình thực thi các dòng code tiếp theo, nói cách khác là chương trình không đợi hàm này hoàn thành. Nhưng khi hàm này thực hiện xong nhiệm vụ của nó, nó sẽ gọi tới hàm Callback.
Xem ví dụ đầy đủ:
non-blocking-example.js
var fs = require("fs"); function readFinishedFile1(err, data) { if (err) console.log(err); console.log("- Data of file 1: "); console.log(data.toString()); } function readFinishedFile2(err, data) { if (err) console.log(err); console.log("- Data of file 2: "); console.log(data.toString()); } console.log("n"); console.log("Read File 1"); fs.readFile('C:\test\file1.txt', readFinishedFile1); console.log("n"); console.log("Read File 2"); fs.readFile('C:\test\file2.txt', readFinishedFile2); console.log("n"); console.log("Program Ended n");Cập nhật thông tin chi tiết về Phần 6: Module Url Trong Node.js trên website 2atlantic.edu.vn. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất. Chúc bạn một ngày tốt lành!