T đồng ý! async/await chỉ là syntactic sugar thôi (cũng như cái vụ "class" trong ES6). Code async/await ko có cái gì ưu việt hơn code promise cả, thậm chí còn tốn giấy mực hơn. Ưu điểm thực tế của nó là giúp mấy cha chỉ code OOP thì vẫn code async ầm ầm dù chả cần hiểu bản chất js nó chạy ra sao :v Nói chung là tùy team mà mình chọn syntax phù hợp, nếu ai cũng code đc promise thì ko tội gì phải dùng async/await cả.
Tương tự với TypeScript, cái này cũng phải dựa vào đặc tính của dự án, với dự án đơn giản hoặc project con con thì t sẽ né nó ra, code thuần sẽ nhanh hơn và thực sự là dễ đọc hơn. Cơ mà công nhận là combo TypeScript + auto-suggestion của VSCode thì phê .Ngoài ra thì ta nên quan tâm về interface của object hơn là type của nó.
Về test thì việc cover hết các case cơ bản t thấy khá tốn thời gian, vì bug xảy ra thường hay năm ở các edge case, 2 lựa chọn 1 là nã TDD (thì tuyệt với) hoặc 2 là viết unit test cùng với 1 tool coverage nào đó, sao cho cover đc tối thiểu 80%, như vậy thì mới thể tiến hành refactor code đc. Còn ko thì dẹp, tất cả là tính năng r :v (p/s: dev ko viết automated test nhá bạn, chủ yếu viết unittest, ông nào siêu thì viết cả functional test luôn - thường là những người làm product).
Còn về bài viết, t thấy nó đang hướng mọi người tới hướng làm "ninja" - tức là 1 coder biết dùng nhiều công nghệ (nhưng ko có nghĩa là giỏi), còn để cải thiện kĩ năng code js thì cá nhân t thấy phải tập trung vào 3 thứ: (1) cách hoạt động của engine (cụ thể là thằng Chrome V8), (2) bộ kĩ năng test - refactor code smells, (3) các best practices mà các dev đi trước để lại.
Về runtime thì tính bằng shell chưa chính xác được. Vì các ngôn ngữ biên dịch còn mất thời gian complie, ngôn ngữ chạy trên máy ảo như scala, java thì còn thêm thời gian start JVM nữa. Việc tính thời gian thì nên được thêm vào trong code thực thi luôn thì mới đúng đắn.
anh cho em hỏi anh thêm typescrip kiểu gì mà anh không cần phải đổi tên file từ .js thành .tsx với ạ. em cảm ơn anh ạ. em hay theo dỗi bài của anh mà nhiều chỗ em cũng chưa hiểu hết @@
Mình hiểu là trước khi nó khởi tạo Vue instance nó sẽ gọi store, route, các thứ trước. Bây giờ mình muốn lấy dữ liệu từ server trước rồi mới khởi tạo vue-i18n. mình nên làm như thế nào?
Phần eloquent resource thì bạn có thể dùng hoặc không dùng đều được, trong 1 số trường hợp mình muốn transform lại dữ liệu trả về khác với dữ liệu query từ db ra (thêm bớt cột, format - tính toán dữ liệu,...) thì có thể sử dụng
@pinpolygons đoán không sai mà :v
thế này nhé, ý tưởng về cấu trúc store của bạn đang bị sai rồi. Khi 1 ứng dụng vue được render thì store phải là cái gọi API lấy dữ liệu và phải là cái được gọi đầu tiên.
Action của store được dùng để gọi API lấy dữ liệu
Mutation được dùng để set state
Còn State để lưu dữ liệu dùng chung trên Components.
Đoạn gọi API set storage các kiểu kia, bạn bê nó vào trong action cho mình, nhớ đặt async await vì đây là lời gọi API nên nó sẽ gây ra bất đồng bộ, tức là code render chạy trước trong khi API chưa trả về dữ liệu kịp, nên cần có async await để code render "chờ" dữ liệu trả về đã
Cuối cùng bạn xem tiếp cho mình hàm: asyncData() , trong hàm asyncData này bạn cắt cái câu $store.dispatch() chứa lời gọi API ở trên vào cho mình
Đây là hàm dùng để fetch dữ liệu khi load trang, chứ chúng ta không dùng created() được.
THẢO LUẬN
nếu làm như a chưa đăng nhập vẫn vào index đc.h check ở đâu ạ
có cách nào dùng CMPedometer tracking step ở device khác (Apple Watch) không bạn
Làm thêm 1 cái video hướng dẫn nữa thì đẹp!
T đồng ý! async/await chỉ là syntactic sugar thôi (cũng như cái vụ "class" trong ES6). Code async/await ko có cái gì ưu việt hơn code promise cả, thậm chí còn tốn giấy mực hơn. Ưu điểm thực tế của nó là giúp mấy cha chỉ code OOP thì vẫn code async ầm ầm dù chả cần hiểu bản chất js nó chạy ra sao :v Nói chung là tùy team mà mình chọn syntax phù hợp, nếu ai cũng code đc promise thì ko tội gì phải dùng async/await cả.
Tương tự với TypeScript, cái này cũng phải dựa vào đặc tính của dự án, với dự án đơn giản hoặc project con con thì t sẽ né nó ra, code thuần sẽ nhanh hơn và thực sự là dễ đọc hơn. Cơ mà công nhận là combo TypeScript + auto-suggestion của VSCode thì phê
.Ngoài ra thì ta nên quan tâm về interface của object hơn là type của nó.
Về test thì việc cover hết các case cơ bản t thấy khá tốn thời gian, vì bug xảy ra thường hay năm ở các edge case, 2 lựa chọn 1 là nã TDD (thì tuyệt với) hoặc 2 là viết unit test cùng với 1 tool coverage nào đó, sao cho cover đc tối thiểu 80%, như vậy thì mới thể tiến hành refactor code đc. Còn ko thì dẹp, tất cả là tính năng r :v (p/s: dev ko viết automated test nhá bạn, chủ yếu viết unittest, ông nào siêu thì viết cả functional test luôn - thường là những người làm product).
Còn về bài viết, t thấy nó đang hướng mọi người tới hướng làm "ninja" - tức là 1 coder biết dùng nhiều công nghệ (nhưng ko có nghĩa là giỏi), còn để cải thiện kĩ năng code js thì cá nhân t thấy phải tập trung vào 3 thứ: (1) cách hoạt động của engine (cụ thể là thằng Chrome V8), (2) bộ kĩ năng test - refactor code smells, (3) các best practices mà các dev đi trước để lại.
Chúc bạn thành công!
hay
Về runtime thì tính bằng shell chưa chính xác được. Vì các ngôn ngữ biên dịch còn mất thời gian complie, ngôn ngữ chạy trên máy ảo như scala, java thì còn thêm thời gian start JVM nữa. Việc tính thời gian thì nên được thêm vào trong code thực thi luôn thì mới đúng đắn.
xin hỏi có cách nào thể thay đổi luôn nội dung trang web theo id ko ạ. vì theo cách trên nó chỉ thay đổi các id bên trong extension thôi ạ
mình rất vui nếu bài viết có ích cho bạn
anh cho em hỏi anh thêm typescrip kiểu gì mà anh không cần phải đổi tên file từ .js thành .tsx với ạ. em cảm ơn anh ạ. em hay theo dỗi bài của anh mà nhiều chỗ em cũng chưa hiểu hết @@
Mình hiểu là trước khi nó khởi tạo Vue instance nó sẽ gọi store, route, các thứ trước. Bây giờ mình muốn lấy dữ liệu từ server trước rồi mới khởi tạo vue-i18n. mình nên làm như thế nào?
LGTM
Phần eloquent resource thì bạn có thể dùng hoặc không dùng đều được, trong 1 số trường hợp mình muốn transform lại dữ liệu trả về khác với dữ liệu query từ db ra (thêm bớt cột, format - tính toán dữ liệu,...) thì có thể sử dụng
Thanks bạn để mình là thử
))
@duongdosieu224 nếu muốn lấy dữ liệu thì nhân bản cái instance đó lên rồi add key mới vào. aws ko cho phép thêm hay đổi key với instance đang running
@pinpolygons đoán không sai mà :v thế này nhé, ý tưởng về cấu trúc store của bạn đang bị sai rồi. Khi 1 ứng dụng vue được render thì store phải là cái gọi API lấy dữ liệu và phải là cái được gọi đầu tiên.
Action của store được dùng để gọi API lấy dữ liệu
Mutation được dùng để set state
Còn State để lưu dữ liệu dùng chung trên Components.
Đoạn gọi API set storage các kiểu kia, bạn bê nó vào trong action cho mình, nhớ đặt async await vì đây là lời gọi API nên nó sẽ gây ra bất đồng bộ, tức là code render chạy trước trong khi API chưa trả về dữ liệu kịp, nên cần có async await để code render "chờ" dữ liệu trả về đã
Cuối cùng bạn xem tiếp cho mình hàm:
asyncData(), trong hàm asyncData này bạn cắt cái câu$store.dispatch()chứa lời gọi API ở trên vào cho mìnhĐây là hàm dùng để fetch dữ liệu khi load trang, chứ chúng ta không dùng created() được.
Tks bạn,bài viết rất hay
jsdhfsjdfhjdsf
bai viet hay qua
Cho mình xin bộ source code với nha bạn, email mình pnlan1406@gmail.com Thank nhiều!
.