2009-08-13 6 views
8

Bây giờ, tôi đã quen thuộc với ngôn ngữ Scala và sẵn sàng để phát triển web. Khung duy nhất tôi gặp phải là Lift và không biết gì về nó. Làm thế nào để bạn tiếp cận phát triển web bằng cách sử dụng Scala?Làm cách nào để bắt đầu phát triển web bằng Scala?

+0

Bạn có loại trừ Nâng vì một lý do nào đó hoặc câu trả lời về Nâng có hiệu lực không? Điều này không rõ ràng. –

+0

Tôi không loại trừ Nâng. Tôi chỉ nói rằng tôi không biết nó trưởng thành như thế nào để bắt đầu sử dụng nó. Tôi muốn biết cách tiếp cận chung cho phát triển web Scala là gì? – Cory

Trả lời

4

Có ít nhất 2 khung công tác scala để phát triển web. Một, như bạn đã đề cập, là Lift.

Ngoài ra còn có Step, là một khung vi mô trong tĩnh mạch của Sinatra cho ruby. Nó có vẻ khá mát mẻ và có một DSL tốt đẹp.

Thử nghiệm hơi hơn, thân cây scalaz mới nhất có gói để xử lý các ứng dụng web. Nó có phần thiếu tài liệu và ví dụ mặc dù, và có khả năng trải qua một số thay đổi nặng nề trong vài tháng tới (tôi là một người đi làm). Nếu bạn muốn làm theo các cách cạnh chảy máu mà tôi đang nghĩ đến việc sử dụng nó, bạn có thể kiểm tra scapps. Tôi hy vọng sẽ sớm có một ứng dụng ví dụ.

+0

Bước có vẻ tuyệt vời, nhưng tôi không thể làm cho nó hoạt động với Scala 2.8. –

2

Tôi đã sử dụng cả hai WicketTapestry để xây dựng các ứng dụng web trong Scala.

Lý do chính tại sao tôi không đi với, nói, Lift là bởi vì các nhà phát triển của chúng tôi là khá kinh nghiệm với hai khuôn khổ và do đó việc chuyển đổi sang Scala sẽ dễ dàng hơn cho họ.

Tất nhiên, có một số điều cần lưu ý khi sử dụng một khuôn khổ web Java với Scala:

  • lớp Collection. Các bộ sưu tập Scala giàu hơn nhiều so với các đối tác Java của chúng, nhưng hầu hết các khung công tác Java không thể sử dụng chúng. (Rõ ràng một cái gì đó để khắc phục điều này sẽ được giới thiệu với Scala 2.8)
  • Sự cố tương thích không thường xuyên, ví dụ Tapestry 5.1 không chấp nhận các phương pháp không yêu cầu trong các lớp mô-đun, nhưng Scala ngầm thêm $tag() vào mọi lớp. Điều này sẽ khiến Tapestry từ chối lớp học.
+0

Bạn gặp vấn đề '$ tag' như thế nào? Bằng cách không sử dụng Tapestry 5.1? –

+0

Tôi chỉ viết rằng một lớp trong Java :) Đây là một giải pháp hackish, nhưng dường như Scala 2.8 sẽ gỡ bỏ phương thức thẻ $ anyway và sau đó nó sẽ không còn là vấn đề nữa. – andri

+0

Mẹo: Bạn có thể sử dụng các bộ sưu tập Java trong Scala và các bộ sưu tập Scala trong Java, với 2.7.x, với http://github.com/jorgeortiz85/scala-javautils/tree/master –

1

Tôi đã thành công với Struts 2 và Scala. Chú thích @BeanInfo và @BeanProperty trong gói scala.reflect có ích để truy cập thuộc tính.

1

Tôi tin rằng Lift hiện là khuôn khổ web hàng đầu nếu bạn muốn viết ứng dụng của mình trong Scala.

2

Sử dụng Lift để phát triển web tại Scala có một số mặt tích cực:

  • hoạt động, hỗ trợ, cộng đồng đáp ứng;
  • khuôn khổ được thiết kế cho Scala thay vì xảy ra tương thích với Scala;
  • đã có nhiều nỗ lực đầu tư vào nó bởi nhiều cộng tác viên.

Các âm:

  • có thể là một thách thức nếu (như tôi) bạn đang di chuyển từ các khuôn khổ như Struts;
  • phần lớn sự phản hồi đối với yêu cầu của người dùng đang diễn ra trong 1.1-SNAPSHOT so với các bản phát hành cụ thể, có nghĩa là bạn đang mã hóa chống lại mục tiêu di chuyển. Không phải là một vấn đề lớn trong thực tế, nhưng tôi có thể thấy điều này đang gây bất ổn cho một số người. Rõ ràng điểm đạn này sẽ không già đi một lần 1.1 được phát hành.

Như Nick Partridge đã chỉ ra trong câu trả lời của ông, có các khuôn khổ khác. Vì tôi không biết bạn muốn gì hoặc mong đợi một khung công tác nào, tôi chỉ có thể chỉ cho bạn một số tài nguyên về Lift mà có thể giúp bạn quyết định:

Bạn cũng có thể muốn xem xét động lực và ảnh hưởng của Lift ("phiên cao cấp của Seaside và an ninh, Rails nhanh flash-to-bang, Django 'nhiều hơn chỉ CRUD được bao gồm', thiết kế thân thiện với Wicket templating ....") được liệt kê trên http://liftweb.net/ để xem họ phù hợp với những gì bạn muốn.