Giới thiệu công nghệ Component và làm thử 1 app di động

I am a developer, I write blogs occasionally. I hope you will find something new when reading my blogs.
Search for a command to run...

I am a developer, I write blogs occasionally. I hope you will find something new when reading my blogs.
No comments yet. Be the first to comment.
Có mấy người bạn của mình có hứng thú về tìm hiểu lập trình nên mình soạn 1 series để chia sẻ những kiến thức và kinh nghiệm của mình.
Sau khi cưỡi ngựa xem hoa 1 vòng các bài trước thì đến giờ chúng ta đã có thể làm 1 cái web, hoặc 1 cái app. Mặc dù rất đơn giản thôi nhưng nó sẽ là cánh cổng để mở đến những hệ thống phức tạp hơn. Bài này sẽ đi sâu thêm chút nữa về công nghệ Compo...
Login xong rồi thì làm gì? Tất nhiên là các thao tác xử lý dữ liệu. thường viết tắt là CRUD (Create Read Update Delete). Chúng ta sẽ làm tất cả trên Wordpress, tiếp nối 2 bài viết về login trước. CRUD với việc Login bằng Ultimate User Chúng ta cần ti...

Ở bài trước chúng ta đã có thể login bằng cách cài thêm plugin cho Wordpress. Về bản chất, đó là việc dùng Wordpress làm server xử lý thông tin đăng nhập. Wordpress vừa hiển thị giao diện, vừa xử lý thông tin đằng sau. Ở bài này chúng ta sẽ học cách ...

Tiếp nối với bài về Header thì chúng ta sẽ bàn đến nút Login / Signup có trên Header. Thường thì các flow phổ biến sẽ là: click nút Login / Signup sẽ dẫn sang trang Login, ở đó sẽ có nút dẫn sang trang Signup nếu chưa có tài khoản, hoặc có design sẽ...
Từ bài này trở đi chúng ta sẽ bắt đầu thực hành các kiến thức về UI Builder, Web component và React để làm từng thành phần của web. Đầu tiên là Header, hay còn được gọi là Navigation bar, Navigation menu,.... Mục đích của phần giao diện này là giới t...

Fonts, Sizes và Colors Vì chúng ta sẽ làm việc trực tiếp trên Wordpress + Elemetor nên bước này cả 3 sẽ giống nhau: Vào Site settings và cài đặt Global Colors để dùng cho Elementor Tạo global style trong Custom CSS để dùng CSS variable cho Web Comp...

Ở bài trước trong series bạn đã được làm quen với Wordpress và cách chỉ bằng vài click có thể tạo ra 1 trang web hoàn chỉnh. Wordpress làm rất tốt với những gì người ta cần ở nó ở mức độ cơ bản. Còn với những yêu cầu nâng cao hơn, thì cần phải học thêm kha khá.
3 ứng dụng tốt nhất của Wordpress là tạo 1 trang viết blog, tạo 1 trang website tin tức (landing page), hay tạo 1 trang web bán hàng. Dĩ nhiên sẽ còn nhiều các ứng dụng nâng cao hơn nhưng chúng ta sẽ không đi sâu vào nó. Về tính thương mại, Wordpress rất phù hợp cho các doanh nghiệp nhỏ hoặc chủ cửa hàng. Mình sẽ chia sẻ 1 công thức kinh doanh với Wordpress như sau:
Bước 1: Chuẩn bị tiền vốn:
Bước 2: Định giá sản phẩm
Giờ nhìn sang đối thủ cạnh tranh là 1 công ty như Sapo xem giá họ như nào:

299k / tháng = 3tr588k / năm
Vậy nếu mình đặt giá rất cạnh tranh là 2tr5 / 1 website, thì 1 năm chỉ cần 2.66 khách là hoàn vốn.
Bước 3: Thiết lập quy trình bán hàng
Nếu bạn làm quen với công thức trên, thì nửa ngày -> 1 ngày là có thể xong được 1 web có thể sử dụng được, khách có thể vào đăng bài đăng sản phẩm luôn. Với theme trả phí thì hầu như mọi thứ đều có hướng dẫn trong file documentation của nó rồi, chỉ cần bỏ thời gian ra làm quen nhiều lần là sẽ nhuần nhuyễn.
Sẽ có nhiều cách để bạn có thể cắt giảm chi phí ban đầu, tuy nhiên TUYỆT ĐỐI không dùng theme lậu. Cái này quan trọng vì thường ta hay có thói quen sử dụng phần mềm crack, sẽ không muốn bỏ tiền mua theme. Với theme lậu thì rất có khả năng đã bị chèn mã độc vào bên trong, dẫn đến Chrome báo đỏ khi vào web, Facebook chặn không cho đăng link website -> website bị đưa vào blacklist -> coi như mất cái domain.
Việc tìm cách cắt giảm chi phí sẽ đánh đổi bằng (nhiều) thời gian bỏ ra nghiên cứu, do đó mình không khuyến khích trong lúc ban đầu, khi nào bạn hiểu rõ về Wordpress và các vấn đề như server, hosting, thì lúc đó bạn sẽ tự có cách tối ưu chi phí riêng cho mình.
Từ kết quả bài tập lần trước, hãy
Trong khi Wordpress được coi là 1 giải pháp No Code và có thể kiếm tiền với nó luôn, thì HTML JS CSS lại là nền tảng để giúp bạn đi xa hơn. Lưu ý là Series lập trình này mình muốn hướng các bạn theo tư duy Vấn đề -> Giải pháp trước, có nghĩa là không tự nhiên lại học những thứ k cần thiết (mặc dù nó có thể là nền tảng của lập trình), mà xuất phát từ Vấn đề trước và học những cái nhanh nhất để giải quyết Vấn đề.
Ok giả sử bây giờ mình muốn làm 1 app di động, hoặc muốn làm 1 mạng xã hội đi, thì Wordpress bó tay rồi. Đó giờ chúng ta mới cần các giải pháp nâng cao hơn, bắt đầu từ việc học HTML JS CSS
Đăng ký 1 tài khoản ở freecodecamp.org/learn Học 2 phần học như trong hình sau

Cụ thể là:
Học full khóa học và upload ảnh show là đã học hết các bài trong khóa đó

Học full khóa này và cũng up ảnh show tiến độ

Học full khóa này và cũng up ảnh show tiến độ

Kiểu học của freecodecamp giống như chơi game làm nhiệm vụ, kết hợp với Google thêm hy vọng các bạn có thể hoàn thành các khóa học trên. Nếu có thời gian, hãy không ngần ngại mà học hết 2 phần học như trong ảnh bên trên mình đăng. Lưu ý rằng các kiến thức này là cơ bản nên nó khá quan trọng.
Component có thể hiểu là 1 thành phần nhỏ trong toàn thể bộ phận. Trong thuật ngữ về lập trình, thì Component thường dùng để nói về các thành phần của giao diện ứng dụng.

Hãy nhìn vào ảnh minh họa này, có thể nói rằng Component khá rõ ràng để nhận ra. Component sẽ được chia thành nhiều level từ to đến nhỏ
Quy đổi ra HTML ta sẽ có thể nói rằng Component cấp nhỏ nhất là 1 html tag, VD như <button></button>, <img />, <h1></h1>, và tập hợp của chúng tạo thành 1 component to hơn, VD:

Tổng quan thì cấu trúc của 1 Web app / 1 Mobile app sẽ là:
<App></App> = List of <Page></Page><Page></Page> = <Header></Header> + <Content></Content> + <Footer></Footer><Content></Content> = List of <Item></Item> (trường hợp phổ biến)<Item></Item> = <Image></Image> + <Text></Text>Giờ chúng ta sẽ thử bắt tay vào làm 1 app di động bán Pizza, khá giống như bài tập ở bài viết số 1, chỉ là đưa từ web lên mobile app
Okay bắt đầu nào, hãy thực hiện theo các bước sau:

Trang này nhìn qua thì khá giống Codepen.io, tuy nhiên để ý phần preview bên phải có iOS, Android, Web. Nghĩa là chúng ta có thể code cho cả iOS, Android và Web.
Tiếp theo nhìn vào khung code, chúng ta thấy <View></View>, <Text></Text>, ... nhìn khá giống HTML. Yes, đây là các Component cấp bé nhất. Đến đây mình cần nói lại 1 chút, đó là HTML được dùng để code giao diện website, còn cái bên trên, hãy tạm gọi nó là URP (Universal React Practice), có thể dùng để code giao diện cả website và mobile app luôn. Đây sẽ là phần mà mình trọng tâm muốn giới thiệu với các bạn, và nó sẽ xuất hiện trong suốt các bài viết từ đây về sau trong series.
Okay tạm biết thế đã, giờ hãy đăng ký & đăng nhập để cho những gì mình sắp viết k bị mất (Nó sẽ được lưu vào mục My Snacks như hình)

Giờ xóa hết code đi và viết lại thành như này:

Giống như HTML có h1, div, input, button... thì ở URP này có View, Text, TextInput, TouchableOpacity, trước hết hãy thử với Text
Thêm <Text>Đây là app bán Pizza, hãy order ngay</Text> vào dưới <View>

Thêm dùng kèm với placeholder để tạo các khung nhập. VD:
<TextInput placeholder="Bạn mua bao nhiều cái" />

Lưu ý nếu bạn gặp lỗi màn hình đỏ, thì hãy nhớ thêm TextInput lên dòng import như hình. Khác với HTML, để dùng các Component bạn phải khai bảo nó ở dòng import rồi mới được dùng. Ngoài ra để ý cái kí hiệu /> thay vì <TextInput></TextInput>, cái này là 1 cái khác của URP với HTML đó là nếu những Component không có cấp con (gọi là children) thì có thể dùng /> cho ngắn gọn, tức là 2 cách viết này đều có thể dùng với URP, nhưng HTML chỉ dùng được 1 kiểu thôi.
Okie cơ mà giờ nhìn khung nhập không giống như bên web, vì không có viền bao quanh. Để làm cho giống, chúng ta cần thêm inline style cho TextInput như sau:
<TextInput placeholder="Bạn mua bao nhiều cái" style={{ borderWidth: 1, borderColor: 'black' }} />

Khác với HTML có 2 cách để style đó là dùng class CSS và inline style, thì URP chỉ có thể dùng inline style, nếu quy ra HTML thì sẽ là như này:

Dù có khác nhau nhưng có lẽ bạn sẽ nhận ra 1 điểm chung, các từ ngữ sử dụng khá giống nhau. border-width -> borderWidth, border-color -> borderColor. Đúng vậy, CSS sự dụng kiểu viết kebab-case còn URP style sử dụng kiểu viết camelCase. kiểu viết camelCase được dùng chủ yếu trong JS nên URP style được gọi là JS style object. HTML cũng style được theo kiểu này, nhưng phải dùng JS. Tham khảo link w3school này

Quay trở lại bài viết, hãy thêm 2 TextInput nữa để đủ các trường nhập liệu

Giờ cần thêm nút bấm nữa là đủ. như ở HTML ta có <button></button>, thì ở URP ta có <TouchableOpacity></TouchableOpacity>. Hãy gõ vào như hình:

Giờ thêm 1 chút style để cho giống 1 cái nút bấm. Cho text ra giữa và tô màu cho button

Bạn có thể bấm thử ở bên khung preview để thấy nó nhấp nháy. Như vậy là căn bản bạn đã làm xong phần cấu trúc giao diện của app r đó.
Bấm Save để lưu Snack của bạn

Hãy search trên store để tải app Expo Go (App store iOS) và Expo (Play Store Android)

Sau khi cài đặt xong thì mở app lên và đăng nhập, bạn sẽ thấy cái app mình vừa lưu xuất hiện ở đó. Sau đó mở ra

Chúc mừng bạn đã làm ra được 1 app đầu tiên!! và không chỉ là app, nó còn là web, code URP sẽ cho bạn cả web và app cùng 1 code.


Hãy sử dụng kiến thức về CSS đã học được ở Freecodecamp, và phần giới thiệu về JS style object bên trên, hãy chỉnh lại app vừa làm thành giống như này:
