Logo

dev-resources.site

for different kinds of informations.

เริ่มต้น Quarkus 3 part 2.2 web bundler

Published at
6/4/2024
Categories
quarkus
Author
pramoth
Categories
1 categories in total
quarkus
open
Author
7 person written this
pramoth
open
เริ่มต้น Quarkus 3 part 2.2 web bundler

หลังจากที่เราได้ serverside rendering Qute แล้วจากบทความก่อนหน้านี้ https://dev.to/pramoth/erimtn-quarkus-3-part-2-web-4bkm ในบทความนี้เราจะเอา javascript dependencies (npm) เข้ามาใช้ใน Qute template โดยใช้ตัวช่วยที่ชื่อว่า Web Bundler ซึ่งเจ้าตัวนี้จะใช้ mvnpm(ก็เหมือน webjar แต่ว่ามันสร้าง jar auto ฉนั้นมันจึงมี version ใหม่ๆมาเร็วเท่ากับใน npm registry เลยทีเดียว

ในบทความนี้เราจะลองทำ Hello world ด้วย AlpineJS กันครับ
เริ่มต้นเพิ่ม Web Bundler dependency ใน pom.xml ตามนี้

<dependency>
    <groupId>io.quarkiverse.web-bundler</groupId>
    <artifactId>quarkus-web-bundler</artifactId>
    <version>1.5.2</version>
</dependency>
Enter fullscreen mode Exit fullscreen mode

จากนั้นเราก็ไปหา npm ที่เราจะใช้งาน แต่ว่าไปหาจากเวบ https://mvnpm.org/ นะครับ ก็ค้นหาชื่อตาม npm registry นั้นแหละ
จากนั้นก็เอามาใส่ใน pom.xml

<dependency>
    <groupId>org.mvnpm</groupId>
    <artifactId>alpinejs</artifactId>
    <version>3.14.0</version>
    <scope>provided</scope>
</dependency>
Enter fullscreen mode Exit fullscreen mode

แน่นอนว่าไม่ต้อง restart quarkus เหมือนเดิม มันจะ load dependencies แล้ว reload ให้เลย
เจ้า Web Bundler จะไปหา js ที่เป็น entry point โดยจะหาจากไฟล์ใน src/main/resources/web/app/**
ให้เราสร้างไฟล์ index.js ขึ้นมาโดยมี content โดย import Alpinejs มาใช้งานตามเอกสารของเขา ดังนี้

import Alpine from 'alpinejs'
window.Alpine = Alpine
Alpine.start()
Enter fullscreen mode Exit fullscreen mode

จากนั้นให้เอา {#bundler /} ไปใส่ใน hello.html

<!DOCTYPE html>
<html lang="en">
<head>
    {#bundle /}
</head>
....
Enter fullscreen mode Exit fullscreen mode

เมื่อเรา refresh /hello เราจะพบว่า js ของเราถูก import เข้าไปที่หน้า index พร้อมกับ dependencies!! ง่ายสุดๆ

Image description

ทดลองใส่ alpinejs ไปใน body

<div x-data="{ count: 0 }">
    <button x-on:click="count++">Increment</button>

    <span x-text="count"></span>
</div>
Enter fullscreen mode Exit fullscreen mode

refresh แล้วดูผลลัพธืได้ทันที ว้าววว

ปล. สำหรับใครที่หา dependencies mvnpm ไม่เจอให้ไปเพิ่ม repo ตามเอกสารจากเวบนี้นะครับ
https://docs.quarkiverse.io/quarkus-web-bundler/dev/advanced-guides.html

quarkus Article's
30 articles in total
Favicon
Java Can Be Serverless Too: Using GraalVM for Fast Cold Starts
Favicon
Building Robust REST Client with Quarkus: A Comprehensive Guide
Favicon
Choosing the Right Java Microservices Framework: Spring Boot, Quarkus, Micronaut, and Beyond
Favicon
Agente de IA confiável em prod com Java + Quarkus + Langchain4j - Parte 2 - Memória
Favicon
Agente de IA confiável em prod com Java + Quarkus + Langchain4j - Parte 1 - AI as Service
Favicon
Calling Clojure from Java using a real example (Clojure + Quarkus)
Favicon
Turbocharge Java Microservices with Quarkus and GraalVM Native Image
Favicon
Introduction to Quarkus: Java Native for Kubernetes
Favicon
Effective Project Structuring for Microservices with Quarkus
Favicon
Unlock Lightning-Fast Web Services: Mastering Quarkus for Agile, Scalable, and Responsive RESTful APIs
Favicon
Harnessing Automatic Setup and Integration with Quarkus Dev Services for Efficient Development
Favicon
Why we discarded Reactive systems architecture from our code?
Favicon
Unveiling Challenges with @Named
Favicon
Exploring Synthetic Beans in Quarkus. A Powerful Extension Mechanism
Favicon
Registering Reflection in Quarkus Extensions
Favicon
Creating Custom Configuration in Quarkus Loaded from JSON File
Favicon
Extending Quarkus: When and How to Write Your Own Extensions
Favicon
Demystifying Quarkus Extension Development: Jandex vs. AdditionalBeanBuildItem
Favicon
𝗠𝗶𝗰𝗿𝗼𝘀𝗲𝗿𝘃𝗶𝗰𝗲𝘀 𝗶𝗻 𝗝𝗮𝘃𝗮: 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲, 𝗕𝗲𝗻𝗲𝗳𝗶𝘁𝘀, 𝗮𝗻𝗱 𝗜𝗺𝗽𝗹𝗲𝗺𝗲𝗻𝘁𝗮𝘁𝗶𝗼𝗻
Favicon
Spring Boot vs Quarkus: Pick one for Java!
Favicon
Deploying native Quarkus REST API's in AWS Lambda
Favicon
เริ่มต้น Quarkus 3 part 2.3 Renarde
Favicon
เริ่มต้น Quarkus 3 part 2.2 web bundler
Favicon
How to enable mongodb query logging in reactive java for quarkus with panache
Favicon
Beyond JWT: Unlocking PASETO for Secure Token Management
Favicon
เริ่มต้น Quarkus 3 part 1
Favicon
Exploring Quarkus vs Spring Boot
Favicon
Secure Quarkus application with ezto
Favicon
Spring Boot vs Quarkus: Pick one for Java
Favicon
Why Quarkus Native (probably) does not fit your project

Featured ones: