CHƯƠNG 1. NodeJS NodeJS là một môi trường chạy mã JavaScript phía máy chủ được xây dựng trên JavaScript Engine của Google Chrome (V8 JavaScript Engine) [1]. Nó cho phép bạn chạy mã JavaScript trên máy chủ, không chỉ trong môi trường trình duyệt. Logo NodeJS NodeJS cho phép phát triển ứng dụng máy chủ hiệu quả và mạnh mẽ bằng cách sử dụng JavaScript.
Nó sử dụng mô hình I/O(input/ouput) không đồng bộ và sự kiện để xử lý các yêu cầu một cách hiệu quả, giúp ứng dụng xử lý đồng thời hàng nghìn kết nối. NodeJS sử dụng JavaScript làm ngôn ngữ chính để phát triển ứng dụng máy chủ. Điều này cho phép các nhà phát triển sử dụng cùng một ngôn ngữ để xây dựng cả phía máy chủ và phía khách hàng (trình duyệt), giúp tiết kiệm thời gian và tăng tính nhất quán trong quá trình phát triển. NodeJS hỗ trợ nhiều nền tảng như Windows, macOS và Linux, cho phép phát triển ứng dụng mà không cần thay đổi ngôn ngữ hoặc công cụ.
Ngoài ra, NodeJS có một hệ thống mô-đun mạnh mẽ cho phép sử dụng và chia sẻ mã nguồn một cách dễ dàng. Gói npm (Node Package Manager) là một kho lưu trữ mã nguồn mở lớn chứa hàng ngàn mô- đun và thư viện đã được phát triển bởi cộng đồng NodeJS 1. ExpressJS ExpressJS là một framework web được xây dựng dựa trên NodeJS, giúp phát triển các ứng dụng web và API một cách nhanh chóng và dễ dàng. Nó cung cấp một tập hợp các chức năng và công cụ giúp quản lý yêu cầu và phản hồi, xử lý định tuyến, middleware và các tính năng khác cho ứng dụng web.
14 ExpressJS được thiết kế để đơn giản và nhẹ nhàng, giúp nhà phát triển xây dựng ứng dụng web một cách nhanh chóng và dễ dàng. Nó cung cấp một cú pháp rõ ràng và gọn nhẹ, cho phép tạo các route (đường dẫn) và xử lý các yêu cầu HTTP một cách dễ dàng. Bên cạnh đó, nó có một hệ thống định tuyến linh hoạt, cho phép xác định các endpoint (điểm cuối) của ứng dụng và xử lý các yêu cầu tương ứng. Bằng cách sử dụng các phương thức HTTP như GET, POST, PUT, DELETE, chúng ta có thể định nghĩa các tác vụ xử lý cho mỗi endpoint.
ExpressJS hỗ trợ middleware, cho phép thực hiện các tác vụ xử lý trung gian trước khi yêu cầu đến endpoint cuối cùng. Middleware có thể sử dụng để xác thực, ghi lại nhật ký, xử lý lỗi và nhiều tác vụ khác. Chúng ta có thể tự định nghĩa middleware của riêng mình hoặc sử dụng các middleware có sẵn. ExpressJS không áp đặt cấu trúc dự án cụ thể nào, cho phép tổ chức mã nguồn theo cách riêng biệt mà k cần tuân theo một quy chuẩn nào.
Chúng ta có thể tách các tác vụ và xử lý vào các tệp tin riêng biệt, và sau đó nhập chúng vào ứng dụng chính. MongoDB MongoDB là một hệ quản trị cơ sở dữ liệu phi quan hệ (NoSQL) mã nguồn mở, nó được viết bằng C++ [3]. Nó lưu trữ dữ liệu dưới dạng tài liệu (document) theo mô hình dữ liệu JSON-like, gọi là BSON (Binary JSON). MongoDB được phát triển để hỗ trợ các ứng dụng web hiệu năng cao, có khả năng mở rộng và dễ sử dụng.
MongoDB lưu trữ dữ liệu trong các tài liệu (documents), mỗi tài liệu là một bản ghi độc lập chứa thông tin được biểu diễn dưới dạng cặp khóa-giá trị. Mỗi tài liệu có thể có cấu trúc dữ liệu khác nhau, không giống như cơ sở dữ liệu SQL truyền thống. Điều này cho phép linh hoạt trong việc thay đổi cấu trúc dữ liệu và tiết kiệm thời gian cho việc chuẩn bị cơ sở dữ liệu trước.[3] MongoDB có khả năng mở rộng ngang (horizontal scaling), cho phép phân tán dữ liệu trên nhiều máy chủ và cung cấp hiệu năng và sự mở rộng cao. Chúng ta có thể thêm các máy chủ mới vào hệ thống MongoDB để tăng khả năng xử lý dữ liệu mà không gây gián đoạn cho ứng dụng.
Ngôn ngữ truy vấn mạnh mẽ, cho phép truy vấn dữ liệu theo nhiều tiêu chí khác nhau, bên cạnh đó, MongoDB cung cấp các phiên bản driver cho nhiều ngôn ngữ lập trình phổ biến như JavaScript (Node.js), Python, Java, Ruby, C# và nhiều ngôn ngữ khác. Điều này giúp dễ dàng tích hợp MongoDB vào ứng dụng và thao tác với cơ sở dữ liệu. ReactJS ReactJS là một thư viện JavaScript phát triển bởi Facebook, được sử dụng để xây dựng giao diện người dùng (UI) động và tương tác trên các ứng dụng web. ReactJS tập trung vào việc xây dựng các thành phần UI tái sử dụng, và sử dụng cách tiếp cận gọi là "one-way data flow" (dòng dữ liệu một chiều) để quản lý và cập nhật giao diện.
Logo ReactJS ReactJS sử dụng các thành phần để xây dựng giao diện người dùng. Mỗi thành phần đại diện cho một phần nhỏ của giao diện và có thể tái sử dụng trong nhiều nơi khác nhau. Thành phần trong ReactJS được xây dựng bằng cách sử dụng cú pháp JSX, cho phép kết hợp mã JavaScript và HTML một cách linh hoạt. ReactJS sử dụng một cấu trúc dữ liệu gọi là Virtual DOM (DOM ảo) để quản lý giao diện người dùng.
Virtual DOM là một phiên bản nhẹ của DOM thật, được lưu trữ trong bộ nhớ và cập nhật khi có thay đổi. Khi dữ liệu thay đổi, React so sánh Virtual DOM mới với phiên bản cũ, tìm ra sự khác biệt và chỉ cập nhật các thành phần cần thiết trên DOM thật Trong ReactJS, dữ liệu di chuyển theo hướng một chiều từ thành phần cha đến thành phần con. Thay đổi dữ liệu trong thành phần cha sẽ lan truyền xuống các thành phần con. Điều này giúp duy trì tính nhất quán của dữ liệu và giúp dễ dàng theo dõi và quản lý trạng thái của ứng dụng.
Json web token JSON Web Token (JWT) là một tiêu chuẩn mở được thiết kế để đơn giản hóa quá trình xác thực và truyền thông tin giữa các bên trong môi trường phân tán. JWT sử dụng định dạng dữ liệu JSON để đóng gói thông tin và tận dụng tính bảo mật của chữ ký số để đảm bảo tính toàn vẹn của dữ liệu. 16 Một JWT bao gồm ba phần chính: Header, Payload, và Signature. Header chứa thông tin về loại token và thuật toán mã hóa, trong khi Payload chứa các thông tin cụ thể về đối tượng được xác thực và các quyền hạn của nó.
Phần Signature được tạo ra bằng cách ký đi thông tin trong Header và Payload bằng một khóa bí mật, giúp đảm bảo rằng token không bị sửa đổi trong quá trình truyền tải.[4] JWT thường được sử dụng trong các ứng dụng web và dịch vụ web API để xác thực người dùng và quản lý quyền hạn truy cập. Khi một người dùng đăng nhập thành công, hệ thống sẽ tạo ra một JWT và trả về cho người dùng. Người dùng có thể sử dụng JWT này để truy cập các tài nguyên bảo vệ mà không cần phải gửi lại thông tin đăng nhập trong mỗi yêu cầu. Sự linh hoạt và đơn giản của JWT đã làm cho nó trở thành một công cụ quan trọng trong việc xây dựng các hệ thống an toàn và phân tán.
Tuy nhiên, quản lý chu kỳ sống và xác thực an toàn của khóa là những yếu tố quan trọng cần được quản lý cẩn thận để đảm bảo tính bảo mật của hệ thống.IO là một thư viện JavaScript giúp xây dựng ứng dụng web thời gian thực thông qua việc triển khai giao tiếp hai chiều (bidirectional) giữa máy khách (client) và máy chủ (server) thông qua các kết nối WebSocket. Được tạo ra để giải quyết nhược điểm của WebSocket, Socket.IO là một lớp trừu tượng hóa giúp xử lý sự không đồng bộ, hỗ trợ nhiều trình duyệt và điều kiện mạng khác nhau.IO tận dụng các khả năng của WebSocket nhưng có thêm tính năng chia sẻ dữ liệu thời gian thực một cách dễ dàng thông qua sự kiện (event) giữa máy khách và máy chủ. Một trong những đặc điểm quan trọng là khả năng tự động chọn lựa giữa 17 WebSocket, AJAX long polling, và các phương thức giao tiếp khác tùy thuộc vào khả năng hỗ trợ của trình duyệt và máy chủ. Ứng dụng phổ biến của Socket.IO bao gồm các ứng dụng chat trực tuyến, bảng điều khiển thời gian thực, và các ứng dụng đa người chơi trực tuyến.
Việc sử dụng Socket.IO giúp đơn giản hóa quá trình phát triển ứng dụng web thời gian thực và mang lại trải nghiệm người dùng mượt mà và linh hoạt. KHẢO SÁT VÀ PHÂN TÍCH 2. Phân tích hiện trạng Sự phổ biến và sử dụng các thiết bị di động như laptop và điện thoại di động đã tăng trưởng đáng kể trong những năm gần đây và dự kiến sẽ tiếp tục tăng trưởng trong tương lai. Sự phát triển của công nghệ di động, tính năng và khả năng kết nối ngày càng tốt đã làm cho các thiết bị di động trở thành một phần không thể thiếu trong cuộc sống hàng ngày.
Với sự phát triển của công nghệ và mô hình làm việc từ xa, người dùng đang ngày càng cần sử dụng các thiết bị di động như laptop để làm việc từ bất kỳ đâu và bất kỳ lúc nào. Laptop trở thành công cụ quan trọng cho những người làm việc tự do, nhân viên từ xa và những ai muốn linh hoạt trong công việc của mình. Các thiết bị di động hiện nay không chỉ đơn thuần là các thiết bị để lướt web và gửi tin nhắn. Chúng tích hợp nhiều tính năng và tiện ích, cho phép người dùng xem phim, nghe nhạc, chơi game, làm việc với ứng dụng đa phương tiện và thực hiện nhiều tác vụ khác.
Sự tiện lợi và tính di động của các thiết bị này đã làm tăng nhu cầu sử dụng chúng. Để phần nào giải quyết được nhu cầu sử dụng các thiết bị di động, nhóm chúng em xây dựng website bán đồ dùng công nghệ này giúp cho khách hàng dễ dàng tiếp cận và mua hàng một cách thuận thuận tiện nhất có thể 19 2. Khảo sát một số trang web 2. Thế giới di động Hình 4.
Giao diện trang chủ thế giới di động Nhận xét Các chức năng Hạn chế - Đa dạng về loại sản phẩm - Hệ thống cho phép những người - Tốc độ phản hồi nhanh dùng không đăng nhập vẫn có thể - Hiển thị đầy đủ, chi tiết hình ảnh và đánh giá sản phẩm, dẫn đến có thông số của các sản phẩm những đánh giá sai lệch Bảng 1. Chức năng và hạn chế của thế giới di động 20 2.