Trận chiến xây dựng kịch bản Gulp Vs Grunt
Tôi đã viết về cách bắt đầu với Gulp cũng như cách bắt đầu với Grunt. Cả hai đều tự động hóa các nhiệm vụ của chúng tôi, cả hai đều sử dụng nút, và cả hai đều yêu cầu bạn phải tạo tác vụ và cài đặt plugin của một số loại. Nhưng bạn có tự hỏi về sự khác biệt giữa hai, hoặc thậm chí, cái nào tốt hơn?
Trong bài viết này tôi sẽ tập trung chủ yếu vào sự khác biệt giữa hai dự án yếu tố nào có thể giúp bạn quyết định ai trong hai người bạn có thể cho là tốt hơn cho chính mình. Tôi sẽ sử dụng một số mã có thể không quen thuộc. Nếu có, tôi khuyên bạn nên đọc qua hai bài báo đã xuất bản trước khi bạn bắt đầu.
Thêm thông tin trên Hongkiat.com
- Cách bắt đầu với Gulp
- Làm thế nào để bắt đầu với Grunt
Tốc độ
Sự khác biệt chính giữa Gulp và Grunt nằm ở Làm thế nào họ đối phó với các nhiệm vụ tự động hóa của họ ở bên trong. Gulp sử dụng luồng Node trong khi Grunt sử dụng tệp tạm thời. Chúng ta hãy nói tiếng Anh đơn giản, chúng ta sẽ?
Giả sử bạn muốn viết mã SASS cho dự án của bạn. Bạn sẽ muốn biên dịch mã SASS của mình và sau đó có thể thu nhỏ nó.
Grunt xử lý việc này bằng cách sử dụng tập tin trung gian đó là các hoạt động I / O đĩa. Tệp SASS của bạn được biên dịch và sau đó được ghi vào một tệp tạm thời. Tệp tạm thời được sử dụng bởi autoprefixer và sau đó sản phẩm cuối cùng được ghi vào tệp đích.
Gulp chăm sóc tất cả điều này trong trí nhớ. Tệp SASS nguồn của bạn được biên dịch, kết quả được chuyển đến trình tự động sửa lỗi mà không được ghi vào tệp và tệp đích sau đó được ghi ra.
So với các hoạt động trong bộ nhớ, ghi đĩa chậm, điều đó có nghĩa là Gulp có lợi thế về tốc độ lớn (bây giờ). Một so sánh tốc độ đã được thực hiện bởi tech.tmw cho thấy hầu hết các tác vụ đều nhanh hơn ít nhất gấp đôi so với Gulp. Trong khi đây không phải là một nghiên cứu khoa học mạnh mẽ, xu hướng là ở đó và tôi đã thấy điều tương tự với các dự án của riêng tôi. Nhưng mức độ ảnh hưởng lớn như thế nào là sự khác biệt về tốc độ?
Sự khác biệt trong giây
Đối với hầu hết các dự án, điều này sẽ không thành vấn đề. Hầu hết các dự án đều nhỏ. Khi bạn đang tạo một chủ đề WordPress hoặc một cái gì đó tương tự, số lượng tệp bạn cần làm việc cũng nằm trong giới hạn hợp lý. Sẽ không có vấn đề gì nếu bảng định kiểu của bạn được biên dịch trong 400ms hoặc 800ms.
Hơn nữa, hầu hết các dự án có thể được được cấu trúc theo cách mà một số vấn đề quan trọng nhất có thể được bỏ qua. Nếu bạn có 50 tệp SASS, bạn có thể nhanh chóng ghép chúng trong khi đang phát triển, sẽ không cần phải tự động sửa hoặc giảm bớt chúng. Bạn sẽ không cần tối ưu hóa hình ảnh mỗi khi bạn lưu dự án, v.v..
Ngay cả khi bạn thực sự cần những khẩu súng lớn vì bạn đang đẩy công việc của mình lên máy chủ dàn dựng hoặc khi bạn đang cập nhật kho lưu trữ, thời gian xây dựng là 5 giây hoặc 9 giây sẽ tạo ra nhiều sự khác biệt?
Để hoàn thiện tất cả, Grunt sẽ thêm hỗ trợ cho đường ống trong phiên bản 0,5 sắp tới, điều này sẽ tăng tốc đáng kể, biến điều này thành một điểm cần thiết.
Cộng đồng
Grunt đã tồn tại lâu hơn nhiều so với Gulp nên nó có lượng người dùng đáng kể. Trung bình Grunt hiện nhận trung bình khoảng 37.000 lượt tải xuống mỗi ngày, Gulp nhận được hơn một nửa số đó, gần mốc 23.000. Điều đó đang được nói, Gulp chỉ mới được khoảng một năm rưỡi, khiến con số đó đáng nể khi nói ít nhất.
Grunt hiện có hơn 4000 plugin trong khi Gulp có hơn 1200 plugin. Theo xu hướng của Google, nhiều người tìm kiếm những thứ liên quan đến Grunt hơn, có nhiều diễn đàn giải quyết vấn đề này và thường hỗ trợ cộng đồng nhiều hơn.
Tất nhiên Gulp đang lên và sắp tới có nghĩa là đây có khả năng thậm chí ra ngoài trong thời gian dài. Tuy nhiên, đây là một rào cản đối với một số nhà phát triển, đặc biệt là những dự án đang hoạt động dựa trên Grunt.
Tôi muốn chỉ ra rằng các cộng đồng cho cả hai là cực kỳ tốt. Theo như tôi có thể nói mối quan hệ giữa các nhà lãnh đạo trong mỗi cộng đồng là tuyệt vời, và nên làm ví dụ cho tất cả mọi người. Người tạo ra Gulp thực sự đã giúp người viết bài so sánh tốc độ cải thiện độ chính xác về thời gian dẫn đến giảm chênh lệch thời gian. Đó là những gì tôi gọi là một quý ông!
Cấu hình mã Vs
Rõ ràng đây là điểm bùng phát đối với nhiều người, nhưng thành thật mà nói, tôi không thể nhìn thấy vấn đề ở đây một cách cá nhân.
Cuộc tranh luận diễn ra như sau: Gulp là một ví dụ điển hình mã trên cấu hình có thể là một điều tốt khi cấu hình có một chút khó hiểu. Những người khác nói rằng trong khi điều này là đúng và Gulp thì dễ dàng hơn đọc, khó khăn hơn để viết bởi vì đường ống có thể hơi khó hiểu.
Trước khi tôi cân nhắc, đây là ví dụ tương tự đầu tiên trong Grunt, sau đó là Gulp:
grunt.initConfig (sass: dist: files: [src: 'dev / *. scss', Dest: '.tmp / style', mở rộng: true, ext: '.css'], autoprefixer : dist: files: [bung rộng: true, cwd: '.tmp / style', src: ', * / *. kiểu: files: ['dev / *. scss'], tác vụ: ['sass: dist', 'autoprefixer: dist']); grunt.registerTask ('mặc định', ['phong cách', 'xem']);
gulp.task ('sass', function () gulp.src ('dev / *. scss') .pipe (sass ()) .pipe (autoprefixer ()) .pipe (gulp.dest ('css / style' ));); gulp.task ('mặc định', function () gulp.run ('sass'); gulp.watch ('dev / *. scss', function () gulp.run ('sass');); );
Ý kiến của tôi là nó thực sự không quan trọng. Chắc chắn, nếu bạn đã quen với cách thứ nhất, bạn có thể cần dành thời gian để tìm ra cách thứ hai, nhưng điều này cũng ngược lại. Vì vậy, đối với tôi, “nó khó hiểu” đối số là hoàn toàn không hợp lệ. Bất kì phương pháp mới bạn học lúc đầu khó hiểu, nhưng nếu bạn dành thời gian để hiểu logic của từng thứ, tất cả sẽ phát triển ra.
Điều đó nói rằng, cá nhân tôi thích API của Gulp vì nó sạcher, và nó phản ánh cách tôi suy nghĩ kỹ hơn Grunt. Điều này là tất nhiên hoàn toàn chủ quan và hoàn toàn không phải là vấn đề với Grunt, đó chỉ là sở thích cá nhân của tôi.
Cách chọn
Tôi không nghĩ có bất kỳ câu hỏi nào về thực tế rằng cả Grunt và Gulp đều là những công cụ tuyệt vời và đã giúp mọi người tiết kiệm vô số thời gian trong nhiều năm. Grunt chậm hơn một chút bây giờ, nhưng có một cộng đồng lớn hơn nhiều. Gulp nhanh hơn, có API sạch hơn, nhưng thiếu cơ sở người dùng.
Tôi nghĩ rằng quyết định cuối cùng sẽ đi xuống tính liên tục, các plugin có sẵn và ưu tiên.
(1) Nếu bạn đã sử dụng Grunt / Gulp một thời gian và bạn hài lòng với nó, không có lý do để chuyển đổi.
(2) Nếu dự án của bạn yêu cầu bổ trợ vốn không được cung cấp bởi Gulp và bạn chưa sẵn sàng để viết một bản thân mình, bạn sẽ cần phải đi với Grunt.
(3) Nếu hai cân nhắc trên không áp dụng cho bạn, nó sẽ được ưu tiên. Tôi đề nghị thử cả hai và xem cái nào dính với bạn.
Như tôi đã nói, tôi đã chọn sử dụng Gulp vì tôi thích API sạch hơn của nó nhưng tôi hoàn toàn thoải mái khi sử dụng Grunt nếu một dự án gọi cho nó. Những gì bạn nên không phải làm là đọc rằng ông Biết tất cả nói rằng Gulp tốt hơn và chấp nhận nó. Trong khi có sự khác biệt, không có người chiến thắng rõ ràng và cả hai dự án đều có thể và sẽ cùng tồn tại. Hãy thử chúng và tạo nên tâm trí của riêng bạn.
Lưu ý: bạn cũng có thể muốn xem xét ý kiến từ những người dùng như Keith Cirkel (Chuyên gia tư vấn Javascript), người khuyên bạn nên sử dụng cũng không. Trong phần thú vị của mình Tại sao chúng ta nên ngừng sử dụng bài viết của Grunt & Gulp, anh ấy đề nghị sử dụng npm.
Đọc thêm
Có rất nhiều bài viết tuyệt vời khác về chủ đề này. Tôi chân thành muốn giới thiệu bất kỳ điều nào sau đây để đọc thêm; không bao giờ đau lòng để đọc những gì người khác nói!
- Grunt vs Gulp - Beyond the Numbers (cảm ơn đặc biệt về các ví dụ rõ ràng)
- Nuốt, Grunt, sao cũng được
- Chọn: Grunt, Gulp hoặc npm?
- Tăng tốc Gulp và Grunt
- Tại sao chúng ta nên ngừng sử dụng Grunt & Gulp
- Xây dựng Chiến tranh (sử dụng mũi tên để điều hướng)
- Không cần Grunt, hãy hít thở không khí trong lành