Mesin Template di Groovy

1. Ikhtisar

Dalam tutorial pengantar ini, kita akan menjelajahi konsep mesin template di Groovy.

Di Groovy, kita bisa menggunakan GString untuk menghasilkan teks dinamis dengan mudah. Namun, mesin template menyediakan cara yang lebih baik untuk menangani teks dinamis menggunakan template statis.

Template ini mudah digunakan dalam menentukan template statis untuk berbagai notifikasi seperti SMS dan email.

2. Apa itu TemplateEngine Groovy ?

TemplateEngine Groovy adalah kelas abstrak yang berisi metode createTemplate .

Semua mesin kerangka template yang tersedia di Groovy memperluas TemplateEngine dan mengimplementasikan createTemplate. Selain itu, setiap mesin mengembalikan objek antarmuka Template .

The Template antarmuka memiliki metode make , yang mengambil peta untuk mengikat variabel. Oleh karena itu, harus diimplementasikan oleh setiap kerangka template.

Mari kita bahas fungsionalitas dan perilaku semua kerangka kerangka yang tersedia di Groovy.

3. SimpleTemplateEngine

The SimpleTemplateEngine menghasilkan teks dinamis menggunakan String interpolasi dan scriptlets. Mesin ini sangat berguna untuk notifikasi sederhana seperti SMS dan email teks sederhana.

Sebagai contoh:

def smsTemplate = 'Dear , Thanks for reading our Article. ${signature}' def bindMap = [user: "Norman", signature: "Baeldung"] def smsText = new SimpleTemplateEngine().createTemplate(smsTemplate).make(bindMap) assert smsText.toString() == "Dear Norman, Thanks for reading our Article. Baeldung"

4. StreamingTemplateEngine

Dalam arti umum, StreamingTemplateEngine bekerja mirip dengan SimpleTemplateEngine. Namun, secara internal menggunakan penutupan Writable untuk menghasilkan template.

Untuk alasan yang sama, ini memiliki manfaat saat mengerjakan String yang lebih besar (> 64K). Karenanya, ini lebih efisien daripada SimpleTemplateEngine.

Mari tulis contoh singkat untuk menghasilkan konten email dinamis menggunakan template statis.

Pertama, kita akan membuat template articleEmail statis :

Dear <% out <, Please read the requested article below. <% out < From, <% out <

Di sini, kami menggunakan scriptlets untuk teks dinamis dan keluar untuk penulis.

Sekarang, kami akan membuat konten email menggunakan StreamingTemplateEngine :

def articleEmailTemplate = new File('src/main/resources/articleEmail.template') def bindMap = [user: "Norman", signature: "Baeldung"] bindMap.articleText = """1. Overview This is a tutorial article on Template Engines...""" //can be a string larger than 64k def articleEmailText = new StreamingTemplateEngine().createTemplate(articleEmailTemplate).make(bindMap) assert articleEmailText.toString() == """Dear Norman, Please read the requested article below. 1. Overview This is a tutorial article on Template Engines... From, Baeldung"""

5. GStringTemplateEngine

Seperti namanya, GStringTemplateEngine menggunakan GString untuk menghasilkan teks dinamis dari template statis.

Pertama, mari kita tulis template email sederhana menggunakan GString :

Dear $user, Thanks for subscribing our services. ${signature}

Sekarang, kami akan menggunakan GStringTemplateEngine untuk membuat konten dinamis:

def emailTemplate = new File('src/main/resources/email.template') def emailText = new GStringTemplateEngine().createTemplate(emailTemplate).make(bindMap) 

6. XmlTemplateEngine

The XmlTemplateEngine berguna ketika kita ingin membuat output XML yang dinamis. Ini membutuhkan skema XML sebagai masukan dan memungkinkan dua tag khusus, untuk menyuntikkan skrip dan untuk menyuntikkan ekspresi.

Sebagai contoh, mari kita ubah template email yang sudah dibahas menjadi XML:

def emailXmlTemplate = ''' def emailContent = "Thanks for subscribing our services." Dear ${user} emailContent ${signature} ''' def emailXml = new XmlTemplateEngine().createTemplate(emailXmlTemplate).make(bindMap)

Karenanya, emailXml akan dirender XML, dan isinya akan menjadi:

 Dear Norman Thanks for subscribing our services. Baeldung 

Menarik untuk dicatat bahwa keluaran XML menjorok dan dipercantik sendiri oleh kerangka template.

7. MarkupTemplateEngine

Kerangka template ini adalah paket lengkap untuk menghasilkan HTML dan bahasa markup lainnya.

Selain itu, ia menggunakan Bahasa Khusus Domain untuk memproses template dan paling dioptimalkan di antara semua kerangka template yang tersedia di Groovy.

7.1. HTML

Mari kita tulis contoh singkat untuk merender HTML untuk template email yang sudah dibahas :

def emailHtmlTemplate = """ html { head { title('Service Subscription Email') } body { p('Dear Norman') p('Thanks for subscribing our services.') p('Baeldung') } }""" def emailHtml = new MarkupTemplateEngine().createTemplate(emailHtmlTemplate).make()

Oleh karena itu, isi emailHtml adalah:

Service Subscription Email 

Dear Norman

Thanks for subscribing our services.

Baeldung

7.2. XML

Demikian juga, kita dapat merender XML:

def emailXmlTemplate = """ xmlDeclaration() xs{ email { greet('Dear Norman') content('Thanks for subscribing our services.') signature('Baeldung') } }""" def emailXml = new MarkupTemplateEngine().createTemplate(emailXmlTemplate).make()

Oleh karena itu, isi emailXml adalah:

 Dear NormanThanks for subscribing our services. Baeldung

7.3. TemplateConfiguration

Perhatikan bahwa tidak seperti XmlTemplateEngine , keluaran template dari framework ini tidak menjorok dan dipercantik dengan sendirinya.

Untuk konfigurasi seperti itu, kami akan menggunakan kelas TemplateConfiguration :

TemplateConfiguration config = new TemplateConfiguration() config.autoIndent = true config.autoEscape = true config.autoNewLine = true def templateEngine = new MarkupTemplateEngine(config)

7.4. Penginternasionalan

Selain itu, properti lokal TemplateConfiguration tersedia untuk mengaktifkan dukungan internasionalisasi.

Pertama, kita akan membuat file template statis email.tpl dan menyalin string emailHtmlTemplate yang sudah dibahas ke dalamnya. Ini akan diperlakukan sebagai template default.

Demikian juga, kami akan membuat file template berbasis lokal seperti email_ja_JP.tpl untuk bahasa Jepang, email_fr_FR.tpl untuk Prancis, dll.

Terakhir, yang kita butuhkan hanyalah menyetel lokal di objek TemplateConfiguration :

config.locale = Locale.JAPAN

Karenanya, template berbasis lokal yang sesuai akan dipilih.

8. Kesimpulan

Pada artikel ini, kami telah melihat berbagai kerangka kerja yang tersedia di Groovy.

Kami dapat memanfaatkan mesin templat praktis ini untuk menghasilkan teks dinamis menggunakan templat statis. Oleh karena itu, mereka dapat membantu dalam pembuatan dinamis berbagai jenis pemberitahuan atau pesan dan kesalahan di layar.

Seperti biasa, implementasi kode dari tutorial ini tersedia di proyek GitHub.