Grails (ramka) - Grails (framework)

Grails
Grails logo.png
Tuzuvchi (lar)Greem Rocher
Dastlabki chiqarilish2005 yil oktyabr
Barqaror chiqish
4.0.2 / 2020 yil 21-fevral; 9 oy oldin (2020-02-21)
OmborGrails ombori
YozilganGroovy
Operatsion tizimO'zaro faoliyat platforma
PlatformaO'zaro faoliyat platforma (JVM )
TuriVeb-dastur doirasi
LitsenziyaApache litsenziyasi 2.0
Veb-saytdonalar.org

Grails bu ochiq manba veb-dastur doirasi ishlatadigan Apache Groovy dasturlash tili (bu o'z navbatida ga asoslangan Java platformasi ). "Ga rioya qilish orqali yuqori mahsuldorlik ramzi bo'lishi kerak.shartnoma bo'yicha kodlash "paradigma, mustaqil rivojlanish muhiti va konfiguratsiya detallarining katta qismini ishlab chiquvchidan yashirish.[iqtibos kerak ]

Grails ilgari "Groovy on Rails" nomi bilan tanilgan; 2006 yil mart oyida ushbu so'rovga binoan ushbu nom olib tashlangan Devid Xaynaymer Xansson, asoschisi Ruby on Rails ramka.[1] Ish 2005 yil iyul oyida boshlandi, 2006 yil 29 martda 0,1 versiyasi va 2008 yil 18 fevralda 1,0 chiqishi e'lon qilindi.

Umumiy nuqtai

Grails bir qator maqsadlarni ishlab chiqish uchun ishlab chiqilgan:

  • Java platformasi uchun veb-ramkani taqdim eting.
  • Kabi mavjud Java texnologiyalaridan qayta foydalaning Kutish holati va Bahor bitta interfeys ostida
  • Doimiy rivojlanish tizimini taklif eting.
  • Ramkaning asosiy qismlari uchun hujjatlarni taklif eting:
    • The Qat'iylik ramka.
    • GSP (Groovy Server Sahifalari) dan foydalangan shablonlar.
    • Veb-sahifa komponentlarini yaratish uchun dinamik yorliqli kutubxonalar.
    • Moslashtiriladigan va kengaytiriladigan Ayaks qo'llab-quvvatlash.
  • Ramkani namoyish etadigan namunaviy dasturlarni taqdim eting.
  • Veb-server va resurslarni avtomatik ravishda qayta yuklashni o'z ichiga olgan to'liq ishlab chiqish rejimini taqdim eting.

Yuqori mahsuldorlik

Grails an'anaviy Java veb-ramkalaridan ajralib turadigan uchta xususiyatga ega:

  • Yo'q XML konfiguratsiya
  • Ishlatishga tayyor muhit
  • Orqali mavjud bo'lgan funktsionallik aralashmalar

XML konfiguratsiyasi yo'q

Java-da veb-ilovalarni yaratish an'anaviy ravishda muhitni va ramkalarni rivojlanishning boshida va rivojlanish vaqtida sozlashni o'z ichiga oladi. Ushbu konfiguratsiya tez-tez konfiguratsiyani engillashtirish va dastur kodiga konfiguratsiyani kiritmaslik uchun XML fayllarida tashqi ko'rinishga ega.

Dastlab XML mamnuniyat bilan kutib olindi, chunki u dasturlarni sozlash uchun ko'proq izchillikni ta'minladi. Biroq, so'nggi yillarda, XML konfiguratsiya uchun juda yaxshi bo'lsa-da, atrof-muhitni o'rnatish zerikarli bo'lishi mumkinligi aniq bo'ldi. Bu ishlab chiqaruvchilar dastur kengayishi bilan ramka konfiguratsiyasini tushunish va saqlashga vaqt sarflagani uchun samaradorlikni pasayishi mumkin. XML konfiguratsiyasidan foydalanadigan dasturlarda funksiyalarni qo'shish yoki o'zgartirish o'zgarish jarayoniga qo'shimcha qadam qo'shadi, bu esa samaradorlikni pasaytiradi va butun jarayonning tezkorligini pasaytiradi.

Grails XML fayllariga konfiguratsiya qo'shish zaruratini yo'q qiladi. Buning o'rniga, ramka Grails-ga asoslangan dasturlarning kodini tekshirishda bir qator qoidalar yoki konventsiyalardan foydalanadi. Masalan, tugaydigan sinf nomi Nazoratchi (masalan BookController) veb-tekshiruvi hisoblanadi.

Ishlatishga tayyor muhit

An'anaviy Java veb-vositalaridan foydalanganda, ishlab chiquvchilar uchun zerikarli bo'lishi mumkin bo'lgan ishlab chiqarish birliklarini yig'ish kerak. Grails ishlab chiquvchilarni darhol boshlash uchun veb-serverni o'z ichiga olgan rivojlanish muhiti bilan ta'minlaydi. Barcha kerakli kutubxonalar Grails tarqatish tarkibiga kiradi va Grails avtomatik ravishda Java veb-muhitini tarqatish uchun tayyorlaydi.

Aralashmalar orqali mavjud bo'lgan funktsionallik

Grails bir necha sinflarda dinamik usullarni miksinlar orqali namoyish etadi. Mixin - bu sinfga dinamik ravishda qo'shiladigan usuldir, go'yoki funksionallik dasturga qo'shilgandek.

Ushbu dinamik usullar ishlab chiquvchilarga interfeyslarni amalga oshirmasdan yoki asosiy sinflarni kengaytirmasdan operatsiyalarni bajarishga imkon beradi. Grails sinf turiga asoslangan dinamik usullarni taqdim etadi. Masalan, domen sinflarida saqlash, o'chirish va topish kabi operatsiyalarni avtomatlashtirish usullari mavjud

Veb-ramka

Grails veb-ramkasi quyidagilarga muvofiq ishlab chiqilgan MVC paradigma.

Nazoratchilar

Grails veb-sahifalarning xatti-harakatlarini amalga oshirish uchun kontrollerlardan foydalanadi. Quyida tekshirgichning namunasi keltirilgan:

sinf BookController {    def ro'yxat() {        [ kitoblar: Kitob.ro'yxat() ]    }}

Yuqoridagi tekshirgichda a mavjud ro'yxat qaytaradigan harakat model ma'lumotlar bazasidagi barcha kitoblarni o'z ichiga olgan. Ushbu tekshirgichni yaratish uchun donalar buyrug'i quyida ko'rsatilganidek ishlatiladi:

grails yaratish-kontroller Kitobi

Ushbu buyruq grails-app / controller Grails loyihasining katalogi. Nazoratchilar sinfini yaratish uni Grails tomonidan tan olinishi uchun etarli. The ro'yxat harakat xaritalari http: // localhost: 8080 / book / list ishlab chiqish rejimida.

Ko'rishlar

Grails qo'llab-quvvatlaydi JSP va GSP. Quyidagi misolda GSP-da yozilgan ko'rinish ko'rsatilgan bo'lib, unda yuqoridagi tekshirgich tomonidan tayyorlangan modeldagi kitoblar keltirilgan:

<html>  <head>    <title>Bizning kitoblarimiz</title>  </head>  <body>    <ul>       = ichida"$ {books}">        <li>$ {it.title} ($ {it.author.name})</li>      </g:each>    </ul>  </body></html>

Ushbu ko'rinish quyidagicha saqlanishi kerak grails-app / views / book / list.gsp Grails loyihasining. Ushbu joylashuv xaritalarni xaritada BookController va ro'yxat harakat. Faylni ushbu joyga joylashtirish Grails tomonidan tan olinishi uchun etarli.

Shuningdek, a GSP yorlig'i uchun ma'lumotnoma mavjud

Dinamik yorliq kutubxonalari

Grails juda ko'p sonni beradi kutubxonalarni yorliqlash qutidan tashqarida. Shu bilan birga siz o'zingizning yorliq kutubxonalaringizni osongina yaratishingiz va qayta ishlatishingiz mumkin:[2]

sinf ApplicationTagLib {    def formatDate = { attrs, tanasi ->        chiqib << yangi java.matn.SimpleDateFormat(attrs.format).format(attrs.sana)    }}

The formatDate Yuqoridagi formatlar kutubxonasi a java.util.Date e'tiroz Ip. Ushbu yorliq kutubxonasi ga qo'shilishi kerak grails-app / taglib / ApplicationTagLib.groovy fayl yoki bilan tugaydigan fayl TagLib.groovy ichida grails-app / taglib katalog.

Quyida GSP faylidan parcha keltirilgan formatDate teglar kutubxonasi:

<g:formatDate format="yyyyMMdd" date="${myDate}"/>

GSP-da dinamik yorliqlar kutubxonasidan foydalanish uchun import teglaridan foydalanish shart emas. Dinamik yorliq kutubxonalarida ham foydalanish mumkin JSP fayllar bo'lsa-da, bu biroz ko'proq ishni talab qiladi. [1]

Qat'iylik

Model

Grails-dagi domen modeli ma'lumotlar bazasi yordamida saqlanib qoladi GORM (Grails Object Relational Maping). Domen sinflari grails-app / domen katalogi yordamida yaratilishi mumkin donalar quyida ko'rsatilgandek buyruq:

domen sinfidagi kitoblar yaratish

Ushbu buyruq domen sinfining nomini so'raydi va tegishli faylni yaratadi. Kodi ostida Kitob sinf ko'rsatilgan:

sinf Kitob {    Ip sarlavha    Shaxs muallif}

Ushbu sinfni yaratish Grailsning qat'iyatliligi uchun uni boshqarishni talab qiladigan narsa. Grails 0.3 bilan GORM yaxshilandi va masalan. xususiyatlari identifikatori va versiyasining o'zi domen sinfiga, agar ular mavjud bo'lmasa qo'shiladi. Id xususiyati mos keladigan jadvalning asosiy kaliti sifatida ishlatiladi. Versiya xususiyati optimistik qulflash uchun ishlatiladi.

Usullari

Agar sinf domen sinfi, ya'ni GORM tomonidan boshqarilsa, deb ta'riflanganda, sinf misollarini davom ettirishga yordam beradigan usullar dinamik ravishda qo'shiladi. [2]

Dinamik misol usullari

The saqlash () usuli ob'ektni ma'lumotlar bazasiga saqlaydi:

def kitob = yangi Kitob(sarlavha:"Da Vinchi kodi", muallif:Muallif.findByName("Dan Braun"))kitob.saqlash()

The o'chirish () usuli ma'lumotlar bazasidan ob'ektni o'chiradi:

def kitob = Kitob.findByTitle("Da Vinchi kodi")kitob.o'chirish()

The yangilash () usuli ma'lumotlar bazasidan ob'ekt holatini yangilaydi:

def kitob = Kitob.findByTitle("Da Vinchi kodi")kitob.yangilang()

The identifikator () usuli ma'lumotlar bazasidan tayinlangan ob'ekt identifikatorini oladi:

def kitob = Kitob.findByTitle("Da Vinchi kodi")def id = kitob.identifikator()

Dinamik statik (klass) usullar

The hisoblash () usuli ma'lum bir sinf uchun ma'lumotlar bazasidagi yozuvlar sonini qaytaradi:

def bookCount = Kitob.hisoblash()

The mavjud () ma'lumotlar bazasida berilgan identifikatorga ega ob'ekt mavjud bo'lsa, usul true qiymatini qaytaradi:

def mavjud = Kitob.mavjud(1)

The topish () usuli ma'lumotlar bazasidan birinchi ob'ektni ob'ekt so'rovlari bayonoti asosida qaytaradi:

def kitob = Kitob.topmoq("b kitobidan bu erda b.title =?", [ "Da Vinchi kodi" ])

So'rov sintaksisining hozirda kutish holati ekanligini unutmang HQL.

The findAll () usuli ma'lumotlar bazasida mavjud bo'lgan barcha ob'ektlarni qaytaradi:

def kitoblar = Kitob.findAll()

The findAll () usuli shuningdek ob'ektlar ro'yxatini qaytarish uchun ob'ekt so'rovlari bayonotini qabul qilishi mumkin:

def kitoblar = Kitob.findAll("kitobdan")

The findBy * () usullari ma'lumotlar bazasidan ma'lum bir naqshga mos keladigan birinchi ob'ektni qaytaradi:

def kitob = Kitob.findByTitle("Da Vinchi kodi")

Shuningdek:

def kitob = Kitob.findByTitleLike("% Da Vinchi%")

The findAllBy * () ma'lumotlar bazasidan ma'lum bir naqshga mos keladigan ob'ektlar ro'yxatini qaytarish usullari:

def kitoblar = Kitob.findAllByTitleLike("%")

The findWhere * () usullari ma'lumotlar bazasidan nomlangan parametrlar to'plamiga mos keladigan birinchi ob'ektni qaytaradi:

def kitob = Kitob.qaerda(sarlavha:"Da Vinchi kodi")

Iskala

Grails qo'llab-quvvatlaydi iskala qo'llab quvvatlamoq CRUD operatsiyalar (Yaratish, o'qish, yangilash, o'chirish). Har qanday domen sinfini quyida ko'rsatilgandek iskala boshqaruvchisi yaratish orqali qurish mumkin:

sinf BookController {    statik iskala = to'g'ri}

Ushbu sinfni yaratish orqali siz CRUD operatsiyalarini bajarishingiz mumkin http: // localhost: 8080 / kitob. Bu BookController Book domen sinfi bilan bir xil nomlash qoidalariga amal qilganligi sababli ishlaydi. Muayyan domen sinfini iskala qilish uchun biz to'g'ridan-to'g'ri iskala xususiyatida sinfga murojaat qilishimiz mumkin:

sinf SomeController {    statik iskala = Kitob}

Hozirda Grails uyushmalar uchun iskala bermaydi.

Eski ma'lumotlar bazasi modellari

GORM-dagi qat'iylik mexanizmi orqali amalga oshiriladi Kutish holati. Shunday qilib, eski ma'lumotlar bazalarini standart yordamida GORM sinflariga solishtirish mumkin Kutish xaritasini yaratish fayllar.

Maqsadli auditoriya

Grails uchun maqsadli auditoriya:

  • Internetga asoslangan dasturlarni yaratish uchun integratsiyalashgan rivojlanish muhitini izlayotgan Java yoki Groovy ishlab chiquvchilari.
  • Java tajribasi bo'lmagan ishlab chiquvchilar veb-ilovalarni yaratish uchun yuqori mahsuldorlik muhitini qidirmoqdalar.[iqtibos kerak ]

Java platformasi bilan integratsiya

Grails Java platformasi tarkibiga kiritilgan va Java kutubxonalari, ramkalari va mavjud kod bazalari bilan birlashishni juda osonligini anglatadi. Grails xaritada joylashgan sinflarning shaffof birlashishini taklif etadi Kutish holati ORM ramka. Bu shuni anglatadiki, hozirda kutish rejimidan foydalanadigan dasturlar Grails-dan kodni qayta kompilyatsiya qilmasdan yoki hozirda kutish sinflarini qayta konfiguratsiya qilmasdan, yuqorida muhokama qilingan dinamik qat'iylik usullaridan foydalanishlari mumkin. [3]

Buning bir natijasi shundan iboratki, hozirda kutish rejimida joylashtirilgan Java sinflari uchun iskala tuzilishi mumkin. Buning yana bir natijasi shundaki, Grails veb-ramkasining imkoniyatlari ushbu sinflar va ulardan foydalanadigan dasturlar uchun to'liq mavjuddir.

Grails shuningdek Bahor Tekshirish inversiyasi Asosiy; Grails aslida qopqoq ostida Spring MVC dasturidir.[3] Bahor ramkasi qo'shimcha bahor fasulyesi bilan ta'minlash va ularni dastur kontekstiga kiritish uchun ishlatilishi mumkin. The SiteMesh ramka taqdimot qatlamini boshqarish uchun ishlatiladi, bu esa ishonchli templat tizim orqali sahifalarni ishlab chiqishni soddalashtiradi.[4]

Grails dasturlari har qanday servlet konteyneriga yoki Java EE dastur serverlariga joylashtirilishi mumkin bo'lgan urush artefaktlari sifatida paketlangan.

Shuningdek qarang

Adabiyotlar

  1. ^ Groovy-ni Rails nomiga tushirish
  2. ^ 7.3 Tag kutubxonalari
  3. ^ "Grails Documentation".
  4. ^ "Slideshare taqdimoti".

Tashqi havolalar