Tổng quan về các chức năng của hệ thống:
- Tìm hiểu các nghiệp vụ quản lý cửa hàng bán lẻ, quản lý kho, quản lý giá, quản lý sản phẩm.
- Hệ thống cho phép vận hành hoạt động mua bán sản phẩm trong cửa hàng bán lẻ. - Hệ thống cho phép quản lý nhập xuất hàng tồn kho.
- Hệ thống cho phép quản lý giá cả.
- Hệ thống cho phép báo cáo để kiểm tra và có chiến lược tốt hơn cho thời gian sắp tới. - Hệ thống cho phép đề xuất những chiến lược sắp xếp trưng bày hàng hóa, đề nghị hàng
Phần C
Công cụ, công nghệ thực hiện đề tài 9 Front-end: ReactJS
9.1 Giới thiệu
• ReactJS là một thư viện Javascript dùng để xây dựng Giao diện người dùng, hướng đến sự đơn giản hóa, tái sử dụng và linh động trong quá trình thực hiện.
• Do Facebook phát triển bản và ra bản Release đầu tiên trên thế giới vào năm 2013, ngày nay ReactJS ngày càng trở nên phổ biến với một cộng đồng hỗ trợ lớn mạnh và đang ngày càng phát triển thêm.
• Mục tiêu của ReactJS không chỉ xây dựng trang web hoạt nhanh, mượt mà, linh động, mà còn là tính mở rộng cao, đơn giản. Chính nhờ cấu trúc của ReactJS mà code dễ đọc, dễ debug và tái sử dụng, tránh việc phải viết lại những đoạn code dư thừa.
9.2 Sức mạnh của ReactJS - Lý do lựa chọn
ReactJS cho phép người sử dụng có thể phá vỡ một giao diện người dùng vô cùng phức tạp thành những thành phần đơn giản hơn, từ đó dễ quản lý và xử lý lỗi, khiến cấu trúc chương trình minh bạch, trong sáng.
Một điểm mạnh khác của ReactJS chính là khả năng xây dựng trang web mượt mà hơn do React chỉ cập nhật lại những hiển thị có sự thay đổi lên giao diện chứ không cập nhật lại toàn giao diện, đẩy nhanh tốc độ đáp ứng của trang web lên.
Ngoài ra, ReactJS được hỗ trợ bởi Facebook và có một cộng đồng người sử dụng lớn mạnh. Điều này cũng tạo nên một sự đảm bảo hơn khi gặp khó khăn, người sử dụng có thể nhanh chóng tìm ra người giúp đỡ hoặc giải pháp dễ dàng. Hơn nữa, do sự lớn mạnh này, nhiều package do cộng đồng sáng tạo ra cũng hỗ trợ rất lớn trong việc làm giao diện thêm chuyên nghiệp.
9.3 Một số khái niệm cơ bản9.3.1 Component 9.3.1 Component
Giao diện sẽ được chia thành những thành phần riêng biệt, được gọi là Component. Những Component này chính là những phần giao diện nhỏ mà khi ghép các phần này lại với nhau ta có thể có giao diện hoàn chỉnh.
Hơn nữa, những Component này có thể được tái sử dụng ở nhiều trang khác nhau, hạn chế viết lại những phần code không cần thiết.
9.3.2 State
Có thể định nghĩa Component bằng hai cách: Stateful Component và Stateless Component. State chính là trạng thái bên trong một Component và phạm vi giới hạn của nó cũng chỉ là bên trong Component.
Một Component có thể khởi tạo và thay đổi State của nó khi cần thiết. State của Component cha thường được kết thức khi được truyền vào thành Props các component con để quyết định sự thay đổi của nó.
9.3.3 Props
Có thể xem các Props là đầu vào truyền vào của các Component. Dựa vào Props được truyền vào này, các Component sẽ cho hiển thị ra các giao diện khác nhau tương ứng.
Props là thuộc tính chỉ nhận vào từ bên ngoài. Bản thân bên trong Component không thể thay đổi giá trị Props
10 Back-end: NestJS 10.1 Giới thiệu
Nest (NestJS) là một framework để xây dựng các ứng dụng server-side bằng Node.js hiệu quả, và dễ mở rộng. Nó sử dụng ngôn ngữ bậc cao của javascrip là TypeScript (nhưng vẫn cho phép các nhà phát triển sử dụng JavaScript thuần túy) và kết hợp các tính chất của OOP (Lập trình hướng đối tượng), FP (Lập trình chức năng) và FRP (Lập trình phản ứng chức năng).4
Về bản chất Nest sử dụng các framework máy chủ HTTP mạnh mẽ như là Express (mặc định) và có thể tùy chọn cấu hình để sử dụng Fastify.4
Nest cung cấp một tầng trừu tượng trên các framework Node.js phổ biến này (Express / Fastify), nhưng cũng hỗ trợ API của họ trực tiếp cho nhà phát triển. Điều này cho phép các nhà phát triển tự do sử dụng vô số các mô-đun của bên thứ ba có sẵn cho nền tảng cơ bản. Có thể hiểu là tất cả các package mà chúng ta cài thêm khi sử dụng Express / Fastify đều có thể tích hợp dể dàng vào Nestjs.4
10.2 NestJS có những gì
• NestJS tương thích với cả Typescript và Javascript thuần, default là Typescript.5
• Design Pattern xuyên suốt NestJS là Dependency Injection, và cú pháp của NestJS rất giống Angular. Nên nếu bạn đã có kiến thức về Angular thì việc bắt đầu với NesJS sẽ khá dễ dàng.5
• NestJS có rất nhiều module hỗ trợ bạn, từ việc hot reload, logger cho đến GraphQL, Websocket rồi cqrs pattern, microservices,...5
• Module microservices của NestJS hỗ trợ đủ loại kết nối: RabbitMQ, gRPC, Kafka, Re- dis,...5
4Framework Nestjs, Võ Văn Danh, https://viblo.asia/p/framework-nestjs-gioi-thieu-part-1-GrLZDkAwKk0
(truy cập lần cuối 25/07/2021)
5NestJS, Lao Văn Tuấn, https://viblo.asia/p/nestjs-framework-than-thanh-cho-nodejs-RQqKLL7OK7z (truy
10.3 Sức mạnh NestJS - Lý do lựa chọn10.3.1 Là JavaScript, nhưng tốt hơn - TypeScript 10.3.1 Là JavaScript, nhưng tốt hơn - TypeScript
Một số người cho rằng đó là bởi vì JavaScript không phải là một ngôn ngữ đủ nghiêm ngặt, vì vậy TypeScript sẽ là giải pháp hiệu quả hơn
TypeScript là một tập hợp siêu của JavaScript, nó tăng khả năng của JavaScript bằng cách thêm các tính năng khá hữu ích cho nhu cầu phát triển back-end, như suy luận kiểu, chú thích kiểu và kiểm tra kiểu thời gian biên dịch ( nó là ngôn ngữ biên dịch ), giao diện, generic, không gian tên, v.v.6
10.3.2 Là Node.js với nhiều công cụ được viết sẵn
Cung cấp các công cụ hữu ích như Middleware, Exception filter, Pipeline, Guard, ...
10.3.3 Đảm bảo độ vững chắc của dữ liệu
NestJS được đóng gói mặc định với TypeORM giúp người dùng dễ dàng kết nối dữ liệu cũng như thao tác 1 cách an toàn và hiệu quả
10.3.4 So sánh với ASP.NETCác yếu tố so Các yếu tố so
sánh Node.js ASP.NET
Định nghĩa Node.js là nền tảng dịch ngôn ngữ nguồn của JavaScript thành mã máy.
Một nền tảng quản lý đa ngôn ngữ để phát triển ứng dụng web.
Libralies ml.js, Brain.js, Synaptic, Limdu.js,
ConvNetJS, Stdlib, and others. Swagger, Unity.WebAPI, Serilog,IdentityServer04AspNetIdentity, Nswag, and others.
Framework VulcanJS, Total.js, AdonisJs, Feath-
ers.js, Sailsjs, Nestjs... ASP.NET
Sử dụng API web, ứng dụng web, trình dịch,
tạo tài liệu, tập lệnh... Ứng dụng dành cho thiết bị diđộng, web desktop, Microservice cho Docker container, game, ma- chine learning và các dịch vụ Cloud
Performance Nền tảng này xử lý đa nhiệm một cách hoàn hảo - đó là một giải pháp nhẹ không gây quá tải cho máy chủ của bạn.
Hiệu suất của ASP.NET khá cao và nền tảng này liên tục phát triển. Phiên bản mới nhất nhanh hơn 15% so với phiên bản đầu tiên.
Công cụ IDE, WebStorm, Visual Studio, bất
kì trình soạn thảo code nào Sublime, Mono Develop, VisualStudio, ReSharper, Web Essentials
Hỗ trợ nền tảng Linux, OS X, Windows. Có phiên bản đa nền tảng .NET Core cho Windows, Linux, macOS.
Ngôn ngữ JavaScript C#, F#, or Visual Basic
6Năm lý do để chọn NestJS, https://ichi.pro/vi/nam-ly-do-de-chon-nestjs-169871910449483 (truy cập lần cuối 25/07/2021)
ASP.NET (Core) phù hợp hơn với các ứng dụng lớn, trong khi đối với các dịch vụ quy mô vừa và nhỏ, sẽ hữu ích hơn nếu chọn Node.js. Nói về hiệu suất .NET so với Node.js, .NET có hiệu suất cao hơn một chút, nhưng sự gọn nhẹ của Node.js lại là một điểm cộng rất lớn.7