Cấu trúc của ExpressJs

Một phần của tài liệu Rút trích và trực quan hoá dữ liệu trong lĩnh vực bất động sản (khóa luận tốt nghiệp) (Trang 29 - 37)

- App.js chứa các thơng tin về cấu hình, khai báo, các định nghĩa,... để ứng dụng của chúng ta chạy trơn tru.

- Package.json chứa các package cho ứng dụng chạy, có chức năng tương tự như composer.json hoặc Gemfile trong PHP hoặc RoR.

- Folder routes: chứa các route có trong ứng dụng - Folder view: chứa view/template cho ứng dụng

2.2.2. Tại sao nên sử dụng ExpressJS

Framework giúp cho việc phát triển ứng dụng được rút ngắn đi rất nhiều. Cũng như các framework dựa trên những ngôn ngữ khác như Rails (Ruby); Django (Python); Laravel, CakePHP (PHP)… Express được xây dựng dựa trên NodeJs. Vậy nó có ưu điểm gì để ta lựa chọn cho việc phát triển ứng dụng.

Express hỗ trợ việc phát triển ứng dụng theo mơ hình MVC, mơ hình phổ biến cho việc lập trình web hiện nay.

Cho phép định nghĩa Middleware hỗ trợ cho việc tổ chức và tái sử dụng code. Định nghĩa routes và các request method đến server một cách dễ dàng.

Hỗ trợ REST API.

Và còn rất nhiều thứ mà framework này hỗ trợ.

2.2.3. Áp dụng ExpressJS vào đề tài

Trong hệ thống ứng dụng của nhóm, ExpressJS được áp dụng để làm phần framework backend cho hệ thống, vì những ưu điểm của ExpressJS có dành cho một ứng dụng nhỏ rất là tiện lợi đặc biệt là tốc độ xử lí, hỗ trợ Rest API, cộng đồng lớn mạnh.

2.3. Django – Python:

2.3.1. Tổng quan về Django:

Django là một framework bậc cao của Python có thể thúc đẩy việc phát triển phần mềm thần tốc và clean, thiết kế thực dụng. Được xây dựng bởi nhiều lập trình viên kinh nghiệm, Django tập trung lớn những vấn đề phát triển Web, bạn có thể phát triển trang web của bạn mà không cần xây dựng từ những căn bản. Đặc biệt nó free và open source.

2.3.2. Những lợi thế của Django:

Hoàn thiện: Django phát triển theo tư tưởng "Batteries included" (có thể hiểu ý nghĩa là tích hợp tồn bộ, chỉ cần gọi ra mà dùng). Nó cung cấp mọi thứ cho developer khơng cần phải nghĩ phải dùng cái ngồi. Chúng ta chỉ cần tập trung vào sản phẩm, tất cả đều hoạt động liền mạch với nhau.

Đa năng: Django có thể được dùng để xây dựng hầu hết các loại website, từ hệ thống quản lý nội dung, cho đến các trang mạng xã hội hay web tin tức. Nó có thể làm việc với framework client-side, và chuyển nội dung hầu hết các loại format (HTML, RESS, JSON, XML, ...)

Bảo mật: Django giúp các developer trang các lỗi bảo mật thông thường bằng cách cung cấp framework rằng có những kĩ thuật "phải làm như vậy" để bảo vệ website. Ví dụ: Django cung cấp bảo mật quản lý tên tài khoản và mật khẩu, tránh các lỗi cơ bản như để thơng tin session lên cookie, mã hóa mật khẩu thay vì lưu thẳng.

Dễ Scale: Django sử dụng kiến trúc shared-nothing dựa vào component (mỗi phần của kiến trúc sẽ độc lập với nhau, và có thể thay thế hoặc sửa đổi nếu cần thiết). Có sự chia tách rõ ràng giữa các phần nghĩa là nó có thể scale cho việc gia tăng traffic bằng cách thêm phần cứng ở mỗi cấp độ: caching, servers, database servers, hoặc application servers. Nhiều web về kinh doanh đã thành công khi Django được scale đáp ứng yêu cầu của họ

Dễ maintain: code Django được viết theo nguyên tắc thiết kế và pattern có thể khuyến khích ý tưởng bảo trì và tái sử dụng code. Trên thực tế, nó sự theo khái niệm Don't Repeat Yourself làm cho khơng có sự lặp lại không cần thiết, giảm một lượng code.

Tính linh động: Django được viết bằng Python, nó có thể chạy đa nền tảng. Nó có nghĩa rằng bạn khơng ràng buộc một platform server cụ thể. Django được hỗ trợ tốt

ở nhiều nhà cung cấp hosting, họ sẽ cung cấp hạ tầng và tài liệu cụ thể cho hosting web Django.

2.3.3. Sự phổ biến của Django:

Thực sự chưa có một bài thống kê cụ thể về sự phố biến các framework. Việc đánh gía hiện nay dựa vào số lượng các web phổ biến dùng Django, số lượng người đóng góp codebase, và số lượng người phát triển cả tình nguyện lẫn được trả cơng. Thì có thể cho rằng Django là framework phổ biến.

Các trang web phổ biến sử dụng Django: Disqus, Instagram, Knight Foundation, MacArthur Foundation, Mozilla, National Geographic, Open Knowledge Foundation, Pinterest, and Open Stack

2.3.4. Áp dụng Django vào đề tài:

Trong ứng dụng của nhóm, Django được sử dụng để xây một micro service phụ trợ cho service chính. Dựa trên thế mạnh về dữ liệu của ngơn ngữ Python, nhóm áp dụng Django để xây dựng thuật tốn và xử lí dữ liệu nhanh chóng hơn.

2.4. MongoDB

2.4.1. Giới thiệu về MongoDB

MongoDB là phần mềm cơ sở dữ liệu mã nguồn mở NoSQL hỗ trợ đa nền tảng được thiết kế theo hướng đối tượng. Vì thế, nó có thể dùng để lưu trữ dữ liệu có cấu trúc phức tạp và đa dạng. Dữ liệu được gọi là Big Data. Đặc biệt, chương trình này lưu trữ dữ liệu vào collection theo hướng tài liệu kiểu JSON thay vì bảng nên có hiệu suất cao và tính khả dụng cao.

Trong khái niệm của MongoDB có nhắc đến NoSQL, vậy NoSQL (Non- Relational SQL) là dạng cơ sở dữ liệu mã nguồn mở được ra đời như một mơ hình tiến bộ hơn về tốc độ, tính năng,… so với hệ quản trị cơ sở dữ liệu quan hệ RDBMS. NoSQL có kiểu dữ liệu JSON. Đây là dạng dữ liệu kiểu key và value cùng với hiệu

suất nhanh và khả năng mở rộng không bị ràng buộc bởi việc tạo khóa ngoại, khóa chính,… nên được ưa chuộng và sử dụng rất phổ biến.

Với NoSQL, có thể mở rộng dữ liệu một cách thoải mái mà không phải lo lắng về khóa ngoại hay là khóa chính, hoặc các cơng việc như là kiểm tra ràng buộc như hệ quản trị cơ sở dữ liệu truyền thống.

Ưu điểm: NoSQL giải quyết được các vấn đề dữ liệu lớn (big data) về các hệ

thống thông tin hoặc là phân tán dữ liệu.

Nhược điểm: cũng từ ưu điểm trên, do không hạn chế việc mở rộng dữ liệu nên

nó tồn tại một số nhược điểm như là: sự phụ thuộc vào từng bản ghi, tính nhất quán hoặc là đặc tính tồn vẹn dữ liệu.

2.4.2. Tại sao nên sử dụng hệ quản trị cơ sở dữ liệu MongoDB

Ưu điểm:

- Đầu tiên có thể nhắc đến là tính linh hoạt lưu trữ dữ liệu theo các kích cỡ khác nhau, dữ liệu dưới dạng hướng tài liệu JSON nên bạn có thể chèn vào thoải mái bất cứ thơng tin gì bạn muốn.

- Khác với RDBMS, dữ liệu trong đây khơng có sự ràng buộc và khơng có u cầu tuân theo khuôn khổ nhất định, điều này giúp bạn tiết kiệm thời gian cho việc kiểm tra sự thỏa mãn về cấu trúc nếu muốn chèn, xóa, cập nhật hay thay đổi các dữ liệu trong bảng.

- MongoDB dễ dàng mở rộng hệ thống bằng cách thêm node vào cluster – cụm các node chứa dữ liệu giao tiếp với nhau.

- Ưu điểm thứ tư là tốc độ truy vấn nhanh hơn nhiều so với hệ quản trị cơ sở dữ liệu quan hệ RDBMS do dữ liệu truy vấn được cached lên bộ nhớ RAM để lượt truy

- Cũng là một ưu điểm về hiệu suất truy vấn của MongoDB, trường dữ liệu “_id” luôn được tự động đánh chỉ mục để đạt hiệu suất cao nhất.

Nhược điểm:

- Điều đầu tiên phải kể đến ở đây là MongoDB khơng có các tính chất ràng buộc như trong RDBMS nên khi thao tác với mongoDB thì phải hết sức cẩn thận.

- MongoDB sử dụng sẽ hao tốn tài nguyên của hệ thống nhiều hơn RDBMS. Nhưng đến thời điểm hiện tại thì vấn đề này khơng cịn là điều lo ngại nữa vì các máy tính mặt bằng chung cấu hình đều khá cao.

Tại sao nên sử dụng MongoDB:

- Khi website có tính chất INSERT cao, bởi vì mặc định MongoDB có sẵn cơ chế ghi với tốc độ cao và an toàn.

- Khi website ở dạng real-time nhiều, nghĩa là nhiều người cùng thao tác với ứng dụng trong thời gian thực. Ví dụ như ứng dụng chat hay stream trực tuyến chẳng hạn.

- Với website có nhiều dữ liệu, giả sử ứng dụng web có đến 10 triệu bản ghi thì khá khó khăn để query được với Mysql. Chọn MongoDB vì MongoDB có khả năng tìm kiếm thông tin liên quan cũng khá nhanh nên trường hợp này nên dùng nó.

2.4.3. Áp dụng MongoDB vào đề tài

Nhờ những tính năng nổi trội của MongoDB, nhóm đã sử dụng MongoDB dùng làm hệ quản trị cơ sở dữ liệu chính. Server sử dụng MongoDB để lưu trữ toàn bộ dữ liệu, dữ liệu này sẽ được server sử dụng REST API để gọi lên.

2.5. Reactjs

2.5.1. Giới thiệu về Reactjs

React.js là một thư viện Javascript đang nổi lên trong những năm gần đây với xu hướng Single Page Application. Trong khi những framework khác cố gắng hướng đến một mơ hình MVC hồn thiện thì React nổi bật với sự đơn giản và dễ dàng phối hợp với những thư viện Javascript khác. Nếu như AngularJS là một Framework cho phép nhúng code javasscript trong code html thông qua các attribute như ng-model, ng-repeat...thì với react là một library cho phép nhúng code html trong code javascript nhờ vào JSX, có thể dễ dàng lồng các đoạn HTML vào trong JS.Tích hợp giữa javascript và HTML vào trong JSX làm cho các component dễ hiểu hơn.

React là một thư viện UI phát triển tại Facebook để hỗ trợ việc xây dựng những thành phần (components) UI có tính tương tác cao, có trạng thái và có thể sử dụng lại được. React được sử dụng tại Facebook trong production, và Instagram được viết hoàn toàn trên React.

Một trong những điểm hấp dẫn của React là thư viện này không chỉ hoạt động trên phía client, mà cịn được render trên server và có thể kết nối với nhau. React so sánh sự thay đổi giữa các giá trị của lần render này với lần render trước và cập nhật ít thay đổi nhất trên DOM.

2.5.2. Tại sao nên sử dụng Reactjs

Dễ sử dụng:

- React là một thư viện GUI nguồn mở JavaScript tập trung vào một điều cụ thể; hoàn thành nhiệm vụ UI hiệu quả. Nó được phân loại thành kiểu “V” trong mơ hình MVC (Model-View-Controller).

- Là lập trình viên JavaScript, bạn sẽ dễ dàng hiểu được những điều cơ bản về React. Bạn thậm chí có thể bắt đầu phát triển các ứng dụng dựa trên web bằng cách sử dụng react chỉ trong vài ngày.

- Để củng cố hiểu biết của mình, bạn hãy thử khám phá thêm nhiều hướng dẫn về React. Chúng mang đến nhiều thông tin về cách sử dụng công cụ: videos, hướng dẫn và dữ liệu làm phong phú góc nhìn của bạn.

Hỗ trợ Reusable Component trong Java:

- React cho phép bạn sử dụng lại components đã được phát triển thành các ứng dụng khác có cùng chức năng. Tính năng tái sử dụng component là một lợi thế khác biệt cho các lập trình viên.

Viết component dễ dàng hơn:

- React component dễ viết hơn vì nó sử dụng JSX, mở rộng cú pháp tùy chọn cho JavaScript cho phép kết hợp HTML với JavaScript.

- JSX là một sự pha trộn tuyệt vời của JavaScript và HTML. Nó làm rõ tồn bộ quá trình viết cấu trúc trang web. Ngồi ra, phần mở rộng cũng giúp render nhiều lựa chọn dễ dàng hơn.

- JSX có thể khơng là phần mở rộng cú pháp phổ biến nhất, nhưng nó được chứng minh là hiệu quả trong việc phát triển components đặc biệt hoặc các ứng dụng có khối lượng lớn.

Hiệu suất tốt hơn với Virtual DOM:

- React sẽ cập nhật hiệu quả quá trình DOM (Document Object Model – Mơ hình đối tượng tài liệu). Như đã biết, q trình này có thể gây ra nhiều thất vọng trong các dự án ứng dụng dựa trên web. May mắn là React sử dụng virtual DOMs, vì vậy có thể tránh được vấn đề này.

- Công cụ cho phép xây dựng các virtual DOMs và host chúng trong bộ nhớ. Nhờ vậy, mỗi khi có sự thay đổi trong DOM thực tế, thì virtual sẽ thay đổi ngay lập tức.

- Hệ thống này sẽ ngăn DOM thực tế để buộc các bản cập nhật được liên tục. Do đó, tốc độ của ứng dụng sẽ khơng bị gián đoạn.

Thân thiện với SEO:

- React cho phép tạo giao diện người dùng có thể được truy cập trên các cơng cụ tìm kiếm khác nhau. Tính năng này là một lợi thế rất lớn vì khơng phải tất cả các khung JavaScript đều thân thiện với SEO.

- Ngồi ra, vì React có thể tăng tốc q trình của ứng dụng nên có thể cải thiện kết quả SEO. Cuối cùng tốc độ web đóng một vai trị quan trọng trong tối ưu hóa SEO.

Một phần của tài liệu Rút trích và trực quan hoá dữ liệu trong lĩnh vực bất động sản (khóa luận tốt nghiệp) (Trang 29 - 37)