Tải bản đầy đủ (.docx) (91 trang)

Xây dựng website và app bán đồng hồ sử dụng flutter và golang

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.73 MB, 91 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
--------------------

BÁO CÁO ĐỒ ÁN
MÔN ĐỒ ÁN 2

Đề tài: Xây dựng website và app bán đồng hồ
sử dụng Flutter và Golang
Giảng viên hướng dẫn:
Thầy Nguyễn Tấn Tồn
Sinh viên thực hiện:
Thân Lê Anh Tuấn

17521223

Tơ Minh Khuê

17520653

TPHCM, 05/01/2021

1

TPHCM, 15/06/2019


NHẬN XÉT CỦA GIẢNG VIÊN
……….………………………………………………………………….….
…………………………………………………………………………………


…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
2


…………………………………………………………………………………


LỜI CẢM ƠN

Em xin chân thành cảm ơn quý thầy cô Khoa Công Nghệ Phần Mềm, đặc biệt là thầy

Nguyễn Tấn Tồn đã tận tình hướng dẫn chúng em hồn thành đồ án 2 này.

Bên cạnh đó, một lần nữa xin cảm ơn nhóm các bạn cùng lớp làm đồ án 2 đã động
viên, thảo luận và góp ý cho nhóm đồng thời đã khơi thêm nguồn động lực cho nhóm để
tiếp thêm động lực cho nhóm trong giai đoạn đầy khó khăn.

Ngồi ra, chúng em cũng cảm ơn các anh, chị, bạn bè và gia đình đã giúp đỡ và tạo
điều kiện cho chúng em hoàn tất đồ án 2 này.

Mặc dù đã rất cố gắng, tuy nhiên vì khả năng giới hạn nên vẫn không tránh khỏi
những sai sót, chúng em rất mong nhận được sự thơng cảm và góp ý chân tình từ q
thầy cơ và các bạn. Một lần nữa xin được chân thành cảm ơn mọi người.

Thành phố Hồ Chí Minh, ngày 05 tháng 01 năm 2021

Thân Lê Anh Tuấn

3


Tô Minh Khuê

ĐỀ CƯƠNG CHI TIẾT

TÊN ĐỀ TÀI: Xây dựng website và app bán đồng hồ sử dụng Flutter và Golang
Cán bộ hướng dẫn: thầy Nguyễn Tấn Toàn
Thời gian thực hiện: Từ ngày 25/09/2020 đến ngày 10/01/2021
Sinh viên thực hiện:
Thân Lê Anh Tuấn 17521223
Tô Minh Khuê


17520653

Nội dung đề tài: Xây dựng website và app bán đồng hồ sử dụng Flutter và Golang

Mục tiêu: Tìm hiểu Golang, các ưu điểm và khuyết điểm. Xây dựng ứng dụng bán đồng hồ với giao diện
Đối tượng: Các công ty, doanh nghiệp vừa và nhỏ.

Phương pháp thực hiện: Thảo luận và làm việc nhóm tìm hiểu theo năng lực và kinh nghiệm đã có tron
Kết quả mong đợi: Hiểu rõ về Golang và có thể xây dựng được app sử dụng công nghệ Golang.

Kế hoạch thực hiện:
STT

Cơng việc

Thời gian thực hiện
7 tuần

Phase 1: Tìm hiểu Flutter, Go, Vue
1

Sprint 1: Tìm hiểu định nghĩa về
cơng nghệ áp dụng

1.1

- Flutter, Go là gì ?

(25/09/2020 – 22/10/2020)


Tuần 1-2
4


- Lịch sử ra đời cùng roadmap phát
triển

(25/09/2020 – 10/10/2020)
Khuê

- Nó mang lại lợi ích gì ? Cho ai ?
Trong hoàn cảnh nào ?
- Những cái tương đương, tương tự
trên thị trường
- open source
- thương mại
- mơ tả bài tốn
- Kiến trúc tổng thể của hệ thống

2

3

3.1

Sprint 2: Tìm hiểu các mơ hình,
cơng nghệ , kỹ thuật để áp dụng vào
hệ thống


Tuần 3-5
(25/09/2020 – 10/10/2020)
Tuấn

Sprint 3: Xây dựng sơ đồ kiến trúc
hệ thống
-kiến trúc logic

Tuần 5-7

-kiến trúc vật lý

(10/10/2020 – 22/10/2020)
Tuấn
9 Tuần

Phase 2: Xây dựng back end của hệ thống
bằng golang
4
4.1

(22/10/2020- 20/11/2020)

Sprint 4: Xây dựng cơ sở dữ liệu của
hệ thống
Xây dựng Restful API cho user
module
- CRUD API cho người dùng, admin

Tuần 8 – 15

(22/10/2020 – 20/11/2020)
Tuấn, Khuê

Xây dựng Restful API cho product
module
- CRUD API cho danh mục sản phẩm,
sản phẩm
Xây dựng Restful API cho giỏ hàng,
5


đơn hàng
- CRUD API cho giỏ hàng, đơn hàng
của người dùng
Phase 3 : Xây dựng website application cho
người quản lí bằng vue
5

9 Tuần
(20/11/2020- 10/12/2020)

Sprint 5: Xây dựng giao diện
Giao diện trang chủ
- Giao diện đăng nhập
+ Hiển thị giao diện đăng nhập, thông
tin khách hàng, chỉnh sửa tài khoản
- Giao diện hiển thị danh sách khách
hàng
- Giao diện quản lý sản phẩm


5.1

- Giao diện quản lí danh mục sản phẩm
- Giao diện quản lí đơn hàng
- Giao diện thống kê đơn hàng
+ Thiết kế, cài đặt giao diện
+ Hiển thị thông tin đồng hồ
+ Xây dựng chức năng thông báo đồng
hồ đã hết, chức năng lưu trữ và chia sẻ
sản phẩm
9 Tuần

Phase 4: Xây dựng ứng dụng Flutter
6

Sprint 5: Xây dựng giao diện

6.1

Giao diện trang chủ

(10/12/2020- 31/12/2020)

Tuần 8 – 15

+ Thiết kế, cài đặt giao diện

(10/12/2020 – 31/12/2020)

+ Hiển thị danh sách danh mục đồng

hồ, đồng hồ
- Xây dựng chức năng tạo tài khoản
6

Tuấn, Khuê


- Giao diện quản lý đồng hồ
+ Hiển thị thống báo sự kiện
-Giao diện tìm kiếm đồng hồ
+ Thiết kế, cài đặt giao diện
+ Hiển thị danh mục đồng hồ
-Giao diện bán đồng hồ
+ Thiết kế, cài đặt giao diện
+ Hiển thị thông tin đồng hồ
+ Xây dựng chức năng thông báo đồng
hồ đã hết, chức năng lưu trữ và chia sẻ
sản phẩm
- Giao diện tài khoản
+ Thiết kế, cài đặt giao diện
+ Hiển thị giao diện đăng nhập, thông
tin khách hàng, chỉnh sửa tài khoản
- Giao diện quản lý giỏ hàng
+ Thiết kế, cài đặt giao diện
+ Hiển thị giao diện đồng hồ đã mua
+ Xây dựng chức năng thơng báo khi
đặt hàng
thành cơng
+ Tích hợp chức năng mua đồng hồ
qua momo, paypal

7

Sprint 7: Kiểm thử
- Kiểm thử

Tuần 16

- Đánh giá

(01/01/2021 - 10/01/2021)
Tuấn, Khuê

Kế hoạch thực hiện:

7


STT

Cơng việc

Thời gian thực hiện
7 tuần

Phase 1: Tìm hiểu Flutter
1

(28/03/2020 – 27/05/2020)

Sprint 1: Tìm hiểu định nghĩa về

Flutter
- Flutter là gì ?

Tuần 1-2

- Lịch sử ra đời cùng roadmap phát
triển

(02/04/2020 – 09/04/2020)
Kh

- Nó mang lại lợi ích gì ? Cho ai ?
Trong hoàn cảnh nào ?
1.1

- Những cái tương đương, tương tự
trên thị trường
- open source
- thương mại
- mô tả bài toán
- Kiến trúc tổng thể của hệ thống

2

3

3.1

Sprint 2: Tìm hiểu các mơ hình,
cơng nghệ , kỹ thuật để áp dụng vào

hệ thống

Tuần 3-5
(09/04/2020 – 23/04/2020)
Tuấn

Sprint 3: Xây dựng sơ đồ kiến trúc
hệ thống
-kiến trúc logic

Tuần 5-7

-kiến trúc vật lý

(23/04/2020 – 07/05/2020)
Tuấn
9 Tuần

Phase 2: Xây dụng ứng dụng Flutter
4

(07/05/2020- 15/07/2020)

Sprint 4: Xây dựng cơ sở dữ liệu của
hệ thống

8

Tuần 7 - 8
(07/04/2020 - 14/05/2020)



Tuấn, Khuê
5

Sprint 5: Xây dựng giao diện

5.1

Giao diện trang chủ

Tuần 8 – 15

+ Thiết kế, cài đặt giao diện

(14/05/2020 – 01/07/2020)

+ Hiển thị đồng hồ bán chạy, đồng hồ
nổi bật
- Xây dựng chức năng tạo tài khoản
- Giao diện quản lý đồng hồ
-Giao diện thông báo sự kiện
+ Thiết kế, cài đặt giao diện
+ Hiển thị thống báo sự kiện
-Giao diện tìm kiếm đồng hồ
+ Thiết kế, cài đặt giao diện
+ Hiển thị danh mục đồng hồ
-Giao diện đồng hồ bán
+ Thiết kế, cài đặt giao diện
+ Hiển thị thông tin đồng hồ

+ Xây dựng chức năng thông báo đồng
hồ đã hết, chức năng lưu trữ và chia sẻ
sản phẩm
Giao diện khách hàng
- Giao diện tài khoản
+ Thiết kế, cài đặt giao diện
+ Hiển thị giao diện đăng nhập, thông
tin khách hàng, chỉnh sửa tài khoản
- Giao diện quản lý giỏ hàng
+ Thiết kế, cài đặt giao diện
+ Hiển thị giao diện đồng hồ đã mua
9

Tuấn, Khuê


+ Xây dựng chức năng thông báo khi
đặt hàng
thành công
+ Tích hợp chức năng mua đồng hồ
qua momo, paypal
6

Sprint 6: Kiểm thử
- Kiểm thử

Tuần 16

- Đánh giá


(01/07/2020 - 14/07/2020)
Tuấn, Khuê

MỤC LỤC

Danh mục hình vẽ

10


Danh mục giao diện

Danh mục bảng
Tóm tắt báo cáo
-

Tổng quan đề tài: đặt vấn đề, lý do chọn đề tài, mục tiêu và phạm vi tiếp cận đề tài.
Tìm hiểu Golang.
Tìm hiểu thực trạng, thị trường, khả năng phát triển của Golang.
Nghiên cứu các tính năng, kiến trúc, cơ chế hoạt động của Golang.
Tìm hiểu các cách để xây dựng ứng dụng bằng Golang.
Trình bày kết luận và hướng phát triển.

Mở đầu
Ngày nay, sự thành công của doanh nghiệp phụ thuộc vào tính năng động, sáng tạo
và đặt ra vấn đề làm thế nào để cung cấp cho người dùng những trải nghiệm số tốt nhất.
Truyền thông và xã hội càng phát triển càng đòi hỏi các nhà phát triển ứng dụng di động
phải quan tâm nhiều hơn đến định hướng tương lai của ngành công nghiệp di động. Hơn
nữa, việc làm chủ công nghệ mới và phát triển những giải pháp cho thế hệ tiếp theo của
các thiết bị di động cũng dự báo sẽ đầy thách thức.

Để đạt được sự tăng trưởng tối đa và bền vững, mọi tổ chức phải tích hợp các cơng
nghệ phát triển ứng dụng di động mới nhất. Theo báo cáo của Techaheadcorp.com, ngành
cơng nghiệp phát triển ứng dụng tồn cầu dự kiến sẽ tăng lên 6,3 nghìn tỷ USD vào năm
2021 và các ứng dụng dự kiến sẽ tạo ra doanh thu 935,2 tỷ USD vào năm 2023. Ứng
dụng di động đang cải thiện trải nghiệm người dùng bằng cách nhanh chóng và thuận
tiện.
11


Trong thế giới phát triển web, sự nhanh nhẹn là một vị vua. Các doanh nghiệp có
được lợi thế cạnh tranh bằng cách các trang web và ứng dụng web của họ phát triển
nhanh hơn với ít chi phí và tài nguyên hơn. Hơn nữa, họ không chỉ muốn phát triển web
theo yêu cầu nhanh chóng, nhu cầu cũng rất cao cho khả năng sử dụng tiên tiến và trải
nghiệm người dùng liền mạch.
Điều này đòi hỏi sự xuất hiện của các ngơn ngữ lập trình tiên tiến và chức năng hơn
để phát triển chức năng trang web, chẳng hạn như Golang.

CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI
1.

NHU CẦU THỰC TẾ CỦA ĐỀ TÀI
Ngôn ngữ Go ban đầu được thiết kế và phát triển bởi một nhóm kĩ sư Google bao

gồm Robert Griesemer, Ken Thompson và Rob Pike vào năm 2007. Mục đích của việc
thiết kế ngơn ngữ mới bắt nguồn từ một số phản hồi về tính chất phức tạp của C++11
và nhu cầu thiết kế lại ngôn ngữ C trong môi trường network và multi-core.
Vào giữa năm 2008, hầu hết các tính năng được thiết kế trong ngơn ngữ được
hồn thành, họ bắt đầu hiện thực trình biên dịch (compiler) và Go runtime với Russ
Cox là nhà phát triển chính. Trước năm 2010, ngơn ngữ Go dần dần được hồn thiện.
Vào tháng 9 cùng năm, ngơn ngữ Go chính thức được công bố dưới dạng Open source.

Ngôn ngữ Go thường được mô tả là "Ngôn ngữ tựa C" hoặc là "Ngơn ngữ C của
thế kỉ 21". Từ nhiều khía cạnh, ngôn ngữ Go thừa hưởng những ý tưởng từ ngôn ngữ
C, như là cú pháp, cấu trúc điều khiển, kiểu dữ liệu cơ bản, thủ tục gọi, trả về, con trỏ,
v,v.., hồn tồn kế thừa và phát triển ngơn ngữ C, hình bên dưới mơ tả sự liên quan của
ngôn ngữ Go với các ngôn ngữ khác.

12


Phía bên trái sơ đồ thể hiện tính chất concurrency của ngôn ngữ Go được phát
triển từ học thuyết CSP công bố bởi Tony Hoare vào năm 1978. Học thuyết CSP dần
dần được tinh chế và được ứng dụng thực tế trong một số ngơn ngữ lập trình như
là Squeak/NewSqueak và Alef, cuối cùng là Go.
Chính giữa sơ đồ cho thấy tính chất hướng đối tượng và đóng gói của Go được kế
thừa từ Pascal và những ngôn ngữ liên quan khác dẫn xuất từ chúng.
Phía bên phải sơ đồ cho thấy ngôn ngữ Go kế thừa và cải tiến từ C, Cũng
như C, Go là ngơn ngữ lập trình cấp thấp, nó cũng hỗ trợ con trỏ (pointer) nhưng ít
nguy hiểm hơn C.
Việc khai thác sức mạnh của các bộ xử lý đa lõi và phần cứng thế hệ mới đối với
các ngơn ngữ hiện có được xem như là việc không thể được. Bởi những giới hạn vốn có
của các ngơn ngữ lập trình trên máy tính như C, C++, Java,... Bấy lâu nay, các vấn đề xử
lý đa lõi vẫn là chuyện của hệ điều hành.

13


Google đưa ra ngôn ngữ Go như là một cách tiếp cận khác về vấn đề xử lý đa lõi.
Thay vì chỉ có hệ điều hành được phép cấp tài ngun và xử lý, thì các phần mềm cũng
có thể tương tác trực tiếp với nền tảng đa lõi giúp cho việc xử lý nhanh hơn.
Trong thời buổi hiện nay, khi mà công nghệ phát triển, thương mại điện tử ngày

càng phát triển trên thế giới cũng như Việt Nam và dần khẳng định được vị thế của
mình trong nền kinh tế thị trường. Cùng với đó là sự ra đời của các ngơn ngữ lâp
trình cho phép thiết kế và xây dựng các ứng dụng thương mại điện tử dưới nhiều
hình thức khác nhau. Và một trong những ứng dụng của thương mại điện tử phổ
biến ở nước ta là dịch vụ bán hàng qua mạng internet. Dịch vụ này cho phép người
dùng tìm kiếm chọn lựa sản phẩm để mua, thực hiện giao dịch mà không cần phải
trực tiếp đến cửa hàng, mà chỉ cần sử dụng một thiết bị máy tính có kết nối internet.
Tuy nhiên hiện nay dịch vụ này vẫn còn khá mới với nhiều người tiêu dùng nước ta,
đặc biệt là những người không có kiến thức về tin học nói chung và thương mại
điện tử nói riêng. Nên hiện giờ các đối tượng chính của thương mại điện tử vẫn chủ
yếu là tầng lớp tri thức và học sinh,sinh viên. Là những người sinh viên, cũng có
chút kiến thức về tin học cũng như tiếp xúc với thương mại điện tử tuy nhiên đơi lúc
cũng gặp một số khó khăn trong việc mua bán trên các hệ thống bán hàng qua mạng
hiện tại. Như hình thức thanh tốn, nhận hàng, chất lượng sản phẩm thực tế không
được

như

trên

website....

Sản

phẩm



em


hướng

tới



đây là đồng hồ, ngày nay nhu cầu làm đẹp của con người không chỉ dừng lại ở áo
quần mà còn là những phụ kiện được đeo trên người và đồng hồ là một trong những
trang sức hết sức phổ biến. Nó mang lại cho người dùng vẻ đẹp sang trọng, quý phái
cũng như thể hiện sự đẳng cấp cho người đeo......

14


2.

CÁC DỰ ÁN ĐỐI THỦ
Đúc kết từ các ưu nhược điểm từ các phần mềm đối thủ trên thị trường, nhóm đã

thảo luận và rút ra một số tiêu chí phù hợp với khả năng cũng nhưng thời gian phát triển
dự án. Bao gồm các tiêu chí sau:
- Người quản trị có quyền phân cấp cho các user.
- Hiển thị danh sách các mặt hàng của cửa hàng để khách hàng xem, lựa chọn và
mua.
- Sau khi khách hàng chọn và đặt hàng hàng trực tiếp thì phải hiện lên đơn hàng để
khách hàng có thể nhập thơng tin mua hàng và xem hoá đơn mua hàng.
- Chức năng cập nhật, sửa, xoá các sản phẩm, danh mục.
- Tiếp nhận kiểm tra đơn đặt hàng của khách hàng. Hiển thị đơn đặt hàng.
- Thống kê theo tháng/năm, khoảng thời gian.
Ngoài các chức năng trên thì trang Web phải được thiết kế sao cho dễ hiểu, giao

diện mang tính dễ dùng đẹp mắt và làm sao cho khách hàng thấy được thơng tin cần tìm,
cung cấp các thơng tin quảng cáo hấp dẫn, các tin tức khuyến mãi để thu hút khách hàng.
Điều quan trọng là phải đảm bảo an toàn tuyệt đối thơng tin khách hàng trong q trình
đặt mua qua mạng. Đồng thời trang Web phải luôn đổi mới, hấp dẫn.

3.

PHẠM VI ĐỒ ÁN
Vì phần đa nghiệp vụ của các ứng dụng bán đồng hồ đều gần giống nhau, nên mơ

hình phần mềm này có thể được nhân rộng cho nhiều ứng dụng bán đồng hồ có mục đích
tương tự. Sản phẩm này dành cho mọi đối tượng nhằm đáp ứng nhu cầu mua đồng hồ của
người dùng.
Trong đồ án này, nhóm chỉ xây dựng một số chức năng của ứng dụng như sau:
1.
2.
3.

Tạo và đăng nhập tài khoản.
Phân quyền cho tài khoản.
Quản lý thông tin tài khoản.
15


Quản lý thơng tin đồng hồ.
Quản lý hóa đơn.
Thống kê doanh thu.

4.
5.

6.

4.

PHƯƠNG PHÁP NGHIÊN CỨU
Đồ án sử dụng các phương pháp nghiên cứu hướng đến thực tiễn để phát triển và

hồn thiện ứng dụng:
– Phân tích, khảo sát hiện trạng về nhu cầu thực tế của người dùng bằng các tài liệu
khảo sát và ứng dụng quản lý hiện có trên thị trường hiện nay.
– Thu thập thơng tin, tìm hiểu và nghiên cứu về các kỹ thuật, công nghệ cần thiết để
hỗ trợ cho việc xây dựng ứng dụng đáp ứng yêu cầu được đưa ra.
– Xây dựng ứng dụng dựa trên những kỹ thuật và công nghệ trên, tiến hành kiểm thử
dự án song song với quá trình xây dựng ứng dụng.
– Đánh giá và so sánh kết quả đạt được với mục tiêu ban đầu đưa ra. Điều chỉnh và
khắc phục các sự cố.
– Hoàn thiện ứng dụng, tiến khành khảo sát, thu thập ý kiến, đánh giá của người
dùng.

5.

CẤU TRÚC ĐỒ ÁN
Báo cáo này được trình bày với cấu khúc đồ án như sau:
- Chương 1: Giới thiệu tổng quan về đề tài, nghiên cứu các dự án hiện có trên hiện

trường, phạm vi nghiên cứu và phương pháp nghiên cứu.
- Chương 2: Giới thiệu về các công nghệ, kỹ thuật ứng dụng trong đề tài xây dựng
và phát triển ứng dụng bán đồng hồ này.
- Chương 3: Đưa ra các đặc tả yêu cầu và phân tích hệ thống, thiết kế các kiến trúc
và mơ hình cần thiết cho tồn bộ hệ thống.


16


- Chương 4: Trình bày tổng quan về ứng dụng bán đồng hồ, giới thiệu giao diện ứng
dụng và cách cài đặt sử dụng ứng dụng.
- Chương 5: Tổng kết về đồ án, nêu những việc đã đạt được qua quá trình xây dựng
và phát triển đề tài. Bên cạnh đó nêu ra những thiếu sót của nhóm. Từ đó đưa ra các giải
quyết và hướng phát triển tiếp theo cho ứng dụng bán đồng hồ

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
1.

GOLANG
1.1

Giới thiệu về Golang

Ngơn ngữ lập trình Go, cũng thường được gọi là Golang, là một ngơn ngữ lập
trình được phát triển bởi một nhóm chuyên gia tại Google. Cụ thể ngơn ngữ Golang được
hình thành vào tháng 9 năm 2007 bởi Robert Griesemer, Rob Pike và Ken Thompson.
Sau đó Golang Lần đầu tiên được giới thiệu vào tháng 11 năm 2009 và phiên bản đầu tiên
của nó được phát hành vào tháng 12 năm 2012. Trang web chính thức ngơn
ngữ Golang là Ngơn ngữ Golang có một hình thái và ngữ nghĩa lập
trình riêng giúp nó đảm bảo hiệu suất làm việc mà vẫn mang lại những điều thú vị khi
viết mã code. Golang cũng cung cấp một bộ thư viện chuẩn khá toàn diện. Thư viện
chuẩn cung cấp tất cả các gói lập trình viên cốt lõi cần để xây dựng các chương trình,
phần mềm hay cả ứng dụng web và ứng dụng quản trị mạng. Golang cũng là một ngôn
17



ngữ lập trình đồng bộ, được biên dịch có cú pháp khá cơ bản chủ yếu thuộc về họ ngôn
ngữ C.
Ngơn ngữ lập trình Golang thực chất là một dự án mã nguồn mở được phát hành
dựa trên chứng chỉ BSD nhằm mục đích nâng cao hiệu suất làm việc dành cho các lập
trình viên. Golang có cú pháp khá ngắn gọn, sạch sẽ và hiệu quả. Go được biên dịch
nhanh chóng sang mã máy nhưng vẫn có sự tiện lợi trong việc quản lý bộ nhớ cũng như
hoạt động run-time. Có thể nói Golang là một ngơn ngữ lập trình được biên dịch tĩnh rất
nhanh, cảm thấy giống như một ngôn ngữ kịch bản được biên dịch động.
Đặc điểm Golang
Golang là ngôn ngữ biên dịch, và giống như nhiều ngơn ngữ lập trình khác, nó sử
dụng khá nhiều dịng lệnh. Go đồng thời là tên của ngôn ngữ lập trình và tên của bộ cơng
cụ được sử dụng để xây dựng và tương tác với các chương trình được viết bởi Go –
Golang.Khác với Python hay Javscript, ta cần khai báo kiểu dữ liệu cho các giá trị biến
(variables) trong Golang (static-typed). Trình biên dịch biết thơng tin kiểu dữ liệu trước
giúp đảm bảo rằng chương trình đang làm việc với các giá trị một cách an toàn. Điều này
giúp giảm thiểu các lỗi và lỗi bộ nhớ tiềm ẩn, đồng thời cung cấp cho trình biên dịch cơ
hội tạo ra nhiều mã thực hiện hơn. Đồng thời Golang cũng cung cấp struct cho phép bạn
tạo các kiểu của riêng mình bằng cách kết hợp một hoặc nhiều loại, bao gồm cả các kiểu
được xây dựng sẵn và do người dùng định nghĩa. Structs là cách duy nhất để tạo các kiểu
dữ liệu do người dùng định tự nghĩa trong Golang. Khi tạo các kiểu dữ liệu của riêng
với struct, Chúng ta cần lưu ý rằng Golang không cung cấp hỗ trợ cho thừa kế trong hệ
thống kiểu dữ liệu của nó, nhưng nó ưu tiên thành phần của các kiểu cho phép bạn tạo
các kiểu dữ liệu lớn hơn bằng cách kết hợp các kiểu nhỏ hơn. Triết lý thiết kế
của Golang là tạo ra các thành phần lớn hơn bằng cách kết hợp các thành phần nhỏ
và mơ-đun hóa. Nếu bạn là một lập trình viên thực dụng, bạn sẽ đánh giá cao triết lý thiết
kế của Golang bởi việc kế thừa kiểu dữ liệu đôi khi đưa ra những thách thức thực tế liên
quan đến khả năng bảo trì.

18



Trong thập kỷ qua, phần cứng máy tính đã phát triển mạnh mẽ giúp gia tăng số lõi cũng
như nâng cao đột phá sức mạnh của CPU. Ngày nay, chúng ta sử dụng nhiều nền tảng
đám mây để xây dựng và chạy các ứng dụng, vì vậy các máy chủ trên đám mây có nhiều
sức mạnh và quyền lực hơn. Mặc dù vậy, chúng ta vẫn chưa thể tận dụng được toàn bộ
sức mạnh của chúng dựa trên hầu hết các ngơn ngữ và cơng cụ lập trình hiện có.
Ngơn ngữ lập trình Golang ra đời cung cấp khả năng thực thi các chức năng độc lập với
nhau. Các cơ chế đồng thời của nó giúp dễ dàng viết các chương trình tận dụng tối các
"lõi" trên CPU cũng như sức mạnh từ mạng máy tính. Trong hệ thống kiểu mới của nó
cho phép xây dựng chương trình linh hoạt và mơ đun hóa. Một function được tạo được
quản lý như một goroutine (một luồng thực thi – thread – được quản lý bởi Go-runtime),
nó được coi là một đơn vị công việc độc lập, được lên lịch và sau đó được thực thi trên
một bộ xử lý logic có sẵn. Các Goroutine được tạo ra bằng cách gọi câu lệnh Go theo sau
bởi hàm hoặc phương thức mà bạn muốn chạy như một hoạt động tự điều hành. Bộ lập
lịch thời gian chạy Go là một phần mềm phức tạp quản lý tất cả các goroutine được tạo
và cần thời gian xử lý. Trình lập lịch biểu nằm trên đầu của hệ điều hành, ràng buộc các
luồng của hệ điều hành tới các bộ xử lý logic mà khi đến lượt, nó sẽ tiến hành việc thực
thi các goroutine. Bộ lập lịch kiểm soát tất cả mọi thứ liên quan đến các goroutine đang
chạy trên đó bộ vi xử lý logic tại bất kỳ thời điểm nào.
Các lĩnh vực ứng dụng Golang
Golang có thể ứng dụng trong nhiều lĩnh vực, như trong phát triển Web Backend, phát
triển ứng dụng mobile (với vai trò server), trong các hệ thống microservice hay ERP
(Enterprise – Resource – Planning). Đối với phát triển Web server, Golang mang lại
nhiều lợi ích so với Python hay Java như:


Golang thật sự đơn giản và dễ tiếp cận với cả các lập trình viên hay tester




Sử dụng các thuật toán biên dịch nâng cao, với Golang, chúng ta sẽ không cần cài
đặt các dependencies từ server bởi vì Go đã liên kết tất cả các mơ-đun cũng như
các dependenciesthành một file nhị phân.
19




Golang sử dụng các goroutine riêng biệt giúp tiết kiệm bộ nhớ và nâng cao hiệu
năng cho ứng dụng.

1.2

Tính năng nổi bật của Golang

Tiện lợi
Go được so sánh với các scripting language (ngôn ngữ kịch bản) như Python với
khả năng đáp ứng nhiều nhu cầu lập trình phổ biến. Một số tính năng này được tích hợp
vào trong chính ngơn ngữ, chẳng hạn như “goroutines” là một hàm cho concurrency và
kiểu giống như behavior, ngồi ra các tính năng bổ sung được có sẵn trong các package
thư viện Go chuẩn, như http package của Go. Giống như Python, Go cung cấp khả năng
quản lý bộ nhớ tự động bao gồm việc garbage collection (dọn file rác).
Go biên dịch (compile) code ra nhị phân một cách nhanh chóng.
Tốc độ
Run nhị phân chậm hơn so với C, nhưng sự khác biệt về tốc độ này không đáng kể
đối với hầu hết các ứng dụng. Hiệu suất của Go tốt ngang với C trong phần lớn cơng việc
và nói chung là nhanh hơn so với các ngôn ngữ khác nổi tiếng về tốc độ (ví dụ: JavaScript,
Python và Ruby).
Linh hoạt

Các file executable được tạo bằng toolchain của Go có thể hoạt động độc lập mà
không cần external dependencies mặc định. Toolchain hỗ trợ cho nhiều hệ điều hành,
hardware platform (chuẩn phần cứng của máy tính) khác nhau và có thể được sử dụng để
biên dịch các chương trình nhị phân qua các nền tảng.
Khả năng tương thích

20


Go cung cấp tất cả những điều trên mà không bị mất quyền truy cập vào hệ thống
bên dưới (underlying system). Phương mềm Go có thể liên kết với thư viện C bên ngoài
hoặc thực hiện các lệnh call hệ thống native. Ví dụ trong Docker, Go interface với các
chức năng Linux low-level, cgroups và namespace , để hoạt động với container.
Hỗ trợ
Toolchain Go có sẵn dưới dạng binary của Linux, MacOS hoặc Windows hoặc như
là một container trong Docker. Go được đặt mặc định trong nhiều bản phát hành phổ biến
của Linux, như Red Hat Enterprise Linux và Fedora, giúp cho việc triển khai Go source
trở nên dễ dàng hơn đối với các nền tảng trên. Go cũng hỗ trợ mạnh mẽ cho nhiều
development environment (môi trường phát triển) của bên thứ ba, từ Microsoft Visual
Studio Code đến Komodo IDE của ActiveState.

1.3

Áp dụng Golang vào xây dựng ứng dụng bán đồng hồ

Ngơn ngữ lập trình Golang thực chất là một dự án mã nguồn mở được phát hành dựa
trên chứng chỉ BSD nhằm mục đích nâng cao hiệu suất làm việc dành cho các lập trình
viên. Golang có cú pháp khá ngắn gọn, sạch sẽ và hiệu quả. Go được biên dịch nhanh
chóng sang mã máy nhưng vẫn có sự tiện lợi trong việc quản lý bộ nhớ cũng như hoạt
động run-time. Có thể nói Golang là một ngơn ngữ lập trình được biên dịch tĩnh rất nhanh,

cảm thấy giống như một ngôn ngữ kịch bản được biên dịch động. Sử dụng Golang trong
ứng dụng này đem lại một số lợi thế nhất định như:
-

Ngôn ngữ thông dịch: thực thi lệnh trực tiếp và tự do mà không cần biên dịch

-

trước chương trình sang lệnh ngơn ngữ máy.
Trình biên dịch Go: cung cấp các lợi ích bổ sung như có thể kiểm tra lỗi, triển

-

khai dễ dàng hơn và khả năng tối ưu hóa mã của lập trình viên để đạt hiệu quả.
Biên dịch chéo: khả năng biên dịch chéo ứng dụng để chạy trên một máy khác với

-

ứng dụng được sử dụng để phát triển.
Khả năng mở rộng: có nhiều tính năng tích hợp được thiết kế để xử lý nhiều tác
vụ cùng một thời điểm, đáng chú ý là tính năng Goroutines.
21


2.

VUE.JS
2.1

Giới thiệu Vue.js


Vue.js, gọi tắt là Vue là một framework linh động dùng để xây dựng giao diện
người dùng (user interfaces - UI). Khác với các framework nguyên khối, Vue được thiết
kế từ đầu theo hướng cho phép và khuyến khích việc phát triển ứng dụng theo các bước.
Khi phát triển lớp giao diện, người dùng chỉ cần dùng thư viện lõi (core library) của Vue,
vốn rất dễ học và tích hợp với các thư viện hoặc dự án có sẵn. Cùng lúc đó, nếu kết hợp
với những kĩ thuật hiện đại như SFC (single file components) và các thư viện hỗ trợ, Vue
cũng đáp ứng được dễ dàng nhu cầu xây dựng những ứng dụng đơn trang (SPA - Single
Page Applications) với độ phức tạp cao.
Vue đã được tạo ra và phát triển bởi Evan You khi ông đang làm kỹ sư tại công ty
Google. Lúc Evan đang sử dụng Angular cho một số dự án khác thì đã có phát biểu rằng:
“Điều gì sẽ xảy ra như trích một phần mà mình thích về Angular rồi xây dựng thêm một
cái gì đó nhẹ nhàng hơn mà khơng cần phải chú ý đến những khái niệm bổ sung”. Đây là
phát biểu được xem là bước đệm giúp cho Vue đã và đang có mặt tại thời điểm hiện tại.
22


Vue đã được phát hành vào đầu năm 2014 và dự án này đã được tăng tải lên HackerNew,
Echo Js ngay trong ngày đầu tiên ra mắt.

2.2

Tính năng của Vue.js

Hỗ trợ cho giao thức lặp với v-for
Khi được triển khai, cho phép mọi loại đối tượng được lặp lại bằng cách sử
dụng for...of. Hiện tại, v-forchỉ thị của Vue có thể lặp lại các mảng và các đối tượng đơn
giản, nhưng không phải các đối tượng hoặc kiểu dữ liệu lặp lại khác.
Mẫu đa gốc
Vue có một giới hạn trong đó các mẫu yêu cầu một nút gốc duy nhất.

Refs phản ứng
Một khía cạnh thiết kế thiết yếu của các thành phần Vue là chúng phải được cách ly
và giao tiếp bằng các đạo cụ và sự kiện. Tuy nhiên, đơi khi bạn cần một thành phần để có
thể biến đổi trạng thái của thành phần khác. Sử dụng các ref, giúp cho một thành phần
thốt ra khỏi mơ hình dữ liệu của thành phần khác. Tuy nhiên, khi được truy cập qua ref,
mơ hình dữ liệu của thành phần không phản ứng nên không thể xem hoặc đưa vào thuộc
tính được tính tốn. Refs phản ứng sẽ cho phép nó được.
Cơng cụ v-model
Sử dụng lệnh v-modelđể tạo liên kết dữ liệu hai chiều trên đầu vào biểu mẫu
Gói cho trình kết xuất tùy chỉnh
Trình kết xuất của Vue được mã hóa cứng cho các phần tử HTML, vì Vue ban đầu
chỉ nhằm mục đích sử dụng trên web. Ý tưởng của tính năng này là tách biệt trình kết
xuất HTML khỏi gói Vue chính.

23


2.3

Áp dụng Vue.js vào xây dựng ứng dụng bán đồng hồ
Kích thước nhỏ gọn
Tỷ lệ thành cơng của JavaScript framework sẽ phụ thuộc vào kích thước của nó.

Kích thước càng nhỏ thì cơng năng sử dụng càng nhiều, người dùng sẽ không mất thời
gian để tải xuống và sử dụng.
Dễ dàng để tìm hiểu và phát triển Ứng dụng
Nhờ cấu trúc đơn giản của vue.js, người dùng có thể dễ dàng thêm phần mềm vào
dự án website đang thực hiện của mình. Cả hai mơ hình quy mơ nhỏ cũng như quy mơ
lớn đều có thể được phát triển thơng qua framework này, do đó tiết kiệm rất nhiều thời
gian.

Tích hợp đơn giản
Dễ dàng trong q trình tích hợp với các ứng dụng hiện có. Sự tiện lợi này xuất phát
từ vue.js được xây dựng dựa trên JavaScript framework và do đó, có thể tích hợp được
vào các ứng dụng khác xây dựng trên JavaScript tương đối đơn giản.
Vue có thể tạo cấu trúc project nhanh chóng
Nhờ vào command line interface.
Tài liệu chi tiết
Các tài liệu liên quan đến Vue.JS đều rất đầy đủ và rất chi tiết, Bạn chỉ cần biết sơ
qua về JavaScript hay HTML là đã có thể phát triển các ứng dụng hoặc trang web của
chính mình.
Tính linh hoạt
Vue.JS cịn cho phép người dùng viết mẫu trong các tệp HTML hay JavaScript sử
dụng dựa vào các Node ảo. Nó cịn giúp cho các chương trình đơn giản chạy trực tiếp từ
trình duyệt. Nhờ tính năng linh hoạt này, mà nó cịn giúp cho các nhà lập trình phát triển
24


thêm React.JS, Angular.JS và một số framework mới trong JavaScript có cấu trúc dễ
hiểu.
Khả năng giao tiếp hai chiều
Nhờ có cấu trúc MVVM (Model-View-ViewModel) mà việc giao tiếp hai chiều
được thực hiện dễ dàng trong quá trình xử lý các HTML block.

3.

FLUTTER

3.1

Giới thiệu Flutter


25


×