ĈҤI HӐC QUӔC GIA THÀNH PHӔ HӖ CHÍ MINH
75ѬӠNG ĈҤI HӐC BÁCH KHOA
KHOA KHOA HӐC VÀ KӺ THUҰT MÁY TÍNH
LUҰ19Ă17ӔT NGHIӊP ĈҤI HӐC
XÂY DӴNG Hӊ THӔNG QUҦN LÍ KHO HÀNG
CHO DOANH NGHIӊP VҰN TҦI
NGÀNH: KHOA HӐC MÁY TÍNH
HӜI ĈӖNG: HӋ thӕng thông tin
GVHD:
Ths. NguyӉn Thӏ Ái Thҧo
Khoa KH & KT Máy Tính, Ĉ+BK
GVPB:
Ths. Phҥm NguyӉn Hoàng Nam Khoa KH & KT Máy Tính, Ĉ+%.
---WX--SVTH : Võ Anh Tuҩn
1513886
1
ĈҤI HӐC QUӔC GIA TP.HCM
---------75ѬӠNG ĈҤI HӐC BÁCH KHOA
KHOA:KH & KT Máy tính
BӜ MÔN: Hr ҕ th{ғ ng thông tin
CӜNG HÒA XÃ HӜI CHӪ 1*+Ƭ$ VIӊT NAM
Ĉӝc lұp - Tӵ do - Hҥnh phúc
NHIӊM VӨ LUҰN ÁN TӔT NGHIӊP
Chú ý: Sinh viên ph̫i dán tͥ này vào trang nh̭t cͯa b̫n thuy͇t trình
HӐ VÀ TÊN: VRѺ Anh Tukғ n
NGÀNH: Khoa hR ҕc MDғy TÕnғ h
MSSV: 1513886
LӞP:
1. Ĉҫu ÿӅ luұn án:
Xây dӵng hr ҕ th{ғ ng quDѴn l\ғ kho hDҒng cho doanh nghirpҕ vұn tDѴi
2. NhiӋm vө (yêu cҫu vӅ nӝi dung và sӕ liӋu ban ÿҫu):
Mӝt doanh nghirpҕ vұn tDѴi cRғ nhirҒ u kho chѭғa hDҒng ѫѴ nhirҒ u tÕnѴ h thDҒnh khDғc nhau. HDҒng hRғa xukғ t
vDҒ nhұp ra vDҒo kho liên tX ҕc. QuDғ trÕnҒ h xukғ t nhұp kho sHѺ GR QJѭѫҒi thXѴ kho quDѴn l\ғ. Hjng hRғa
nhұp kho ckҒ n cRғ phirғ u nhұp kho ghi rRѺ QJѭѫҒi nhұn, QJѭѫҒi gѫѴi, loҥi hDҒng, s{ғ Oѭѫnҕ g, kh{ғ i Oѭѫnҕ g
vDҒ mӝt s{ғ chi tirғ t cX ҕ thrѴ cXѴa tѭҒng loҥi hDҒng. HDҒng xukғ t kho cXѺng phDѴi cRғ thông tin tѭѫQJ tӵ, bên
cҥnh l\ғ do xukғ t kho. L\ғ do xukғ t kho cRғ thrѴ lDҒ ÿrѴ xuDғW FKR QJѭѫҒi nhұn hoă ҕc chuyrѴ n sang kho
khDғc. Hr ҕ th{ғ ng xây dӵng ckҒ n quDѴn l\ғ quy trÕnҒ h nDҒy
Nhir ҕm vX ҕ (yêu ckҒ u vrҒ nӝi dung vDҒ s{ғ lir ҕXEDQÿkҒ u):
- Phân tÕcғ h nghirpҕ vX ҕ
- Thirғ t krғ hr ҕ th{ғ ng trên nrҒ n web.
- Hir ҕn thӵc cDғc chѭғc QăQJchÕnғ h
- XѭѴ l\ғ cDғc ngoҥi lr ҕ
- KirѴ m thѭѴ, ÿDғnh giDғ hr ҕ th{ғ ng.
3. Ngày giao nhiӋm vө luұn án:
4. Ngày hoàn thành nhiӋm vө:
5. Hӑ tên giҧng viên Kѭӟng dүn:
Phҫn Kѭӟng dүn:
1) NguyrѺn ThL Ái
ҕ ThDѴo
Nӝi dung vDҒ yêu ckҒ u LVTN ÿm ÿѭѫ ҕc thông qua Bӝ môn.
Ngày WKiQJQăP
CHӪ NHIӊM BӜ MÔN
GIҦNG VIÊN +ѬӞNG DҮN CHÍNH
(Ký và ghi rõ h͕ tên)
(Ký và ghi rõ h͕ tên)
PGS. TS. TrkҒ n Minh Quang
PḪN DÀNH CHO KHOA, B͠ MÔN:
1JѭѫҒi duyrtҕ (chkғ m VѫEӝ):
ĈѫQ vL:ҕ
NgDҒy bDѴo vr ҕ:
ĈLrѴ m tәng krғ t:
1ѫLOѭX trӳ luұn Dғn:
ThS. NguyrѺn ThL ҕÁi ThDѴo
1
75ѬӠNG ĈҤI HӐC BÁCH KHOA
KHOA KH & KT MÁY TÍNH
CӜNG HÒA XÃ HӜI CHӪ 1*+Ƭ$ VIӊT NAM
Ĉӝc lұp - Tӵ do - Hҥnh phúc
Ngày WKiQJQăP 2021
PHIӂU CHҨM BҦO Vӊ LVTN
(Dành cho QJ˱ͥi K˱ͣng d̳n/ph̫n bi͏n)
1. Hӑ và tên SV1: VR˾ Anh Tuk̗ n (1513886)
Ngành (chuyên ngành): Khoa hӑc Máy Tính
2. ĈӅ tài: Xây d˱̙ng hr ̙ th{̗ ng quD˸n l\̗ kho hD̖ng cho doanh nghir ̙p vk̙n tD˸i.
3. Hӑ tên QJѭӡLKѭѫғng dkѺn: NguyӉn Thӏ Ái Thҧo
4. Tәng quát vӅ bҧn thuyӃt minh:
5. Tәng quát vӅ các bҧn vӁ:
6. Nhӳng ѭX ÿLӇm chính cӫa LVTN:
- Sinh viên xây dӵQJÿѭѫ ҕc mӝt hr ҕ th{ғ ng quҧn l\ғ các kho hàng trung chuyӇn cӫa doanh nghir ҕp
vұn tҧi Băғ c ± Nam vѫғi các chѭғFQăQJFѫEҧn: quҧn l\ғ xukғ t - nhұp kho, quҧn l\ғ tài xӃ, thӫ
kho, th{ғ ng kê lӏch sѭѴ xukғ t - nhұp
- Sinh viên cRғ tÕm
Ғ hiӇu các hr ҕ th{ғ ng WѭѫQJ tӵ ÿӇ xây dӵng và phát triӇn hr ҕ th{ғ ng.
7. Nhӳng thiӃu sRғt chính cӫa LVTN:
- Hr ҕ th{ғ QJÿѭѫ ҕc xây dӵng vѫғi ít chѭғFQăQJSKkҒ n lѫғn các chѭғFQăQJFKÕѴ ѫѴ mѭғFÿӝ FѫEҧn, chѭғc
Qăng th{ғ ng kê cRҒn rkғ WVѫVjLFKѭD cRғ trӵc quan dӳ lir ҕu.
- Dӳ liruҕ thí nghir ҕm cXѺng cRҒn rkғ t ít
- Nhӳng yêu ckҒ u vӅ bҧo mұt và ÿӅ xukғ t dӵa vào dӳ lir ҕu xukғ t ± nhұp phân tích ÿѭѫ ҕc FKѭD ÿѭѫ ҕc
ÿӅ cұp
- Báo cáo trÕnҒ h bày FKѭD rRѺ ràng, cRҒn nhiӅu l{Ѻ i format (cѫѺ chӳ, canh lӅ, font không th{ғ ng
nhkғ t).
- PhkҒ n tài liruҕ tham khҧo FKѭD ÿѭѫ ҕc trích dkѺn rRѺ ràng.
- Khҧ QăQJ phân tích và giҧi quyӃt bài toán và trÕnҒ h bày cӫa sinh viên cRҒn kHғm
- Sinh viên rkғ t chӏu khRғ hӑc tұSQKѭQJ sӵ tiӃn bӝ cRҒn chұm.
8. ĈӅ nghӏ: Ĉѭѫ ҕc bҧo vr ҕ 侌
Bә sung thêm ÿӇ bҧo vr ҕ
9. 3 câu hӓi SV phҧi trҧ lӡi WUѭѫғc Hӝi ÿӗng:
10. ĈiQK giá chung (bҵng chӳ: giӓi, khá, TB): TB
Không ÿѭѫcҕ bҧo vr ҕ
ĈLӇm :
6.5/10
K\ғ tên (ghi rRѺ hӑ tên)
ThS. NguyӉn Thӏ Ái Thҧo
1
75ѬӠNG ĈҤI HӐC BÁCH KHOA
KHOA KH & KT MÁY TÍNH
CӜNG HÒA XÃ HӜI CHӪ 1*+Ƭ$ VIӊT NAM
Ĉӝc lұp - Tӵ do - Hҥnh phúc
Ngày 06 tháng 08 QăP 2021
PHIӂU CHҨM BҦO Vӊ LVTN
(Dành cho QJ˱ͥi K˱ͣng d̳n/ph̫n bi͏n)
1. Hӑ và tên SV: Võ Anh Tuҩn (1513886).
MSSV:
Ngành (chuyên ngành): Khoa hӑc máy tính.
2. ĈӅ tài: Xây dӵng hӋ thӕng quҧn lý kho hàng cho doanh nghiӋp vұn tҧi.
3. Hӑ tên QJѭӡi Kѭӟng dүn/phҧn biӋn: Phҥm NguyӉn Hoàng Nam.
4. Tәng quát vӅ bҧn thuyӃt minh:
Sӕ trang:
Sӕ FKѭѫQJ
Sӕ bҧng sӕ liӋu
Sӕ hình vӁ:
Sӕ tài liӋu tham khҧo:
Phҫn mӅm tính toán:
HiӋn vұt (sҧn phҭm)
5. Tәng quát vӅ các bҧn vӁ:
- Sӕ bҧn vӁ:
Bҧn A1:
Bҧn A2:
Khә khác:
- Sӕ bҧn vӁ vӁ tay
Sӕ bҧn vӁ trên máy tính:
6. Nhӳng ѭX ÿLӇm chính cӫa LVTN:
- Phân tích và thiӃt kӃ hӋ thӕng: nhóm phân tích và thiӃt kӃ hӋ thӕng chi tiӃt, phù hӧp nghiӋp vө.
- Tìm hiӇu công nghӋ: nhóm có thӵc hiӋn khҧo sát/so sánh giӳa các hӋ thӕng liên quan.
- TriӇn khai: triӇn khai trên môi WUѭӡng thӵc tӃ ÿiP mây).
7. Nhӳng thiӃu sót chính cӫa LVTN:
- Khҧo sát nghiӋp vө: QKyPFKѭD thӵc hiӋn khҧo sát nghiӋp vө thӵc tӃ.
- Phҥm vi ÿӅ WjLÿѫQ giҧn.
- KiӇm thӱ: thӵc hiӋn khá Vѫ sài các kӏch bҧn kiӇm thӱ.
8. ĈӅ nghӏĈѭӧc bҧo vӋ ;
Bә sung WKrPÿӇ bҧo vӋ
Không ÿѭӧc bҧo vӋ
9. 3 câu hӓi SV phҧi trҧ lӡi WUѭӟc Hӝi ÿӗng:
a. Khi tҥo ÿѫQ hàng, QJѭӡi nhұp liӋu sӁ chӑn tài xӃ tiӃp nhұn ÿѫQ hàng. Vұy giҧi pháp nào ÿӇ
chӑn tài xӃ phù hӧp (ví dө hӋ thӕng có 500 tài xӃ).
b. Trong chӭFQăQJTXҧn lý kiӋn hàng trong kho, khi kiӇPNrKjQJKyDOjPVDRÿӇ [iFÿӏnh k
kiӋQKjQJWURQJWURQJÿѫQKjQJJӗm n kiӋQKjQJOjKѭKӓng. HӋ thӕng có cҧnh báo hoһc thông
báo JuÿӃn hӋ thӕng không vӅ viӋc hàng hóa Kѭ hӓng hay không?
c. Trong chӭFQăQJ[Xҩt/nhұp kho, hӋ thӕng có kiӇm tra chӍ cho phép xuҩt k kiӋn hàng có tình
trҥng tӕt trong n kiӋn hàng có trong kho hay không? NӃu không có, bҥn hãy ÿӅ xuҩt giҧi pháp.
10. ĈiQKJLichung (bҵng chӳ: giӓi, khá, TB): Trung bình
ĈLӇm : 6.5 /10
Ký tên (ghi rõ hӑ tên)
1
Phҥm NguyӉn Hoàng Nam
Lӡi cam ÿRDQ
Em xin cam ÿRDQ mӑi ÿLӅu ÿѭӧc trình bày trong báo cáo, FNJQJ QKѭ mã nguӗn là do em tӵ
thӵc hiӋn - trӯ các kiӃn thӭc tham khҧo có trích dүQFNJQJQKѭPmQJXӗn mүu do chính nhà sҧn
xuҩt cung cҩp, hoàn toàn không sao chép tӯ bҩt cӭ nguӗn nào khác. NӃu lӡi cam ÿoan trái vӟi sӵ
thұt, em xin chӏ u mӑi trách nhiӋm trѭӟc Ban Chӫ NhiӋm Khoa và Ban Giám HiӋu Nhà
7Uѭӡng.
Sinh viên thӵc hiӋn ÿӅ tài.
i
Lӡi cҧm ѫQ
³0́͵i QăP rèn luy͟n sách ÿqQ
Công danh g͏p Éͳc chͳ TXrQ˿Q th̿y´
Trích ca dao Vi͟t Nam
+DLFkXFDGDRÿmQyLOrQVӵ biӃWѫQY{Eӡ bӃQÿӕi vӟi thҫ\F{QJѭӡi ÿmFKRWD nhӳng tri
thӭF QJѭӡL ÿm GүQ ÿѭӡQJ FKR FK~QJ WD ÿL ÿӇ lҥi cho ta nhӳng hành trang quý báu cho chһng
ÿѭӡng WѭѫQJ lai sau này.
(PÿmWUҧLTXDQăPWKiQJÿҫ\WKăQJWUҫm ӣ QJ{LWUѭӡQJĈҥi hӑc Bách Khoa Tp.Hӗ Chí Minh,
dѭӟi mái trѭӡng này gҳn liӅn vӟi em biӃt bao kӍ niӋm, vui có, buӗn có, ÿôi lúc là sӵ mӋt mӓLQKѭ
muӕn buông bӓ tҩt cҧQKѭQJWKұt may mҳn bên cҥnh em luôn có nhӳng ngѭӡi thҫy ngѭӡi cô ÿҫy
tâm huyӃt trong khoa Khoa hӑc và Kӻ thuұt máy tính nói ULrQJFNJQJQKѭQKӳng giҧng viên cӫa
WUѭӡng Ĉҥi hӑc Bách Khoa Tp.Hӗ Chí Minh nói chung ÿm dìu dҳt em ÿL ÿӃn chһng ÿѭӡng cuӕi
FQJQKѭ ngày hôm nay.
ĈӇ Fyÿѭӧc thành quҧ QKѭQJj\K{PQD\HP[LQJӱi lӡi cҧPѫQVkXVҳFÿӃn quý thҫy cô khoa
Khoa hӑc và Kӻ thuұt máy tính cNJng nhѭ tҩt cҧ cán bӝ giҧng viên trѭӡng Ĉҥi hӑc Bách Khoa
Tp.Hӗ &Kt0LQKÿmWUX\ӅQÿҥt cho chúng em nhӳng kiӃn thӭc hӃt sӭc TXêEiXÿӇ hoàn WKjQKÿѭӧFÿӅ tài
Luұn 9ăQ7ӕt NghiӋp lҫn này. Qua ÿyHPJӱi lӡi cҧm ѫQ ÿӃn khoa Khoa hӑc và kӻ thuұt máy tính ÿm
tҥo ÿLӅu kiӋn cho em phát triӇn ÿӅ tài.
Và em xin gӱi lӡi cҧm ѫn chân thành nhҩt vӟi cô NguyӉn Thӏ Ái Thҧo ÿã luôn bên cҥnh
JL~Sÿӥ em trong suӕt quá trình thӵc hiӋQÿӅ tài, xin cҧPѫQF{YuÿmWұQWuQKKѭӟng dүn, ÿӏ nh hѭӟng,
giҧi ÿáp thҳc mҳc, chӍ nh sӱa sai sót, giúp em hoàn thành bài luұn văn cӫa mình.
Em xin gӱi lӡi cҧm ѫn sâu sҳc ÿӃn ba mҽ, bҥn bè, anh chӏ em ÿã ÿӝng viên tinh thҫn,
bên cҥnh em trong suӕt quá trình hӑc tұp ӣ WUѭӡQJFNJQJQKѭWKӵc hiӋn luұQYăQWӕt nghiӋp.
Mӝt lҫn nӳa xin chân thành cҧm ѫn cô NguyӉn Thӏ Ái Thҧo, quý thҫy cô khoa Khoa
hӑc và Kӻ thuұt máy tính và kính chúc quý thҫy cô dӗi dào sӭc khӓe.
Do giӟi hҥn kiӃn thӭc, thӡLJLDQWUuQKÿӝ và kinh nghiӋm cӫa bҧn thân còn nhiӅu hҥn chӃ,
kính mong sӵ chӍ dүn và ÿóng góp cӫa thҫy cô ÿӇ luұn văn cӫa em ÿѭӧc hoàn thiӋn KѫQ
Cuӕi cùng em FNJQJ gӱi lӡi cҧPѫQ ÿӃn các bҥn ÿm dành thӡi gian ÿӑc tài liӋu này.
Võ Anh Tu̽n
ii
Tóm tҳt luұn YăQ
Ngày nay, khi nhu cҫu vұn tҧi hàng hóa WURQJQѭӟc không ngӯQJJLDWăQJYuFRQ QJѭӡi
quá bұn rӝn vӟi công viӋc, lҥi không có thӡi gian, không ÿӫ SKѭѫQJ tiӋn ÿӇ tӵ vұn tҧi hàng ÿӃn tұn nѫi
nhұn. Trѭӟc tình hình ÿó, các dӏ ch vө vұn tҧi hàng hoá trong nѭӟc ra ÿӡi và ngày càng phә
biӃn nhҵm ÿáp ӭng kӏp thӡi nhu cҫu vұn tҧi các loҥi hàng hóa phөc vө nhu cҫu kinh doanh, giao
WKѭѫQJ PXD EiQ WUDR ÿәi hàng hóa cӫa các cá nhân, doanh nghiӋp hҫu khҳp các tӍ nh thành
trên cҧ nѭӟc. Nҳm bҳt ÿѭӧc vҩn ÿӅ ÿó, em ÿã ÿӅ xuҩt mӝt website, xây dӵng hӋ thӕng quҧn lí kho hàng
cho doanh nghiӋp vұn tҧL ÿiS ӭng ÿѭӧc mӑi yêu cҫu Fѫ bҧn cӫa quá trình vұn chuyӇn hàng
hóa.
ĈӇ hiӋn thӵFÿѭӧFÿӅ WjLQj\HPÿmWKDPNKҧo qua nhiӅu website vӅ vұn chuyӇn hàng hóa có
sҹn cNJng nhѭ tӯ nhӳng app quҧn lí kho hàng ÿӇ ÿӏ nh hình ÿѭӧc yêu cҫu cѫbҧn cӫa mӝt hӋ thӕng
quҧQOtNKRKjQJ(PÿѭDUDFiFEjLWRiQYjFiFKWKӭc giҧi quyӃt chúng trong hӋ thӕng mình xây
dӵQJ(PÿmWLӃn hành sàng lӑc nhӳng công nghӋ và giҧi pháp phù hӧp, hiӋn thӵc tӯng yêu cҫu
ÿӅ ra và kiӇm thӱ chúng Gѭӟi góc ÿӝ cӫa adminvà thӫ kho
Tp. Hӗ Chí Minh, 26 tháng 7 QăP 2021
iii
Mөc Lөc
Lӡi cam ÿRDQ .................................................................................................................. i
Lӡi cҧm ѫQ ...................................................................................................................... ii
Tóm tҳt luұn YăQ ............................................................................................................ iii
Mөc Lөc ................................................................................................................. iv
Danh sách hình ..................................................................................................... iv
Danh sách bҧng .................................................................................................. viii
Thuұt ngӳ và tӯ viӃt tҳt ........................................................................................ ix
1. Giӟi thiӋu ÿӅ tài ...................................................................................................1
1.1
Tәng quan ÿӅ tài .................................................................................................... 1
1.2
Mөc tiêu và phҥm vi cӫa ÿӅ tài................................................................................ 1
1.2.1 Mөc tiêu và phҥm vi ......................................................................................... 1
1.2.2
1.3
NghiӋp vө giao nhұn...................................................................................... 2
Cҩu trúc luұn YăQ ........................................................................................................... 2
2. &ѫ sӣ lý thuyӃt và công nghӋ ................................................................................. 3
2.1
Các công nghӋ và WKѭ viӋn phía Client ............................................................... 3
2.1.1 Single Page Application ................................................................................... 3
2.1.2 Framework ReatJS .......................................................................................... 4
2.1.3 Quҧn lí Router vӟi React Router ...................................................................... 5
2.1.4 Quҧn lí state vӟi Redux ................................................................................... 5
2.1.5 Tích hӧp middleware vӟi Redux-thunk............................................................. 6
2.2
Các công nghӋ và WKѭ viӋn phía Server ................................................................. 7
2.2.1 KiӃn trúc Restful API ........................................................................................ 7
2.2.2 Ngôn ngӳ NodeJS ........................................................................................... 8
2.2.3 Framework ExpressJS ..................................................................................... 9
2.2.4 Xác thӵc QJѭӡi dùng bҵng Passport JS ......................................................... 10
2.2.5 &ѫ sӣ dӳ liӋu MongoDB ................................................................................ 11
3. Các hӋ thӕng liên quan trong thӵc tӃ .................................................................. 13
3.1 Vұn tҧi 'ѭѫQJ Huy ......................................................................................................... 13
3.2 DHD Logistics ........................................................................................................ 13
3.3 Logivan .................................................................................................................. 14
3.4 ĈiQK giá chung vӅ các hӋ thӕng.................................................................................... 14
4. Bài toán và Kѭӟng giҧi quyӃt ................................................................................ 15
4.1 Bài toán bҧo mұt ............................................................................................................. 15
iv
4.1.1 Bҧo mұt phía máy khách ....................................................................................... 15
4.1.2 Bҧo mұt phía máy chӫ ........................................................................................... 17
4.1.3 Bҧo mұt phía Fѫ sӣ dӳ liӋu .................................................................................... 17
4.2 Bài toán tìm kiӃm............................................................................................................. 18
4.3 Bài toán sҳp xӃp.............................................................................................................. 18
5. Phân tích và thiӃt kӃ hӋ thӕng .........................................................................19
5.1 Phân tích yêu cҫu................................................................................................... 19
5.1.1 Yêu cҫu QJѭӡi dùng ...................................................................................... 19
5.1.2 Yêu cҫu hӋ thӕng ........................................................................................... 19
5.2 ThiӃt kӃ hӋ thӕng.................................................................................................... 20
5.2.1 Usecase (UC) ................................................................................................ 21
5.2.2 View............................................................................................................... 26
5.2.3 Controller ....................................................................................................... 32
5.2.4 Model............................................................................................................. 32
5.2.5 &ѫ sӣ dӳ liӋu ................................................................................................. 33
6. HiӋn thӵc hӋ thӕng ...........................................................................................38
6.1 Công nghӋ sӱ dөng ................................................................................................ 38
6.2 KӃt quҧ hiӋn thӵc ................................................................................................... 38
6.2.1 Chӭc QăQJ ÿăQJ nhұp ................................................................................... 38
6.2.2 Nhóm các chӭc QăQJ dành cho Admin ................................................................ 39
6.2.3 Nhóm các chӭc QăQJ dành cho Thӫ kho ........................................................ 48
7. KiӇm thӱ hӋ thӕng ............................................................................................55
7.1 KiӇm thӱ API .......................................................................................................... 55
7.2 KiӇm thӱ chӭc QăQJ........................................................................................................ 56
8. Tәng KӃt ............................................................................................................58
8.1 KӃt quҧ ÿҥt ÿѭӧc .............................................................................................................. 58
8.2 Hҥn chӃ ............................................................................................................................ 58
NGUӖN THAM KHҦO ...........................................................................................59
v
Danh Sách Hình
Tên hình
Nӝi dung
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
4.1
4.2
4.3
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.10
5.11
5.12
5.13
5.14
6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
6.9
6.10
6.11
6.12
6.13
6.14
6.15
6.16
6.17
6.18
Sӵ khác nhau cӫa SPA và website truyӅn thӕng
Logo React JS
6ѫ ÿӗ hoҥt ÿӝng cӫa Redux
Nguyên lí hoҥt ÿӝng cӫa Restful API
Logo NodeJS
Cҩu trúc hoҥt ÿӝng cӫa ExpressJS
PassportJS
Logo MongoDB
Activity Diagram cӫa lӟp bҧo mұt ÿLӅu khiӇn truy cұp trên router
Validate tên kiӋn hàng
Các lӟp bҧo mұt ÿm hiӋn thӵc
Usecase hӋ thӕng
Usecase admin
Usecase thӫ kho
Mockup ÿăQJ nhұp
Mockup tҥo mӟi kho hàng
Mockup danh sách kho hàng
Mockup tҥo tài xӃ
Mockup danh sách tài xӃ
Mockup tҥo thӫ kho
Mockup danh sách thӫ kho
Mockup phiӃu nhұp kho
Mockup phiӃu xuҩt kho
Mockup tҥo phiӃu kiӇm kê
ERD hӋ thӕng
Giao diӋn ÿăQJ nhұp
Giao diӋn form tҥo kho hàng và danh sách các kho
Popup chӍ nh sӱa kho hàng
Giao diӋn chӍ nh sӱa thông tin kho hàng
Giao diӋn xóa kho hàng
Giao diӋn quҧn lí tài xӃ
Giao diӋn thông tin chi tiӃt tài xӃ
Giao diӋn chӍ nh sӱa thông tin tài xӃ
Giao diӋn xóa tài xӃ
Giao diӋn tҥo tài khoҧn thӫ kho và danh sách
Giao diӋn chi tiӃt thӫ kho
Giao diӋn chӍ nh sӱa thông tin thӫ kho
Giao diӋn xóa thӫ kho
Giao diӋn lӏ ch sӱ nhұp kho
Giao diӋn chi tiӃt lô hàng nhұp kho
Giao diӋn lӏ ch sӱ xuҩt kho
Giao diӋn chi tiӃt lô hàng xuҩt kho
Giao diӋn thӕng kê nhұp xuҩt kho
vi
6.19
6.20
6.21
6.22
6.23
6.24
6.25
6.26
6.27
6.28
6.29
6.30
6.31
6.32
6.33
7.1
7.2
7.3
Giao diӋn tҥo kiӋn hàng nhұp kho
Giao diӋn tҥo phiӃu nhұp kho
Giao diӋn danh sách phiӃu nhұp kho
Giao diӋn chi tiӃt các lô hàng nhұp
Popup chӍ nh sӱa kiӋn hàng nhұp kho
Thông báo xác nhұn xóa kiӋn hàng
Giao diӋn thêm kiӋn hàng xuҩt kho
Giao diӋn tҥo phiӃu xuҩt kho
Giao diӋn danh sách phiӃu xuҩt kho
Giao diӋn chi tiӃt các lô hàng xuҩt
Popup chӍ nh sӱa kiӋn hàng xuҩt kho
Thông báo xác nhұn xóa kiӋn hàng
Giao diӋn trang kiӇm kê
Giao diӋn tҥo phiӃu kiӇm kê
Giao diӋn lӏ ch sӱ kiӇm kê
Gӑi API ÿăQJ nhұp vӟi Postman
KӃt quҧ trҧ vӅ thành công
KiӇm thӱ chӭc QăQJ và kӃt quҧ tҥo tài xӃ vӟi Postman
vii
Danh sách bҧng
UC-AM-01
UC-AM-02
UC-AM-03
UC-AM-04
UC-TK-01
UC-TK-02
UC-TK-03
Bҧng 5.1
Bҧng 5.2
Bҧng 5.3
Bҧng 5.4
Bҧng 5.5
Bҧng 5.6
Bҧng 5.7
Bҧng 5.8
Bҧng 5.9
Bҧng 6.1
Quҧn lí thӫ kho
Quҧn lí kho hàng
Quҧn lí tài xӃ
Lӏ ch sӱ nhұp xuҩt, thӕng kê
Quҧn lí phiӃu nhұp kho
Quҧn lí phiӃu xuҩt kho
Quҧn lí kiӇm kê
Schema driver
Schema kiӋn hàng tӗn kho
Schema phiӃu nhұp kho
Schema phiӃu nhұp kho chi tiӃt
Schema phiӃu xuҩt kho
Schema phiӃu xuҩt kho chi tiӃt
Schema thӕng kê nhұp xuҩt kho
Schema user
Schema kho hàng
Công nghӋ sӱ dөng
viii
Thuұt ngӳ và tӯ viӃt tҳt
Tên tӯ
API
App
Database
Client
Server
Frontend
Backend
Request
Framework
SPA
JWT
Component
State
Store
Reducer
Middleware
Lifecycle
REST
RESTful API
Nӝi dung
Application Programming Interface
Ӭng dөng (bao gӗm cҧ web và mobile)
&ѫ sӣ dӳ liӋu
Máy khách
Máy chӫ
Mӝt thành phҫn cӫa ӭng dөng, thành phҫn này WѭѫQJ tác trӵc tiӃp
vӟi QJѭӡi dùng
Mӝt thành phҫn cӫa ӭng dөng, thành phҫn này xӱ lý logic ÿҵng sau
cӫa ӭng dөng
Yêu cҫu tӯ SKtDQJѭӡi dùng gӱi lên máy chӫ
Khung phát triӇn phҫn mӅm
Single Page Application
Json Web Token
Mӝt thành phҫn cӫa React app
Trҥng thái cӫa component
Mӝt thành phҫn cӫa kiӃn trúc Redux, OѭX trӳ dӳ liӋu cho React app
Mӝt thành phҫn cӫa kiӃn trúc Redux, là 1 function nhұn ÿҫu vào làstate
Nhӳng ÿRҥn mã trung gian thӵc hiӋn mӝt tác vө nào ÿy trong
FKѭѫQJ trình
Vòng ÿӡi cӫa component
Representational State Transfer ± mӝt tiêu chuҭn giao tiӃp giӳa
máy chӫ và máy khách
Các API tuân theo quy tҳc, tiêu chuҭn cӫa REST
ix
1
Giӟi thiӋu ÿӅ tài
1.1
Tәng quan ÿӅ tài
Ngày nay Công nghӋ WK{QJWLQÿmSKiWWULӇn vӟi tӕFÿӝ YNJEmRÿѭӧc ӭng dөng hҫu hӃt các lƭn h
vӵc trong ÿӡi sӕng nhѭ nghiên cӭu khoa hӑc, phát triӇn kinh tӃ, quân sӵ, quҧn trӏ doanh
nghiӋp,vv«Ӣ các nѭӟc tiên tiӃn, máy tính ÿã ÿѭӧc ӭng dөng ӣ nhiӅu lƭnh vӵc nhҵm phөc vө lӧi ích
con ngѭӡi. ViӋc liên lҥc tìm kiӃm thông tin không còn bӏ cҧn trӣ, thӃ giӟi trӣ nên xích lҥi gҫn nhau
KѫQQKӡ công nghӋ. Tҩt cҧ các quӕFJLDÿӅXÿDQJFӕ gҳng làm chӫ kiӃn thӭc và tìm cách áp dөng
thành tӵu cӫa Công nghӋ thông tin vào mӑi ngành kinh tӃ - xã hӝi cӫa nhà Qѭӟc
Ӣ ViӋt Nam công nghӋ WK{QJWLQFNJQJÿDQJKzDQKұp vӟi thӃ giӟLÿӇ sánh vai vӟiFiFFѭӡng
quӕFQăPFKkXWUӣ thành mӝt ngành kinh tӃ quan trӑQJÿһc biӋt là Công nghӋ phҫn mӅm. Sӵ ra
ÿӡi cӫa các phҫn mӅm ӭng dөng, ÿһc biӋt là phҫn mӅm Quҧn lí kho hàng mang lҥi nhiӅu thuұn lӧi
trong công tác quҧn lý hàng hóa tránh sӵ thҩt thu, giҧm bӟt ÿѭӧc thӡi gian công sӭc cho QJѭӡi
quҧn lý, ÿLӅu hành công viӋc mӝt cách có khoa hӑc, chính xác, nhҽ nhàng, mang lҥi hiӋu quҧ cao.
Tuy nhiên bên cҥnh nhӳng tiӋn lӧi vүn còn nhiӅu khó NKăQ QKѭӧc ÿLӇm cҫn ÿѭӧc khҳc phөc QKѭ bҧn
thân các nhà lұp trình vүncòn hҥn chӃ vӅ trình ÿӝ FNJQJ QKѭ kinh nghiӋm làm phҫn mӅm
ĈӅ tài Quҧn lý kho hàng cho doanh nghiӋp vұn tҧi là mӝW ÿӅ tài thuӝc mҧng
$SSOLFDWLRQ6RIWZDUHĈk\NK{QJSKҧi là mӝWÿӅ tài mӟi vì có rҩt nhiӅu hӋ thӕng quҧn lí kho hàng
ÿѭӧc sӱ dөng rӝng rãi hiӋn nay. Tuy nhiên, viӋc có thêm mӝt hӋ thӕng quҧn lí kho hàng nӳa sӁ
giúp cho doanh nghiӋp có thêm sӵ lӵa chӑn mӟi cho mình. Mһt khác, hӋ thӕng em xây dӵng có
WKrP WtQK QăQJ Pj FiF KӋ thӕng hiӋn tҥL NK{QJ Fy ÿy Oj WtQK vұn tӕc chuyӇn hàng và tӍ lӋ lѭu
lѭӧng hàng hóa vұn chuyӇn.
1.2
Mөc tiêu và phҥm vi cӫa ÿӅ tài
1.2.1 Mөc tiêu và phҥm vi
Mөc tiêu cӫDÿӅ tài là xây dӵng mӝt hӋ thӕng quҧn lý kho hàng cho mӝt doanh nghiӋp vұn
tҧi có nhiӅu kho chӭa hàng ӣ nhiӅu tӍ nh thành trên cҧ nѭӟc. Hàng hóa xuҩt và nhұp ra vào
kho liên tөc. Quá trình nhұp xuҩt kho sӁ do thӫ kho quҧn lý. Hàng hóa nhұp kho cҫn có phiӃu
nhұSNKRJKLU}WK{QJWLQQJѭӡi nhұQQJѭӡi gӱi, loҥi hàng, sӕ Oѭӧng, khӕLOѭӧng và mӝt sӕ chi tiӃt
cө thӇ cӫa tӯng loҥi hàng. Hàng xuҩWNKRFNJQJSKҧi FyWK{QJWLQWѭѫQJWӵ QKѭYұy bên cҥnh lí do
xuҩt kho. HӋ thӕng xây dӵng cҫn quҧn lý ÿѭӧc quy trình QKѭ vұy. ViӋc xây dӵng mӝt hӋ thӕng QKѭ
trên ÿһt ra nhӳng bài toán QKѭ
- Công nghӋ sӱ dөng là gì?
- Làm thӃ nào ÿӇ admin có thӇ theo dõi ÿѭӧc quá trình nhұp xuҩt kho hàng?
1
- PhiӃu nhұp kho, xuҩt kho gӗm nhӳng gì?
- Bҧo mұt cho web app QKѭ thӃ nào?
- ThiӃt kӃ Fѫ sӣ dӳ liӋu ra sao?
- Làm thӃ nào ÿӇ lӑc ra nhӳng lô hàng mình muӕn trong danh sách hàng nghìn lô
hàng?
- Làm thӃ nào ÿӇ thӕng kê ÿѭӧc doanh thu, vұn tӕc và tӍ lӋ lѭu chuyӇn kho hàng?
Và còn nhiӅu câu hӓi khác nӳDÿѭӧFÿһt ra trong suӕt quá trình làm, hӋ thӕng em sinh ra ÿӇ
tӯng bѭӟc giҧi quyӃt ÿѭӧc nhӳng câu hӓi này, mang lҥi giá trӏ thiӃt thӵc cho các doanh nghiӋp
vұn tҧi
PhҥPYLÿӅ tài bao gӗm thӫ kho và admin. Thӫ kho khi nhұp hàng vào kho sӁ tҥo phiӃu nhұp
kho, khi gӱi hàng sang kho khác sӁ tҥo phiӃu xuҩt kho, quҧn lí kiӇm kê nhӳng kiӋn hàng còn tӗn kho.
Admin có vai trò quҧn lí các kho hàng (tҥo mӟi kho, xóa kho, cұp nhұt thông tin kho hàng), quҧn
lí tài xӃ (thêm, xóa, cұp nhұt thông tin tài xӃ), quҧn lí thӫ kho (tҥo tài khoҧn thӫ kho, xóa tài
khoҧn, cұp nhұt tài khoҧn) và xem lӏ ch sӱ nhұp xuҩt kho và thӕng kê nhұp xuҩt.
1.2.2 NghiӋp vө giao nhұn
Mӝt quá trình giao, nhұn hàng hóa ÿҫy ÿӫ gӗm 2 loҥi ÿѫQ vұn sau:
- PhiӃu nhұp kho: bao gӗm thông tin QJѭӡi nhұn, QJѭӡi gӱi, loҥi hàng, sӕ Oѭӧng, khӕi
Oѭӧng và mӝt sӕ chi tiӃt cӫa tӯng loҥi hàng
- PhiӃu xuҩWNKRWѭѫQJWӵ QKѭSKLӃu nhұp kho, bên cҥQKÿyFyOtGR[Xҩt kho và thông tin
thanh toán. Lí do xuҩt kho có thӇ OjÿӅ xuҩWFKRQJѭӡi khác hoһc chuyӇn sang kho khác
1.2
Cҩu trúc luұn YăQ
Các phҫn cӫa luұn YăQ sӁ ÿѭӧc trình bày QKѭVDX
Phҫn 1: Giӟi thiӋu ÿӅ tài: trình bày Vѫ Oѭӧt vӅ ÿӅ tài thӵc hiӋn, cái nhìn tәng quantӯ nhiӅu
khía cҥnh tӯ kinh tӃ, công nghê cho ÿӃn thӵc trҥng nhu cҫu QJѭӡi sӱa dөng.
Phҫn 2: &ѫ sӣ lý thuyӃt và công nghӋ: Trình bày các Fѫ sӣ lý thuyӃt ÿѭӧc sӱ dөng
ÿӇ hiӋn thӵc hӋ thӕng và công nghӋ áp dөng.
Phҫn 3: Các hӋ thӕng liên quan: Giӟi thiӋu các hӋ thӕng ÿã có trên thӏ trѭӡng dӏ ch vө
vұn chuyӇn.
Phҫn 4: Bài toán và cách thӭc giҧi quyӃt: Trình bài khó khҳn và Kѭӟng giҧi quyӃttrong
quá trình hiӋn thӵc hӋ thӕng.
Phҫn 5: Phân tích thiӃt kӃ hӋ thӕng: Trình bày yêu cҫu cҫu khi hiӋn thӵc hӋ thӕngvà thiӃt
kӃ cҩu trúc hӋ thӕng
Phҫn 6: HiӋn thӵc hӋ thӕng: Trình bày nhӳng chӭc QăQJ ÿm hoàn thiӋn, cách sӱdөng
thӵc tӃ.
Phҫn 7: KiӇm thӱ: KiӇm tra tӯng chӭc QăQJ cӫa hӋ thӕng, báo kӃt quҧ kiӇm tra.
Phҫn 8: Tәng KӃt: Tәng kӃt lҥi các phҫn làm thành công, thiӃu sót, ÿӏ nh hѭӟng phát triӇn
trong WѭѫQJ lҥi
2
2
&ѫ sӣ lý thuyӃt và công nghӋ
Trong quá trình làm luұQYăQNKLWuPFiFKJLҧi quyӃt cho tӯQJEjLWRiQHPÿmQJKLrQ cӭu
YjWuPWzLUDÿѭӧc nhӳQJQJX\rQOêÿҵQJVDXFNJQJQKѭQKӳng công nghӋ giúp em giҧi quyӃWÿѭӧc
nhӳng vҩQÿӅ gһp phҧi. Tӯ SKtDFOLHQWFKRÿӃn server, tӯ công cө tìm kiӃPFKRÿӃn hӋ thӕQJÿӅ xuҩt.
Tҩt nhiên, giҧi pháp thì có vô vàn, nguyên lý thì hàng ngàn nghiên cӭXWUѭӟFÿyÿmÿӅ UDQKѭQJÿӇ
chӑn ra nhӳng công nghӋ phù hӧp nhҩt, HPÿmFkQQKҳFÿҳQÿRYj[HP[pWUҩt kӻ càng6DXÿk\
em xin trình bày vӅ FiFFѫVӣlý thuyӃt và công nghӋ chính mà em ÿm sӱ dөng.
2.1
Các công nghӋ và WKѭ viӋn phía Client
2.1.1 Single Page Application
Web là mӝt ӭng dөng mҥng ÿm tӗn tҥi tӯ cuӕi thұp niên 80, trҧi qua nhiӅu giai ÿRҥn khác
nhau, tӯ thӡi mà mӛi khi click chuӝt vào mӝt món hàng trong màn hình danh
sách, QJѭӡi dùng phҧi chӡ ÿӧi trình duyӋt load nguyên 1 trang HTML vӅ chi tiӃt món hàng tӯ
máy chӫ vӅ QJѭӡi dùng, và ÿLӅu ÿy tҩt nhiên ko tӕt vӅ mһt thӡi gian lүn hiӋu suҩt. Chính vì thӃ các
kӻ sѭ ÿã tӕi ѭu bҵng cách tҥo ra các kƭ thuұt giúp chӍ tҧi lҥi phҫn dӳ liӋu cҫn thiӃt mà không cҫn
phҧi tҧi toàn bӝ. Và tӯ ÿySingle Page Application (SPA) ra ÿӡi.
1yLFiFKÿѫQJLҧn, SPA là loҥi ӭng dөng web giúp nâng cao trҧi nghiӋPQJѭӡi dùng
bҵng cách sӱ dөng HTML5 và AJAX và chӍ bao gӗm 1 trang HTML duy nhҩt. Mӛi khi chúng
ta tѭѫng tác, ÿiӅu hѭӟng, phân trang« ta chӍ cҫn gӑi API ÿӃn máy chӫ ÿӇ lҩy phҫn dӳ liӋu cҫn
thiӃt rӗi sau ÿy cұp nhұt lҥi trên màn hình. Nhӳng thành phҫn chung giӳa các trang QKѭ Header,
Sider, Footer vүn ÿѭӧc giӳ nguyên.
'ѭӟLÿk\ là hình ҧnh mô tҧ sӵ khác biӋt giӳa SPA và trang web truyӅn thӕng
3
Hình 2.1: SΉ khác nhau cͿa SPA và website truy͙n thͩng
2.1.2 Framework React JS
Trong thӡi ÿҥi công nghӋ hóa hiӋn nay Gѭӟi sӵ phát triӇn Yѭӧt bұc cӫa công nghӋkéo theo
nhӳng ngành nghӅ liên quan FNJQJ phát triӇn trong ÿy có cҧ viӋc sӱ dөng nhӳng WKѭ viӋn
JavaScript cho các trang website. Vì thӃ ReactJS ÿm ra ÿӡi và trӣ nên phә biӃn bӣi tính QăQJ linh
hoҥt ÿѫQ giҧn mà nó ÿHPOҥi. Theo thӕng kê con sӕ sӱ dөng ReactJS tính tӟi hiӋn nay là 1300
developer YjKѫQ 94000 trang web sӱ dөng nó.
ReactJS hiӋn nay là framework hàng ÿҫXÿӇ xây dӵng mӝt ӭng dөng Web bên phía QJѭӡi
dùng. React ÿѭӧc phát triӇn bӣi Facebook và có mӝt cӝng ÿӗng hӛ trӧ ÿ{QJÿҧo. Vӟi React, ta có
thӇ xây dӵng mӝt Single Page Application (SPA) dӉ dàng mà không mҩt quá nhiӅu chi phí.
Và mөc ÿtFK chӫ chӕt cӫa React ÿy chính là mӛi website khi ÿm sӱ dөng ReactJS thì phҧi chҥy
thұt Pѭӧt thұt nhanh và có khҧ QăQJ mӣ rӝng cao, dӉ thӵc hiӋn[1]
4
Hình 2.2: Logo React JS
Tuy mҥnh mӁ nhѭ vұy, nhѭng bҧn chҩt React chӍ là mӝt thѭ viӋn nhӓ và nó không có sҹn
tính QăQJJӑi API, quҧn lí route, quҧn lí VWDWH« Vұy nên khi lұp trình ta cҫn sӱ dөng thêm mӝt sӕ
WKѭ viӋn bên ngoài QKѭ Redux, ReactRouter« Thӵc tӃ thì bên cҥnh React hiӋn nay vүn còn
nhiӅu framework mҥnh mӁ Yjÿѭӧc áp dөng nhiӅXQKѭ Angular, VueJS« Tuy nhiên em
quyӃt ÿӏ nh chӑn React vì tính әn ÿӏ nh và cӝng ÿӗng hӛ trӧ mҥnh mӁ. ViӋc em FNJQJ tӯng có hӑc
qua vӅ React WUѭӟc ÿk\ FNJQJ là 1 trong nhӳng lí do em chӑn framework này
React Hooks
Hooks là nhӳng hàm cho phép kӃt nӕi React state và lifecycle vào các components
sӱ dөng hàm. Vӟi Hooks ta có thӇ sӱ dөng state và lifecycles mà không cҫn dùng ES6 class.
Nói mӝt cách ngҳn gӑn và ÿѫQ giҧn thì React Hooks là mӝt ý WѭӣQJOjFiFKÿӇ thêm các tính
QăQJFӫa React.Component vào functionals components.
Tҥi sao chӑn React Hooks?
- Code ngҳn gӑn KѫQ viӃt code sӱ dөng Hooks ngҳn gӑn KѫQ rҩt nhiӅu so vӟi
Class
- Hooks chӍ bә sung thêm, không loҥi bӓ code cNJ. Ví dө nhѭ bҥn ÿang code dӵ án
ReactJS theo kiӇu Class Component thì vүn có thӇ sӱ dөng Hooks trong dӵ án ÿy
2.1.3 Quҧn lí router vӟi React Router
Trong luұQYăQOҫn này, em xây dӵng mӝt hӋ thӕng quҧn lý kho hàng vұn tҧi theo chuҭn
Single Page Application7X\QKLrQÿӇ ÿҥWÿѭӧFÿLӅXÿyYӟi viӋc dùng React làm framework thì cҫn
phҧi có mӝt công cө vӯa tích hӧS ÿѭӧc vӟi React, vӯa tұn dөng và thao tác ÿѭӧc HTML
Routing. Và công cө thích hӧp nhҩt chính React Router
React-Router là mӝt thѭ viӋn ÿӏ nh tuyӃn (routing) tiêu chuҭn trong React. Nó giӳ cho
giao diӋQÿӗng bӝ vӟi URL trên trình duyӋt. Nó giӳ cho giao diӋn cӫa ӭng dөQJÿӗng bӝ vӟi URL trên
trình duyӋt. React-Router cho phép ÿӏnh tuyӃn luӗng dӳ liӋu (data flow) trong ӭng dөng mӝt
cách rõ UjQJ1yWѭѫQJÿѭѫQJYӟi viӋc nӃu chúng ta có URL này, nó sӁ WѭѫQJ ÿѭѫQJ vӟi Route
này, và giao diӋn WѭѫQJ ӭng.[2]
5
2.1.4 Quҧn lí state vӟi Redux
Redux là mӝt WKѭ viӋn cho phép chúng ta quҧn lý state trong mӝt ӭng dөng
javascript.
React quҧn lí các state trong mӛi components, ÿӇ chia sҿ state thì phҧi truyӅn tӯ
component cha xuӕng component con hoһc sӱ dөng ÿӃn context vì vұy nó chӍ phù hӧp cho
các ӭng dөng nhӓFytWVWDWH 1KѭQJ NKL ӭng dөng lӟn lên và có nhiӅu state thì viӋc sӱ dөng
context sӁ khá vҩt vҧ, rҩt khó phát triӇn và bҧo trì. Redux UDÿӡi giúp chúng ta tҥo ra mӝt Store
ÿӇ OѭX toàn bӝ data vào 1 QѫL và cung cҩp cho toàn bӝ ӭng dөng.
Redux bao gӗm 3 thành phҫn chính:
- Store: là QѫL OѭX tҩt cҧ các state cӫa ӭng dөng
- Action: là các hành ÿӝng, events mà chúng ta tҥo ra ÿӇ thay ÿәi state
- Reducer: là 1 function nhұQÿҫu vào là state và các mô tҧ vӅ event và dӵDWUrQÿy ÿӇ trҧ
vӅ state tiӃp theo
6ѫ ÿӗ hoҥt ÿӝng cӫa Redux
+uQK6˿ ÿͫ ho̹t ÿͱng Redux
Sau khi mӝt action ÿѭӧc thӵc thi, dispatcher sӁ ÿѭӧc kích hoҥt và gӱi ÿӃn reducer
mӝt action. Lúc này reducer thӵc hiӋQKjQKÿӝng dӵa vào action ÿѭӧc gӱi ÿӃn. Sau ÿó, ÿӗng thӡi
lѭu lҥi giá trӏ cӫa state mӟi vào trong store và trҧ vӅ state mӟi ÿó.
6
2.1.5 Tích hӧp middleware Redux Thunk
Trong hình ҧnh vӅ Vѫ ÿӗ hoҥW ÿӝng cӫa Redux, ta thҩy 1 chi tiӃW FKѭD ÿѭӧF ÿӅ cұp ÿӃn là
Middleware và API. Hình trên mô tҧ nӃu dùng Redux làm kiӃQWU~FWD ÿӇ cho các middeware
ÿҧm nhiӋm viӋc gӑi API
HiӋn nay có 3 middleware thông dөng nhҩt là Redux-thunk, Redux-saga và
Redux-observable. Cҧ ÿӅXFyѭXQKѭӧFÿLӇm riêng, tuy nhiên em chӑn Redux-thunk vì tính
phә biӃn, ÿѫQ giҧn, dӉ sӱ dөng cӫa nó.
2.2
Các công nghӋ và WKѭ viӋn bên phía Server
Mӝt ӭng dөng tӕt phҧi có phҫn máy chӫ tӕt, nhanh, chӏ u tҧi cao. NhiӅu công nghӋ lұp
WUuQKSKtDVHUYHUUDÿӡi và mӛi thӭ ÿӅXFyѭXQKѭӧFÿLӇm riêng. Mөc tiêu cӫa các công nghӋ ÿó
không chӍ giúp cho server chҥy nhanh hѫn mà còn ÿem lҥi trҧi nghiӋm tӕt KѫQ cho lұp trình
viên, giúp lұp trình viên quҧn lí code dӉ KѫQ dӉ debug KѫQ dӉ tích hӧp WKrPWtQKQăQJPӟLKѫQ
Trong sӕ các công nghӋ thông dөng vӅ EDFNHQG QKѭ PHP, Java, NodeJS hay Golang thì em
chӑn NodeJS là công nghӋ chính cho project này. Sӱ dөng NodeJS sӁ giúp em ÿӥ vҩt vҧ vì
không phҧi hӑc thêm ngôn ngӳ mӟi, vì cҧ React và NodeJS ÿӅu dùng Java Script. Nhѭng
trên hӃt NodeJS nhanh và chӏu tҧi tӕt, ÿiӅu ÿó giúp cho nó là mӝt trong nhӳng lӵa chӑn hàng
ÿҫu ÿӇ phát triӇn bên phía server. VӅ phía FѫVӣ dӳ liӋu, nhӳng CSDL NoSQL ÿDQJÿѭӧc sӱ dөng
rӝQJUmLKѫQVRYӟi SQL, và phә biӃn nhҩt ÿy là MongoDB. Xây dӵng mӝt hӋ thӕng NodeJS thuҫn
sӁ rҩt vҩt vҧ và tӕn thӡi gian nên em sӱ dөng mӝt framework cӫa NodeJS và ExpressJS là
sӵ lӵa chӑn thích hӧp.
2.2.1 KiӃn trúc Restful API
Có thӇ nói nguyên lí REST và cҩu trúc dӳ liӋu RESTful ÿѭӧc biӃWÿӃn rӝng rãi trong giӟi
lұp trình web nói chung và lұp trình ӭng dөng nói riêng. Bҧn
thân REST không phҧi là mӝt loҥi công nghӋ1yOjSKѭѫQJWKӭc tҥo API vӟi nguyên lý tә chӭc
nhҩt ÿӏ nh. Nhӳng nguyên lý này nhҵm hѭӟng dүn lұp trình viên tҥo môi trѭӡng xӱ lý API
request ÿѭӧc toàn diӋn
RESTful API là mӝt tiêu chuҭn dùng trong viӋc thiӃt kӃ API cho các ӭng dөng web (thiӃt
kӃ Web services) ÿӇ tiӋn cho viӋc quҧn lý các resource. Nó chú trӑng vào tài nguyên hӋ thӕng
(tӋSYăQ bҧn, ҧnh, âm thanh, video, hoһc dӳ liӋu ÿӝQJ« bao gӗm các trҥng thái tài nguyên
ÿѭӧc ÿӏ nh dҥng và ÿѭӧc truyӅn tҧi qua HTTP.
7
- Xem thêm -