มีกรอบเว็บของ Scala อะไรบ้าง? [ปิด]


196

ฉันเพิ่งเริ่มเรียนรู้สกาล่าและสิ่งแรกที่ฉันจะนำไปใช้คือเว็บแอปพลิเคชั่นขนาดเล็ก ฉันใช้Erlangเมื่อปีที่แล้วเพื่อใช้ซอฟต์แวร์ฝั่งเซิร์ฟเวอร์ แต่ฉันไม่เคยเขียนเว็บแอปพลิเคชันมาก่อน มันจะเป็นประสบการณ์ที่ยอดเยี่ยม

มีเว็บกรอบสำหรับ Scala ยกเว้นสำหรับลิฟท์ ?

อย่าเข้าใจฉันเลยลิฟท์ดูยอดเยี่ยมมาก ฉันแค่อยากรู้ว่ามีกรอบจำนวนเท่าใดเพื่อที่ฉันจะได้เลือกระหว่างพวกเขา เป็นเรื่องที่ดีเสมอที่จะมีทางเลือก แต่สิ่งเดียวที่ฉันพบคือลิฟต์

คำตอบ:


77

ฉันสนใจใน Scala มาก แต่ฉันยังไม่ได้ใช้ดังนั้นด้วยข้อแม้นั้นกรอบที่ฉันรู้ว่าไม่ได้กล่าวถึงในคำตอบของ HRJ (Lift, Sweet, Slinky) คือ:


3
น่าสนใจ ลิฟท์เป็นสิ่งที่มีการเผยแพร่มากที่สุด: เป็นเรื่องแปลกที่คุณไม่คุ้นเคย
mcherm

13
หมายเหตุข้อความ "... ฉันรู้และไม่เอ่ยถึงโดย HRJ ... " HRJ พูดถึงการยกแล้ว ขอบคุณ
bn

6
playมีเวอร์ชั่นสกาล่าด้วย
islon

1
/ ฉันถอนหายใจ <กลิ่น> ขั้นตอนเป็นชื่อที่ดีอย่างสมบูรณ์ทำไมเปลี่ยนเป็น Scalatra Express.js ไม่ได้ชื่อว่า Nodatra กระติกน้ำ (ไม่เหมือนกัน แต่ใกล้เคียง) ไม่ได้เรียกว่า Pythatra </rant>
Dave Jensen

1
@ djensen47 เป็นอิสระในการพัฒนาของคุณเอง;)
BAR

45

ฉันเขียนโพสต์บล็อกเกี่ยวกับเรื่องนี้

เพื่อสรุปตัวเลือกบางอย่างคือ:

  1. ยก
  2. หวาน
  3. Slinky

ในที่สุดฉันก็พบว่าไม่มีสิ่งใดที่เหมาะกับฉันและพัฒนา "กรอบ" ตัวเล็ก ๆ ของฉัน (ยังไม่ได้เป็นโอเพ่นซอร์ส)


35

ฉันชอบลิฟต์ ;-)

Play เป็นทางเลือกที่สองของฉันสำหรับกรอบเว็บที่เป็นมิตรกับ Scala

ประตูเป็นตัวเลือกที่สามของฉัน


46
เดวิดคุณรู้จักลิฟท์ได้อย่างไร ;-)
Derek Mahar

6
@Derek Mahar Inside job ฉันเชื่อว่า ;-)

5
ดูเหมือนว่าคุณมีส่วนเกี่ยวข้องกับลิฟท์ โปรดทราบว่านโยบายการส่งเสริมตนเองของเรากำหนดให้คุณต้องเปิดเผยข้อมูลนี้ในคำตอบเช่นนี้
josliber

35

ต่อไปนี้เป็นการดัมพ์ของเฟรมเวิร์ก ไม่ได้หมายความว่าฉันใช้พวกเขาจริง:

  • Coeus กรอบเว็บ MVC แบบดั้งเดิมสำหรับ Scala

  • ที่ไม่ได้กรอง ชุดเครื่องมือสำหรับการให้บริการคำขอ HTTP ใน Scala

  • Uniscala หินแกรนิต

  • Gardel

  • Mondo

  • Amore พอร์ต Scala ของกรอบเว็บ Ruby Sinatra

  • เครื่องชั่ง XML วิธีการที่ยืดหยุ่นในการจัดการ XML และวิธีการโต้ตอบกับ XML ที่ง่ายขึ้น

  • เข็มขัด อินเทอร์เฟซที่คล้ายแร็คสำหรับเว็บแอปพลิเคชันที่สร้างขึ้นบน Scalaz-HTTP

  • ตรงไปตรงมา เว็บแอปพลิเคชันDSLสร้างขึ้นบน Scalaz / Belt

  • MixedBits เฟรมเวิร์กสำหรับภาษา Scala progamming เพื่อช่วยสร้างเว็บไซต์

  • เครื่องหมายบนตัวอักษรโรมัน รวมโครงการโอเพนซอร์ซที่มีในตัวเองหลายตัวไว้สำหรับการพัฒนาแอปพลิเคชันโดยใช้ภาษาโปรแกรม Scala

  • Scala Webmachine Webmachine ของ Port of Basho ใน Scala ซึ่งเป็นระบบที่ใช้ REST สำหรับการสร้างเว็บแอปพลิเคชัน

  • คนขว้างลูก กรอบงานเว็บสกาล่าพร้อมใช้งานได้หลายช่องทาง


1
ตัวกรองมีสไลด์โชว์ที่ดีที่นี่: ลิงก์
Rick-777

ฉันเพิ่ม bowlerframework (เพิ่งพบบนเว็บ)
Adam Gent



8

ฉันพบว่าตัวกรองไม่น่าสนใจมากhttps://github.com/unfiltered/unfiltered https://github.com/unfiltered/unfiltered

มันถูกกล่าวถึงในรายการของ IttayD

นี่คืองานนำเสนอเกี่ยวกับมัน http://unfiltered.lessis.me/#0 และวิดีโอ http://code.technically.us/post/942531598/doug-tangren-present-the-unfiltered-toolkit-for

นอกจากนี้ที่นี่ยังมีบทความที่มีข้อมูลเพิ่มเติมhttp://code.technically.us/post/998251172/holding-the-parameter


1
ที่ไม่กรองนั้นยอดเยี่ยมมาก มันสะอาดและใช้งานได้จริง แต่ไม่ซับซ้อนเกินไป
thatismatt

8

จะต้องมีการบันทึกไว้ว่ายังมีความสนใจอย่างมากในประตูและสกาล่าสกาล่าประตูเหมาะกับสกาล่าอย่างน่าประหลาดใจ หากคุณต้องการใช้ประโยชน์จากโครงการประตูที่โตเต็มที่และระบบนิเวศ (ส่วนขยาย) รวมถึงไวยากรณ์ที่กระชับและความได้เปรียบด้านการผลิตของ Scala สิ่งนี้อาจเหมาะสำหรับคุณ!

ดูสิ่งนี้ด้วย:

  1. โพรเซส

  2. การเสนอ

  3. ประสบการณ์บางอย่างกับ Wicket และ Scala

  4. ประกาศที่มีการอ้างอิงถึงโครงการสำหรับรหัสกาวเพื่อผูกสกาล่าการปิดแบบจำลอง


7

เล่นสวยหวาน

ตอนนี้พร้อมการผลิต มันประกอบไปด้วย: เทมเพลตเฟรมเวิร์กการโหลดไฟล์ต้นฉบับซ้ำอัตโนมัติเมื่อปลอดภัยระบบแอคชั่นคอมโพสิตแองก้าสุดยอด ฯลฯ

เป็นส่วนหนึ่งของTypesafe กอง

หลังจากใช้มันสำหรับสองโครงการฉันสามารถพูดได้ว่ามันทำงานได้อย่างราบรื่นและมันควรจะเป็นสิ่งที่ควรพิจารณาในครั้งต่อไปที่คุณต้องการเรียนรู้กรอบเว็บใหม่


5

ฉันมักจะใช้ JAX-RS โดยใช้Jersey (คุณสามารถเขียน beans ทรัพยากรที่ดีใน Scala, Java หรือ Groovy) เพื่อเขียนโปรแกรมเว็บ RESTul จากนั้นฉันก็ใช้Scalateสำหรับการแสดงผลมุมมองโดยใช้หนึ่งในเทมเพลตภาษาต่างๆ ( JADE , Scaml , Ssp (หน้าเซิร์ฟเวอร์ Scala), หนวดฯลฯ )


ฉันสนใจที่จะรู้ว่า IDE ที่คุณใช้ในการพัฒนาโครงงาน Scalate คืออะไร?
Ali Shakiba

1
ฉันใช้ IntelliJ สำหรับการพัฒนาทั้งหมดของฉัน
James Strachan

4

มีกรอบงานเว็บใหม่ที่เรียกว่าScala เว็บเพจหน้าเว็บสกาล่าจากเว็บไซต์:

กลุ่มเป้าหมาย

เฟรมเวิร์กเว็บ Scala Pages มีแนวโน้มที่จะดึงดูดผู้เขียนโปรแกรมเว็บที่มาจากพื้นหลัง Java และต้องการตั้งโปรแกรมเว็บแอปพลิเคชันใน Scala ความสำคัญอยู่ที่ OOP แทนที่จะเป็นโปรแกรมมิง

ลักษณะและคุณสมบัติ

  • ยึดตามกระบวนทัศน์โมเดล-view-controller
  • เครื่องมือเทมเพลตข้อความ
  • ไวยากรณ์อย่างง่าย: $variableและ<?scp-instruction?>
  • การตรวจจับการเข้ารหัส / เนื้อหาสามารถจัดการการเข้ารหัสข้อความสากล
  • ตัวอย่างแทนแท็กที่กำหนดเอง
  • การเขียน URL ใหม่

4

Prikrutil ฉันคิดว่าเราอยู่บนเรือลำเดียวกัน ฉันมาที่สกาล่าจากแอร์ลัง ฉันชอบไนโตรเจนมากฉันจึงตัดสินใจสร้างเว็บสกาล่าที่ได้รับแรงบันดาลใจจากมัน

ลองดูที่Xitrum มันเป็นหมอค่อนข้างกว้างขวาง จาก README:

Xitrum เป็นเฟรมเวิร์กเว็บและเว็บเซิร์ฟเวอร์ Scala แบบ async และคลัสเตอร์บน Netty and Hazelcast:

  • มันเติมเต็มช่องว่างระหว่าง Scalatra และ Lift: มีประสิทธิภาพมากกว่า Scalatra และใช้งานง่ายกว่า Lift คุณสามารถสร้างทั้ง RESTful API และ Postbacks ได้อย่างง่ายดาย Xitrum เป็นคอนโทรลเลอร์รุ่นแรกเช่น Scalatra ไม่ใช่รุ่นแรกที่ดูเช่น Lift
  • คำอธิบายประกอบจะใช้สำหรับเส้นทาง URL ในจิตวิญญาณของ JAX-RS คุณไม่จำเป็นต้องประกาศเส้นทางทั้งหมดในที่เดียว
  • Typesafe ในจิตวิญญาณของสกาล่า
  • Async ในจิตวิญญาณของ Netty
  • การประชุมสามารถจัดเก็บในคุกกี้หรือ Hazelcast แบบกลุ่ม
  • การตรวจสอบ jQuery ถูกรวมเข้ากับฝั่งเบราว์เซอร์และการตรวจสอบฝั่งเซิร์ฟเวอร์ i18n โดยใช้ GNU gettext ซึ่งหมายความว่าไม่เหมือนโซลูชันอื่น ๆ ส่วนใหญ่รองรับรูปแบบเอกพจน์และพหูพจน์
  • รับเงื่อนไขโดยใช้ ETag

Hazelcast ยังให้:

  • แคชระหว่างดำเนินการและคลัสเตอร์คุณไม่จำเป็นต้องใช้เซิร์ฟเวอร์แคชแยกต่างหาก
  • Comet ที่อยู่ระหว่างดำเนินการและทำคลัสเตอร์คุณสามารถปรับ Comet เป็นเว็บเซิร์ฟเวอร์หลายเครื่อง

ติดตามการสอนเพื่อเริ่มต้นอย่างรวดเร็ว


3

นอกจากนี้ยังมี Pinky ซึ่งเคยเป็น bitbucket แต่ถูกถ่ายโอนไปยังGitHub GitHub

โดยวิธีการที่ GitHub เป็นสถานที่ที่ดีในการค้นหาโครงการ Scala เนื่องจากมีจำนวนมากถูกวางไว้ที่นั่น


3

ฉันต้องการเพิ่มความพยายามของตัวเองลงในรายการนี้ คุณสามารถหาข้อมูลเพิ่มเติมได้ที่นี่:

กรอบ brzy

มันอยู่ในช่วงเริ่มพัฒนาและฉันก็ยังคงพัฒนามันอย่างจริงจัง มันมีคุณสมบัติเช่น:

  • มุ่งเน้นไปที่ความเรียบง่ายและการขยาย
  • เครื่องมือสร้างแบบบูรณาการ
  • การออกแบบแบบแยกส่วน; บางโมดูลเริ่มต้นรวมถึงการรองรับ scalate, email, jms, jpa, squeryl, Cassandra, cron services และอื่น ๆ
  • ตัวควบคุมและการกระทำที่สงบเรียบง่าย

ข้อเสนอแนะใด ๆ และทั้งหมดชื่นชมมาก

UPDATE: 2011-09-078 ฉันเพิ่งโพสต์การอัปเดตครั้งใหญ่เป็นเวอร์ชั่น 0.9.1 มีข้อมูลเพิ่มเติมที่http://brzy.orgซึ่งรวมถึง screencast


1

ทั้ง Sweet และ Slinky ดูเหมือนจะไร้ความกังวลประมาณหนึ่งปี Sweet Maven repo sweetsoftwaredesign.com นั้นตายแล้วดังนั้นจึงไม่มีวิธีดาวน์โหลดการอ้างอิง


1

หมายเหตุ: Spiffy ล้าสมัยแล้ว

< ปลั๊ก >

สวยงาม :

  • เขียนใน Scala
  • ใช้ห้องสมุดและนักแสดง Akka ที่ยอดเยี่ยม
  • ใช้ servlet API 3.0 สำหรับการจัดการคำขอแบบอะซิงโครนัส
  • เป็นแบบแยกส่วน
  • ใช้ DSL เพื่อลดรหัสที่คุณไม่ต้องการ
  • รองรับ Scalate และ Freemarker สำหรับการสร้างเทมเพลต

Spiffy เป็นเว็บเฟรมเวิร์กที่ใช้ Scala, Akka (การใช้งาน Scala นักแสดง) และ Java Servlet 3.0 API มันใช้อินเทอร์เฟซแบบ async และมีจุดประสงค์เพื่อจัดเตรียมสภาพแวดล้อมแบบขนานและปรับขนาดได้สำหรับแอปพลิเคชันเว็บ ส่วนประกอบต่าง ๆ ของ Spiffy นั้นขึ้นอยู่กับแนวคิดที่ว่าพวกเขาจำเป็นต้องเป็นโมดูลแบบเรียบง่ายอิสระที่ทำงานจำนวนเล็กน้อยได้อย่างรวดเร็วและส่งคำขอไปยังส่วนประกอบถัดไปในไปป์ไลน์ หลังจากคอมโพเนนต์สุดท้ายเสร็จสิ้นการประมวลผลคำขอจะส่งสัญญาณ servlet container โดย "ทำตามคำขอ" และส่งกลับไปยังไคลเอนต์

https://github.com/mardambey/spiffy

< / ปลั๊ก >


0

นอกจากนี้คุณยังสามารถลองบริบท มันถูกออกแบบมาให้เป็น Java-framework แต่ฉันใช้มันกับ Scala ได้อย่างประสบความสำเร็จ มันเป็นองค์ประกอบตามกรอบและมีคุณสมบัติที่คล้ายกันเป็น Lift หรือ Tapestry


0

ฉันได้เจอคำถามของคุณไม่กี่สัปดาห์ที่กลับมา แต่หลังจากนั้นยังได้เรียนรู้เกี่ยวกับหมวก นี่เป็นกรอบงานที่ดีและเรียบง่ายซึ่งง่ายต่อการเรียนรู้และมีเอกสารประกอบที่ดีพอสมควร

นอกจากนี้มันยังใช้งานง่าย แต่ก็อ้างว่าทำงานได้ดีกับห้องสมุดอื่น ๆ และให้คุณสามารถใช้งานสิ่งต่างๆได้ตามต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.