Xây dựng ứng dụng phi tập trung (Dapp) với Angular

Tram Ho

Mở đầu
Để tiếp tục series xây dựng Dapp, bài này sẽ hướng dẫn xây dựng sample Dapp bằng framework Angular8. về cơ bản thì chúng ta sẽ xây dựng một ứng dụng dựa trên smart cotnract đã được xây dựng trong bài đầu tiên : Xây dựng smart contract

Về cơ bản chúng ta sẽ sử dụng smart contract đã có và xây dựng ứng dụng chuyển các token như đã thực hiện với React. Đối với Angular thì sẽ có một số thứ cần thay đổi tuy nhiên tư tưởng về cơ bản sẽ khá giống nhau

Chuẩn bị

Môi trường

Chúng ta install Angular

Ta chạy lệnh ng n để khởi tạo project

Để cho đúng vị chúng ta sử dụng Angular Material design để phần giao diện đẹp hơn

Install Angular Material

Cũng giống như Redux trong React hay Vuex trong Vue .Để quản lý state tree chúng ta dùng RxJS

Tiếp đến là các package như web3, truffle-contract để connect vs web3 và contract

Để chạy project ta sử dụng lệnh

Triển khai ứng dụng

Web3 connect

Để có thể kết nối với Web3 ta sẽ tạo một util module . Angular cung cấp cho chúng ta một bộ Cli miễn chê vào đâu đc ta chỉ cần chạy lệnh

Lệnh này sẽ tạo ra file util.module.ts chúng ta sẽ thêm Web3Service và được file hoàn chỉnh

Nhưng khoan Web3service đâu rồi ??? Để tạo Web3 service ta sử dụng lệnh

Lệnh này sẽ tạo 2 file web3.service.spec.ts ( file này phục vụ cho việc chạy test nên tạm thời chúng ta chưa cần sửa ) và web3.service.ts ( chúng ta sẽ code thêm vào file này )

Giải thích :

  • public async bootstrapWeb3() : hàm này dùng để lấy web3 , nếu brower có metamask thì liên kết với metamak, nếu không sẽ lấy web3 = new Web3.providers.HttpProvider(“http://localhost:8545“) và sau đó thực hiện polling cứ 1s cập nhật account trong trường hợp khi sử dụng app ng dùng muốn đổi account
  • private refreshAccounts() : hàm này để lấy account
  • public async artifactsToContract(artifacts) : hàm này để connect tới contract vs tham số đầu vào là link tới file abi

Giao diện

Tiếp theo ta tạo module meta

Sau đó tạo component meta-component để code frontend

Ta chỉnh sửa meta.module.ts

Mình đã thêm vào một số module của Material Design để code frontend luôn

Import thêm MetaModuleapp.module.ts

Xóa hết code html trong file app.component.html của app đi thay bằng tag selector của meta-component mà chúng ta tạo bên trên

File app.component.html

Bây h công việc của chúng ta là sẽ code trong file meta

Đầu tiên là meta-component.comopnent.ts

Tiếp theo là meta-component.component.html

Một chút CSS meta-component.component.css

Kết quả

Các bạn có thể tham khảo trong repo này :

https://github.com/vinhyenvodoi98/EthCoinBase-Angular

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo