Chương 1 CƠ SỞ LÝ THUYẾT 1. Giới thiệu về Nodejs Hình 1.js là một nền tảng phát triển dựa trên JavaScript và được xây dựng trên trình duyệt Chrome's V8 JavaScript runtime. Được tạo ra bởi Ryan Dahl và ra mắt lần đầu vào năm 2009, Node.js đã nhanh chóng trở thành một trong những công cụ phổ biến nhất cho việc xây dựng ứng dụng web và server-side. V8 engine là một JavaScript engine mã nguồn mở chạy trên các trình duyệt Chrome.
Nó được thiết kế tập trung vào hiệu năng và chịu trách nhiệm cho việc dịch mã JavaScript sang mã máy để máy tính có thể hiểu và chạy được. Nhưng bạn cũng nên tránh nhầm lẫn rằng Node chạy trên trình duyệt. Cha đẻ của Node dựa trên V8 engine, cải tiến một số tính năng chẳng hạn file system API, thư viện HTTP và một số phương thức liên quan đến hệ điều hành. Điều đó có nghĩa là Node.js là một chương trình giúp ta có thể chạy code JavaScript trên máy tính, nói cách khác nó là một JavaScript runtime.
SVTH: Lê Huỳnh Bảo 4 Xây dựng website thuê phòng trọ Ưu điểm - Khả năng xử lý không đồng bộ (Asynchronous): Node.js sử dụng mô hình xử lý không đồng bộ, giúp tối ưu hiệu suất của ứng dụng bằng cách cho phép xử lý hàng loạt yêu cầu mà không phải chờ đợi kết quả của từng yêu cầu trước. - Hiệu suất cao: Nhờ sử dụng động cơ V8 của Google Chrome, Node.js có hiệu suất cao và khả năng xử lý tốt các yêu cầu đồng thời. Điều này làm cho nó thích hợp cho ứng dụng có yêu cầu cao về xử lý và đáp ứng. - Mô hình sự kiện (Event-driven): Sự kiện là trung tâm của Node.js, giúp quản lý các hoạt động và xử lý sự kiện một cách hiệu quả.
Điều này làm cho việc lập trình trở nên linh hoạt và dễ quản lý. - Cộng đồng lớn và hỗ trợ đa nền tảng: Node.js được hỗ trợ mạnh mẽ từ cộng đồng lập trình viên trên toàn thế giới, điều này đồng nghĩa với việc có nhiều thư viện, module và tài liệu hữu ích.js cũng có thể chạy trên nhiều hệ điều hành, giúp tối ưu hóa sự linh hoạt. - Dễ học và triển khai: Với việc sử dụng JavaScript, một ngôn ngữ lập trình phổ biến, nhà phát triển web đã quen thuộc với Node. Điều này giúp giảm thời gian học và giúp ứng dụng dễ dàng triển khai.
- Môi trường mô-đun (Module ecosystem): Node.js có một hệ sinh thái mô-đun mạnh mẽ, với hàng nghìn thư viện được phát triển và sẵn sàng sử dụng từ cộng đồng. - Phát triển ứng dụng real-time: Node.js làm cho việc xây dựng ứng dụng real- time, như chat và trò chơi trực tuyến, trở nên thuận tiện nhờ vào khả năng xử lý sự kiện và không đồng bộ. Nhược điểm - Nodejs gây hao tốn tài nguyên và thời gian. Nodejs được viết bằng C++ và JavaScript nên khi xử lý cần phải trải qua một quá trình biên dịch.
Nếu bạn cần xử lý những ứng dụng tốn tài nguyên CPU thì không nên sử dụng Nodejs. - Nodejs so với các ngôn ngữ khác như PHP, Ruby và Python sẽ không có sự chênh lệch quá nhiều. Nodejs có thể sẽ phù hợp với việc phát triển ứng dụng SVTH: Lê Huỳnh Bảo 5 Xây dựng website thuê phòng trọ mới. Tuy nhiên khi xây dựng và triển khai dự án quan trọng thì Nodejs không phải là sự lựa chọn hoàn hảo nhất.
Giới thiệu về React Hình 1.2: ReactJS React (còn được gọi là Reactjs hay React.js) là một Thư viện javascript được tạo ra bởi sự cộng tác giữa Facebook và Instagram. Nó cho phép những nhà phát triển web tạo ra giao diện người dùng nhanh chóng. Phần Views của Reactjs thường được hiển thị bằng việc chủ yếu dung các component mà chứa các component cụ thể hoặc các thẻ HTML. Một trong những đặc trưng duy nhất của Reactjs là việc render dữ liệu không những có thể thực hiện ở tầng server mà còn ở tầng client.
Nó cũng sử dụng khái niệm là Virtual DOM (DOM ảo). Virtual DOM tạo ra bản cache cấu trúc dữ liệu của ứng dụng trên bộ nhớ. Sau đó, ở mỗi vòng lặp, nó liệt kê những thay đổi và sau đó là cập nhật lại sự thay đổi trên DOM của trình duyệt một cách hiệu quả. Điều này cho phép ta viết các đoạn code như thể toàn bộ trang được render lại dù thực tế là Reactjs chỉ render những component hay subcomponent nào thực sự thay đổi.
Ưu điểm - Reactjs cực kì hiệu quả: Reactjs tạo ra cho chính nó DOM ảo – nơi mà các component thực sự tồn tại trên đó. Điều này sẽ giúp cải thiện hiệu suất rất nhiều. Reactjs cũng tính toán những thay đổi nào cần cập nhật len DOM và chỉ SVTH: Lê Huỳnh Bảo 6 Xây dựng website thuê phòng trọ thực hiện chúng. Điều này giúp Reactjs tránh những thao tác cần trên DOM mà nhiều chi phí.
- Reactjs giúp việc viết các đoạn code JS dễ dàng hơn: Nó dung cú pháp đặc biệt là JSX (Javascript mở rộng) cho phép ta trộn giữa code HTML và Javascript. Ta có thể them vào các đoạn HTML vào trong hàm render mà không cần phải nối chuỗi. Đây là đặc tính thú vị của Reactjs. Nó sẽ chuyển đổi các đoạn HTML thành các hàm khởi tạo đối tượng HTML bằng bộ biến đổi JSX.
- Nó có nhiều công cụ phát triển: Khi bạn bắt đầu Reactjs, đừng quên cài đặt ứng dụng mở rộng của Chrome dành cho Reactjs. Nó giúp bạn debug code dễ dàng hơn. Sau khi bạn cài đặt ứng dụng này, bạn sẽ có cái nhìn trực tiếp vào virtual DOM như thể bạn đang xem cây DOM thông thường. - Render tầng server: Một trong những vấn đề với các ứng dụng đơn trang là tối ưu SEO và thời gian tải trang.
Nếu tất cả việc xây dựng và hiển thị trang đều thực hiện ở client, thì người dùng sẽ phải chờ cho trang được khởi tạo và hiển thị lên. Điều này thực tế là chậm. Hoặc nếu giả sử người dùng vô hiệu hóa Javascript thì sao? Reactjs là một thư viện component, nó có thể vừa render ở ngoài trình duyệt sử dụng DOM và cũng có thể render bằng các chuỗi HTML mà server trả về. - Làm việc với vấn đề test giao diện: Nó cực kì dễ để viết các test case giao diện vì virtual DOM được cài đặt hoàn toàn bằng JS.
- Hiệu năng cao đối với các ứng dụng có dữ liệu thay đổi liên tục, dễ dàng cho bảo trì và sửa lỗi. Nhược điểm - Reactjs chỉ phục vụ cho tầng View. React chỉ là View Library nó không phải là một MVC framework như những framework khác. Đây chỉ là thư viện của Facebook giúp render ra phần view.
Vì thế React sẽ không có phần Model và Controller, mà phải kết hợp với các thư viện khác. React cũng sẽ không có 2- way binding hay là Ajax SVTH: Lê Huỳnh Bảo 7 Xây dựng website thuê phòng trọ - Tích hợp Reactjs vào các framework MVC truyền thống yêu cầu cần phải cấu hình lại. - React khá nặng nếu so với các framework khác React có kích thước tương tương với Angular (Khoảng 35kb so với 39kb của Angular). Trong khi đó Angular là một framework hoàn chỉnh - Khó tiếp cận cho người mới học Web 1.
Giới thiệu về Visual Studio Code Hình 1.3: Visual Studio Code Visual Studio Code (VS Code) là một trình soạn thảo mã nguồn nhỏ gọn và mạnh mẽ, phát triển bởi Microsoft. Được thiết kế để đáp ứng nhu cầu lập trình của cộng đồng đa dạng, VS Code mang đến cho nhà phát triển một môi trường làm việc hiện đại và linh hoạt. Là một trình biên tập lập trình code miễn phí dành cho Windows, Linux và macOS, Visual Studio Code được phát triển bởi Microsoft. Nó được xem là một sự kết hợp hoàn hảo giữa IDE và Code Editor.
Visual Studio Code hỗ trợ chức năng debug, đi kèm với Git, có syntax highlighting, tự hoàn thành mã thông minh, snippets, và cải tiến mã nguồn. Nhờ tính năng tùy chỉnh, Visual Studio Code cũng cho phép người dùng thay đổi theme, phím tắt, và các tùy chọn khác. SVTH: Lê Huỳnh Bảo 8 Xây dựng website thuê phòng trọ Một số tính năng nổi bật - Hỗ trợ nhiều ngôn ngữ lập trình: VSCode hỗ trợ nhiều ngôn ngữ lập trình phổ biến như JavaScript, TypeScript, Python, Java, C++, và nhiều ngôn ngữ khác. Điều này làm cho nó trở thành một IDE đa nhiệm và đa ngôn ngữ.
- Hỗ trợ Git tích hợp: VSCode tích hợp sẵn công cụ quản lý phiên bản Git, giúp bạn theo dõi thay đổi mã nguồn, thực hiện commit, và quản lý nhánh dễ dàng. - Hiển thị IntelliSense: VSCode cung cấp IntelliSense, một tính năng tự động hoàn thành mã nguồn, giúp bạn nhanh chóng và dễ dàng gõ mã và truy cập vào các phương thức và biến. - Mở rộng và Cộng đồng: VSCode có hệ thống mở rộng mạnh mẽ, cho phép bạn cài đặt các tiện ích mở rộng (extensions) từ thư viện lớn trên Visual Studio Code Marketplace. Cộng đồng người dùng cũng đóng góp nhiều extensions hữu ích.
- Gỡ lỗi (Debugging): VSCode hỗ trợ chức năng gỡ lỗi cho nhiều ngôn ngữ lập trình, với khả năng thiết lập các điểm dừng (breakpoints), xem biến, và theo dõi thực thi chương trình. - Terminal tích hợp: VSCode tích hợp một terminal trực tiếp trong giao diện người dùng, giúp bạn thực hiện các lệnh hệ thống và quản lý dự án mà không cần chuyển đến cửa sổ terminal riêng biệt. - Theme và tùy chỉnh: VSCode cho phép bạn tùy chỉnh giao diện và theme theo ý muốn của mình. Nó cũng hỗ trợ nhiều theme màu sắc phổ biến.
- Integrations và Snippets: Hỗ trợ nhiều tích hợp và snippets, giúp tăng tốc quá trình phát triển bằng cách cung cấp các đoạn mã mẫu và tích hợp với các dịch vụ phổ biến. - Tích hợp với các công cụ môi trường phát triển: VSCode có thể tích hợp với nhiều công cụ và môi trường phát triển khác nhau, tạo điều kiện thuận lợi cho quá trình phát triển ứng dụng. SVTH: Lê Huỳnh Bảo 9 Xây dựng website thuê phòng trọ 1. Giới thiệu hệ quản trị cơ sở dữ liệu NoSql MongoDB Hình 1.4: Hệ quản trị CSDL NoSQL MongoDB MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là CSDL thuộc NoSql và được hàng triệu người sử dụng, MongoDB là một database hướng tài liệu (document), các dữ liệu được lưu trữ trong document kiểu JSON.
MongoDB được phát triển bởi MongoDB Inc. và được cấp phép theo Giấy phép Công cộng phía Máy chủ (SSPL). Với CSDL quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan hệ (như MySQL hay SQL Server…) sử dụng các bảng để lưu dữ liệu thì với MongoDB chúng ta sẽ dùng khái niệm là collection thay vì bảng.