Cạm bẫy trong Khung Grails [đã đóng]


12

Một số vấn đề / cạm bẫy lớn nhất khi sử dụng khung Grails là gì? Bây giờ tôi đang học khung này và tôi thực sự thích nó, nhưng tôi cần biết những vấn đề chính tôi có thể gặp phải khi sử dụng nó và làm thế nào để tránh chúng.

Câu trả lời:


13

IMO, phần yếu nhất của Grails là thiếu chức năng di chuyển mô hình dữ liệu (di chuyển ala Rails ActiveRecord). Có một số plugin của bên thứ 3 với các mức chất lượng khác nhau, nhưng không có gì chính thức.

Tuy nhiên, tôi mới phát hiện ra rằng Fluibase đã được mở rộng và biến thành plugin di chuyển cơ sở dữ liệu và điều đó có vẻ đầy hứa hẹn: http://www.grails.org/plugin/database-migration

Về mặt tích cực, đối với tất cả mọi thứ tôi đã sử dụng Grails cho (các ứng dụng web đơn giản đến vừa phải phức tạp), nó hầu như tuyệt vời. Tôi muốn nói rằng tôi có thể tăng năng suất phát triển khoảng gấp 2 đến 3 lần so với ngăn xếp Java / Hibernate / Spring / Spring.


1
+1. Tôi đã chọn Grails để tiếp tục làm việc trên ứng dụng Struts 1 được viết kém. Phần khó khăn duy nhất đối với tôi là chia sẻ cookie trên hai servlet. Nếu không, nó đã là một chiến thắng hoàn toàn.
kevin cline

5

Chạy các bài kiểm tra tích hợp rất chậm vì môi trường grails cần có thời gian để tải và chỉ cần một phần nhỏ thời gian đó để chạy thử nghiệm. Điều này sẽ tăng thời gian quay vòng khi bạn đang phát triển mã ghi vào db. Vấn đề khác đã được Kaleb đề cập trong câu trả lời của ông (về việc di chuyển dữ liệu). Tôi cũng thấy rằng bất cứ khi nào tôi bị mắc kẹt, không có diễn đàn nào tôi có thể nhận được sự giúp đỡ bị giới hạn khi so sánh với sự giúp đỡ dành cho ngủ đông và mùa xuân.


Chạy thử nghiệm: chỉ cần chạy chúng trong chế độ tương tác - theo cách này bạn sẽ tránh được việc khởi động
ndmueller

3
diễn đàn: kinh nghiệm của tôi là tôi nhận được câu trả lời cho tất cả các câu hỏi của mình trong vòng 4 giờ trên Stackoverflow - chủ yếu là trực tiếp từ các ủy viên của grails ...
ndmueller

3

Một cạm bẫy hiện tại đối với việc sử dụng khung là sự tích hợp kém hiện tại của nó vào hệ thống xây dựng lớp. Hiện tại, nó sử dụng một plugin để thực hiện việc này, nhưng chính plugin đã phá vỡ các phiên bản mới của grails (như tôi gần đây đã cố gắng sử dụng và sửa chữa). Họ có kế hoạch khắc phục vấn đề này trong phiên bản tương lai bằng cách tạo ra một phần của hệ thống xây dựng grails (thay vì gant), nhưng việc thiếu một hệ thống xây dựng mà bạn có thể dễ dàng tích hợp là một vấn đề. Tuy nhiên, cạm bẫy này sẽ biến mất trong tương lai.

Một cạm bẫy khác là bản chất năng động của ngôn ngữ. Bạn thực sự PHẢI viết bài kiểm tra cho tất cả mọi thứ. Hầu hết các lỗi trong mã của bạn được tìm thấy trong thời gian chạy. Đó thực sự là một cách nghĩ khác về một chương trình. Dựa vào trình biên dịch để tìm một số lỗi của bạn không xảy ra với khung này. Tôi không nói nó tệ, nó chỉ khác (và thật đáng tiếc nếu bạn không quen với nó).


2

Tôi thích toàn bộ khái niệm grails / Groovy, mặc dù cá nhân tôi đã sử dụng Groovy đơn giản hơn grails Tôi nghĩ rằng cả hai đều tuyệt vời.

Nhược điểm duy nhất (theo kinh nghiệm cá nhân của tôi) là hỗ trợ IDE kém. Tôi đã nghĩ (khá lạc quan) rằng SpringSource đã có một bản dựng Eclipse tuyệt vời và là những người ủng hộ mạnh mẽ cho Grails rằng đây sẽ là con đường để đi. Các plugin Groovy rất khó cài đặt, quá trình hoàn tất mã không ổn định (luôn là vấn đề với các ngôn ngữ động nhưng cho tôi lựa chọn 60 phương thức không hữu ích), việc gỡ lỗi có thể rất tẻ nhạt vì nó thường yêu cầu bước qua mã nội bộ của Groovy, và, trong bản phát hành mới nhất, cài đặt plugin Groovy phá vỡ trình gỡ lỗi Java!


0

Hiện tại nó có hỗ trợ iffy cho các lớp trừu tượng. Chẳng hạn, bạn không thể liên kết một danh sách các triển khai thành một List<T>đối tượng trong một đối tượng lệnh. Cấp, điều này chủ yếu gây phiền nhiễu bởi vì tôi đã quen với nó một cách kỳ diệu ràng buộc mọi thứ khác! : D

Nói chung, nó vẫn chỉ là loại "xanh"; cuối cùng bạn gặp phải những hạn chế và lỗi nhỏ. Nó thực sự đến một chặng đường dài trong một vài năm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.