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

Tìm hiểu và ứng dụng react native

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 (1.17 MB, 62 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN
ĐỒ ÁN

CHUN NGÀNH
ĐỀ TÀI
Tìm hiểu và ứng dụng React Native

Giảngviênhướngdẫn: ThầyHuỳnhTuấn Anh
Sinhviênthựchiện:
• Vương Bảo Minh - 17520768
• NguyễnVĩnhDuyệt - 17520411

1


LỜI CẢM ƠN
TrântrọnggửilờicảmơnthầyHuỳnhTuấn
Anh
đãtạođiềukiệnchochúngemcócơhộiđượcthựchiệnđềtàinày.
Chỉtrongmộtthờigianngắn,
nhưngnhờsựchỉdẫnnhiệttìnhcủathầy,
chúngemđãtiếpthuđượcnhữngkiếnthứcquantrọngđểcóthểxâydựngđượcứngdụ
ngđọcbáobằng
React
Native.
Chânthànhcảmơnthấyđãhướngdẫnchúngemtronghọckìvừa qua.
Tuyđồánvẫncịnnhiềuthiếusótnhưngnhờcósựchỉdẫncủathầymàchúngem
đãtiếnbộhơnrấtnhiều, cũngnhưcóhướngpháttriểndựántrongtươnglại.
Mộtlầnnữa, chúngemxincảmơnthầy
<Nhómpháttriển>


<TpHCM, ngày 15 tháng 1 năm 2021>

2


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

3


MụcLục


4


5


I. Tổngquanvề React Native

1. Giớithiệuchungvề React Native
-

React Native làmộtjavascript framework đượcpháttriểnbởi Facebook.
React Native đượchướngtớiviệcpháttriểnứngdụng di độngđanềntảng(cross-

-

platform) chocả android vàios.
React Native đượcpháttriểndựatrênmột web framework của Facebook gọilà

-

React
Ngơnngữsửdụngđểlậptrìnhtrong React Native làJavascriptvà JSX.
Mụctiêucủa
React
Native
làgiúptốiưuhiệunăngcủa
Hybrid

app


vàtốigiảnsốlượngngơnngữ native di động.

2. Lịchsửhìnhthành React Native
-

Năm

2012,

Mark

Zuckerberg

lầmlớnnhấtcủachúngtơikhilàmcơng

ty

đãphátbiểu:

“Sai

làdựatrênqnhiều

HTML

hơnlàmơitrườngpháttriểngốc”. Ơnghứarằng Facebook sẽsớmcungcấptrảinghiệm
-

di độngtốthơn.

Kỹsư Jordan Walketại Facebook đãtìm ra cáchxâydựngcácthànhphầnUIcho iOS
bằngmộtluồngJavaScript.
HọquyếtđịnhtổchứccuộcthiHackathonđểhồnthiệnngunmẫuhệthốngđểcóthểxâ

-

ydựngcácứngdụng di độnggốc (native app) bằngcơngnghệnày.
Sau nhiềuthángpháttriển, Facebookđãpháthànhphiênbảnđầutiêncho
Native

vàonăm

2015.

Trongmộtcuộchộithảocơngnghệ,

ChedeauchobiếtFacebookđãsửdụng

React

React

Christopher
Native

trongpháttriểnứngdụngnhómvàứngdụngquảnlíquảngcáocủahọ.

3. Tạisao

React


Native

lạitrởnênphổbiếnvàmạnhmẽtronggiớilậptrình?
-

Hot reloading, thứmànhữngứngdụng Native Code khơngcó.

-

Code mộtlần, chạynhiềuchỗ, nềntảng Cross-Platform cóthểchạytrêncả
6


Android và iOS.
-

DựatrênnềntảngngơnngữJavascript,

ngơnngữ

“đanăng”

đượcgiớilậptrìnhviênưachuộngvàphổbiếnnhấtthếgiới.
-

React

Native


tạonênsự

“mượtmà”

trongviệc

vàxóanhịakhoảngcáchvềhiệunănggiữaứngdụngđanềntảng

render

UI
so

vớiứngdụngđộclậpnềntảng.
-

Facebook, instagramlà 2 ứngdụngmượtmàđượcxâydựngbằng React Native
vàchúngthựcsựchothấy

React

Native

lànềntảngtốtnhấtcholậptrìnhviênứngdụng.
-

Đằngsau React Native làmột Facebook đangrấtmạnhchốnglưng, đólàlý do
tạisao React Native được tin tưởngsẽlànềntảngthốngtrịtrongthếgiớikhichỉcó
Native App và Hybrid App.


4. Đặcđiểmnổibậtcủa React Native
-

React Native tíchhợp 2 thread là Main thread và JS thread choứngdụng
mobile:
+

Main

thread

đảmnhiệmvaitrịcậpnhậtgiaodiệnngườidùngvàxửlítươngtácngườidùngtron
7


gqtrìnhsửdụng app.
+
-

JS thread sẽthựcthivàxửlí code javascript.

Hai thread sẽtươngtácvớinhauthơng qua mộtcầunối(React Native Bridge)
chophépchúnggiaotiếpmàkhôngphụthuộclẫnnhau, chuyểnđổidữliệutừ thread

-

này sang thread khác.
React Native sẽ render native UI component phụthuộcvàonềntảng di
độngmàngườidùngđangsửdụngnêngiaodiệnứngdụngsẽgầngũivớinhiềuloạing


-

uờidùngkhácnhau.
React Native sửdụng JSX đểkếthợpJavascriptvà XML-markup syntax đểtạo
ra

-

giaodiện.

Ngườilậptrìnhcóthểviếttấtcảchỉtrongmột

file

duynhấtchứkhơngcầnphải chia ra nhiều file HTML, CSS, JS nhưlậptrình web.
Nếunhưkhi design trongứngdụng web chúng ta dùngcssthìtrong React Native
chúng ta cũngcómộtthứtươngtựgọilà flexbox layout model đểtùychỉnhthiếtkế

-

component.
Trong React Native, chúng ta sẻ chia nhỏứngdụng ra thànhnhiều component.
Đâylàthànhphầncơbảnnhấttrongmọiứngdụng react native vàmọithứtrong app

-

đềuđượccấuthànhtừđó:
Mộtsốloại component phổbiếnthườngdùngtrong react native:
+


View:



component

cơbảnnhất,

dùngđểlàmkhunghiểnthịchocác

component kháctrênmànhình.
+

Text: Là component dùngđểchứakítựxuấthiệntrênmànhình.

+

Image: Là component giúpthêmhìnhảnhtừtrên Internet hoặctừ local
vàoứngdụng React Native.

+

Touchable

Opacity:

Làmột

component


màchúng

ta

cóthểnhấnvàođểtươngtácvàthựchiệnmộthàmgìđó.
+

ScrollView:Làmột scrolling component cóthểchứanhiều component và
view.

+

TextInput: Là component chophépngườidùngnhậpliệutrênmànhình.

+

Button:



component

tươngtựnhưTouchalbe

Opacity

nhưngngườidùngkhơngthểtự do custom theo ý mình.
+

Status Bar: Là component sửdụngđểkiểmsoátthanhtrạngtháitrênứngdụng.

8


-

Trong qua trìnhquảnlí component, chúng ta sẽgặpphải 2 kháiniệmlà props và
state:
+ Props: Viếttắtcủa properties.


Props dùngđểtruyềndữliệutừ component cha xuống component con.



Khi

truyềndữliệu

qua

props,

component

con

chỉđượcđọcvàkhơngđượcphépthayđổinó.


Điềunàykhiếnchodùchúng


ta

bấtkìđâucũngsẽcóchung

1

sửdụng
output

component

khinhậpcùng

1


input

=>Giúpkiểmsốt component tốthơn.
+

State: Nếunhư props đượctruyềngiátrịtừbênngồivào component, state

lạilàdữliệunộibộcủa component.


Bấtcứkhinàongườidùngthayđổigiátrịtrong

component


thìchúng

ta

đềucóthểdùng state đểcậpnhậtlại.


Khi

gọihàmSetStatethì

React

Native

sẽ

render

lạigiátrịtrong

component.

5. Nhượcđiểmcủa React Native
-

Chỉhỗtrợ 2 nềntảng iOS và Android, Windows vàlinuxchưacó official support từ
React Native team.


-

Khơngthể build đượcứngdụngqphứctạpnhư native.

-

Khótiếpcận (theonhiều developer nhậnxét).

-

Chưacó IDE hỗtrợ (IDE dànhriêngcho React Native chưađược release)

-

Cầnbiết 1 ngônngữ Native .

-

React Native chưahỗtrợ push thẳnglên App Store hay Google Play.
9


-

Nhữnglầnphảithayđổi source lớnkhi upgrade phiênbản React.

6. So

sánh


React

Native

vànềntảng

Cross-platform

rấtmạnhhiện nay: Flutter

10


Flutter:
Ưuđiểm:
11


– Mạnhvề animation, performance app rấtcao.
– Giao tiếpgầnnhưtrựctiếpvới native
– Static language nhưngvới syntax hiệnđại, compiler linhđộnggiữa AOT (for archive, build
prod) và JIT (for development, hot reload)
– Cóthểchạyđượcgiảlập mobile ngaytrên web, tiệncho development. Các metric measure
performance đượchỗtrợsẵngiúp developer kiểmsoáttốt performance của app.
– Cóthểdùngđể build các bundle/framework gắnvà app native đểtăng performance.
Nhượcđiểm:
– Bộ render UI được team author gầnnhưviếtlại, khơngliênquantới UI cósẵncủa
Framework native, dẫnđến memory sửdụngkhánhiều.
– Phảihọcthêmngônngữ DART, bloc pattern, DART Streaming.
– Dùđã release 1.0 chínhthức, tuynhiêncịnkhámới. Mộtsố plugin rấtquantrọngnhư Google

Map vẫncịnđangpháttriển, chưa stable.
– Là con cưngcủa Google, tuynhiênhãngdínhnhìuphốtvớithóiquen “quăng con giữachợ”
nêncầncânnhắc.

React Native:
Ưuđiểm:
– Thiênvề development/hotfix nhanh (hot reload, bundle injection)
– Sửdụng JS (quenthuộcvớinhiều developer) vàcóthể share business logic codebase với
frontend (js).


Back

bởi

Facebook,

họdùngcho

product

củahọhàngngàynên

developer

hưởnglợikhánhiềutừđây.
– Hiệntạiđãrấtnhiềuthưviện, gầnnhưđãrấtđầyđủchocácnhucầu app thôngdụng.
Nhượcđiểm:
– Giao tiếpvới native thông qua các bridge, dễbị bottleneck nếukhơngđượckiểmsốttốt.
– Dùng JS nênmangtheocácđặcđiểmcủa JS: rấtdễlàmnhưngcũngdễsai, dẫntớikhó

12


maintain vềsau.
– HIệunăng animation làđiểmyếucủa RN, muốnlàmtốtphảilàmtừ native, tầngjschỉ call vào,
setup views. Tuynhiênvớicác interactive animation thìrấtđaukhổ.
– Khơngthíchhợpchocác app cầnnănglựctínhtốncao (hash, crypto, etc).

7. Liệu

React

Native

cịnsứccạnhtranhvới

Flutter

trongtươnglai?
-

Tấtcảmọisự so sánhđềulàkhậpkhiễng, vì:
+

React Native cho ta mộthiệunăngtươngtựnhư “Native App Performance”.

+

Mộtcộngđồnghỗtrợlớnmạnh.


+

NhữnglậptrìnhviênsửdụngJavascriptvàmuốnlấnsân

sang

ứngdụng

di

độngmộtcáchdễdàng.
->
Flutter

React

Native

từ

Google,

sẽcịnđượccậpnhậtvàpháttriểndàitrongtươnglaiđểcạnhtranhvới
chúng

ta

sẽkhơngbiếtđượcnhữnggìsẽxảy

ra


nhưngchắcchắnrằngmộtnềntảngtuyệtvờinhư React Native sẽkhơng bao giờ “chết”
bởimộtcộngđồnglậptrìnhviênlớnsẽlnđónggópvàduytrìđứa con tinhthầncủahọ.

II. Xâydựngứngdụngsửdụng React Native

1. Expo là gì? Sửdụng Expo khởichạyứngdụng
-

Expo

làmột

framework

dùngđểpháttriểnnhanhcácứngdụng

React

Native.
13


Nógiốngnhư

Laravel

chocácnhàpháttriển

PHP,


hoặc

Ruby

on

Rails

chocácnhàpháttriển Ruby. Expo cungcấpmộtlớpnằmtrêncùngcủa React Native API
đểgiúpchúngdễsửdụngvàquảnlý.
Nócịncungcấpcáccơngcụgiúpbạndễdàngkhởitạovàkiểmthửcácứngdụng
Native.

Sau

cùng,

nócungcấpcácthànhphần

React
UI

vàcácdịchvụthườngchỉcósẵnkhibạncàiđặtmộtthànhphần React Native củabênthứba.
Tấtcảđềuđượccungcấpthơng qua Expo SDK.

-

Khởichạyứngdụng qua Expo:
B1: Vàothưmụcchứaứngdụng, tạiđườngdẫnthưmụcứngdụng, mởtrình “cmd”



14


B2: Sửdụnglệnh “Yarn start” đểkhởichạyứngdụng, lúcnàytrình Yarn sẽhiệnlên 1 mã
QR,

nếusửdụngmáyảothìkhơngcầnquantâm,

nếusửdụngđiệnthoại

ta

thựchiệnqtmã QR để Expo càiđặtvàmởứngdụng

15


2. Cáctínhnăngđượcxâydựng
2.1 Đăngkýtàikhoản.

16


17


2.2 Đăngnhậptàikhoản.


18


19


2.3 Quênmậtkhẩu.

20


2.4 Chọnloạibáo.

21


2.5 Hiểnthịdanhsáchbáotheothờigianthực.

22


2.6 Xem chi tiếttừngthông tin bàibáo.

23


24


3. Cấutrúcthưmụcdựán


25


×