11/08/2018, 20:57

Tự động hóa front-end vs Laravel Mix trong Laravel(P2)

Hi guys, nay mình lại quay trở lại với P2 đây. Ở phần 1 mình đã giới thiệu sơ qua cho các bạn về Laravel-Mix và thành quả mà nó mang lại rồi. Phần này chúng ta sẽ bắt tay vào code nhé (Bài này mình demo dựa trên source code của laravel 5.6). Phần này nếu bạn nào chưa biết về reactjs or chỉ ...

Hi guys, nay mình lại quay trở lại với P2 đây. Ở phần 1 mình đã giới thiệu sơ qua cho các bạn về Laravel-Mix và thành quả mà nó mang lại rồi. Phần này chúng ta sẽ bắt tay vào code nhé (Bài này mình demo dựa trên source code của laravel 5.6).

Phần này nếu bạn nào chưa biết về reactjs or chỉ đang quan tâm về css thì scroll xuống dưới nhé.

Ở phiên bản 5.6 của Laravel thì đã được tích hợp sẵn Vuejs, vậy nhưng đứa hay like dạo như mình lại thích dùng nền tảng của facebook hơn, vì thế mình sẽ chạy lệnh sau để thông báo cho Laravel : "Cài hộ reatjs exmaple cái đê"

php artisan preset react

Sau khi chạy xong lệnh này bạn sẽ thấy những thay đổi sau trong source code

alt text

Nếu bạn chú í vào thì thấy file package.json có thay đổi => run ngay npm install để update lại node_module thôi.

Các bạn chú í như lần trước mình vẫn nói là Reactjs hay Sass thì cuối cùng ta vẫn phải compile chúng ra thành ES5 or Css để trình duyệt đọc được. Vậy nên Laravel-Mix sau khi tích hợp xong thì cũng sẽ làm cái việc compile này cho chúng ta luôn. Vậy file được compile ra nằm ở đâu??

Cùng nhìn lại những file đã thay đổi nhé
alt text

Trong file webpack.mix.js chúng ra đã có sẵn 2 thông báo rằng: " Hãy compile file reactjs ở thư mục resources/assets/js/app.js ra file js ở thư mục public/js đi" (Tương tự cho SASS)

alt text

Nhưng tào lao từ bài trước đến bài này mà đã thấy kết quả đâu nhỉ? Đây nhé, bạn hãy chạy ngay câu lệnh này để run project laravel của mình

alt text

Sau đó truy cập vào cái domain serve trả về , kết quả của mình trông như thế này

alt text

Ơ,ó khác quái gì lúc mới cài đặt laravel đâu :D .Nhưng tại sao thế nhỉ? Các bạn trước tiên Ctrl+U lên xem cho mình xem vì sao nhé. Sau khi viewsource lên thì rõ ràng là k có link đến file public/css/app.css or public/css/app.js đâu cả. Vậy nên là các bạn phải link 2 cái file này vào trước đã.

alt text

Sau đó thì reload lại trình duyệt. Ơ,vẫn k thay đổi .Nhưng từ đã, Hà Nội k vội được đâu. Giờ mình quay lại với chủ để của mục này đó là tích hợp đc Reactjs vào . Mình quay lại đọc file resource/assets/js/app.js và thấy nó đơn giản chỉ là nơi để require các file js vào thôi. Quay qua resourcesassetsjscomponentsExample.js thì đúng là cấu trúc của Reactjs đây rồi. Mừng ghê .

alt text

Và nó cần 1 thẻ có id là example để bind dữ liệu ra => quay lại resourcesviewswelcome.blade.php và thêm thẻ này vào thôi, cái gì chứ cái này dễ k hà. ;D

alt text

Quay lại reload trình duyệt và xem kết quả(khoan hãy phẫn nộ mình, vẫn chưa có gì thay đổi đúng k?? Hứa k troll nữa ;D)

Thật ra là sau mỗi lần thay đổi thì bạn phải chạy lệnh này để Laravel Mix compile lại public source cho bạn

npm run dev (ngoài ra bạn có thể chạy lệnh npm run production - lệnh này sẽ giúp compile file ra dưới dạng nén .min )

Đấy chạy xong reload lại là ngon ngay mà. Có component content rồi kìa!

alt text

Thế là xong thằng Reactjs rồi nhé. Dài ghê :(

Thật ra là lan man ở trên thì bạn cũng đã tích hợp xong thằng Sass rồi đấy, bạn còn nhớ khai báo compile này trong file webpack.mix.js k?

alt text

Hơn thế cũng lại link luôn link file publiccssapp.css vào ở trên rồi.Vậy giờ việc của bạn là viết less và run lệnh compile

npm run dev & reload lại xem kết quả đúng k thôi

Đây là ví dụ viết Sass đơn giản của m
alt text

Hai cái ở trên bạn thấy chẳng có gì hữu ích hơn khi mỗi lần thay đổi thì ta lại phải chạy lệnh rồi reload manual lại trình duyệt đúng k nào?

Vậy bây giờ trước tiên là Auto Compile:

Để Laravel tự động compile code mỗi khi bạn Ctrl+S thì rất đơn giản , bạn chỉ cần chạy lệnh sau và để đấy

npm run watch

Với lệnh này Laravel Mix sẽ quan sát những thay đổi trong file của bạn mỗi khi bạn nhấn Ctrl+S và sau đó tự động compile ra static file ở thư mục public/js(css).

Cuối cùng là auto reload:

Bạn cần viết thêm config trong file webpack.mix.js như mình dưới đây

alt text

Sau đó bạn chạy lại lệnh

npm run watch

bạn sẽ thấy 1 cửa sổ hiện lên như này

alt text

Chú í: để php artisan serve & npm run watch xong xong, đừng thấy chạy rồi ngắt 1 trong 2 cái đi nhé ;)

Vậy túm lại là các bạn cần chú í :

1:Nơi config

file webpack.mix.js - nơi để khai báo các lệnh cho Laravel Mix biết nó phải làm gì cho các bạn.

2: Các lệnh để chạy Laravel Mix

+, `npm run dev` or `npm run production` (compile 1 lần)
+, `npm run watch` (theo dõi sự thay đổi các file được khai báo và compile sau khi bạn Ctrl+S )

Ngoài ra Laravel còn rất nhiều công dụng khác nữa.Bạn có thể xem thêm tài liệu tham khảo chi tiết hơn ở đây.

0