Vaadin

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה לניווט קפיצה לחיפוש
Gnome-edit-clear.svg
ערך זה זקוק לעריכה: הסיבה לכך היא: ניסוחים.
אתם מוזמנים לסייע ולתקן את הבעיות, אך אנא אל תורידו את ההודעה כל עוד לא תוקן הדף. אם אתם סבורים כי אין בדף בעיה, ניתן לציין זאת בדף השיחה.

Vaadin היא פלטפורמת קוד פתוח לפיתוח יישומי אינטרנט. פלטפורמת Vaadin כוללת מערך רכיבי אינטרנט, ספריה אינטרנטית של Java ומערכת כלים ומתחילים. מוצר הדגל של Vaadin (בעבר Vaadin Framework) מאפשר חילול ממשקי משתמש אינטרנט HTML5 באמצעות שפת התכנות Java.

היסטוריה[עריכת קוד מקור | עריכה]

הפלטפורמה החלה את דרכה בשנת 2001 כחלק מפיתוח של חברה פינית בשם IT Mill שבאותה תקופה ייצרה אפליקציות ללקוחות. על מנת לפתח את היישומים באופן יעיל יותר, IT Mill פיתחה החברה פלטפורמה שתסייע בבניית האפליקציות. בשלב הראשון בנתה החברה את המוצר לשימושה הפנימי.

בשנת 2002 החליטה IT Mill על שחרור הגרסה הראשונית של הפלטפורמה ברישיון קוד פתוח בשם "Millstone 3". עד שנת 2005 המשיכה IT Mill לשחרר גרסאות של "Millstone 3", בשלב זה פיתוח הפלטפורמה התקדם ונוספה עליו שכבה של טכנולוגיית AJAX. בעקבות כך הוחלט על שכתוב צד לקוח וצד שרת. שינוי זה סייע בכך שהשינויים בגרסאות הבאות היו שוליים.

שנת 2006 הביאה שינוי גדול נוסף בצד לקוח על מנת להתאימו לתכונות חדשות של AJAX והגרסה שוחררה בשם "IT Mill Toolkit 4". השינוי כלל הוספה של JavaScript ובעקבות כך היה קשה להמשיך לתחזק ולהרחיב את הגרסה הזו. מסיבה זו בשנת 2007 הוחלט להוריד את ה-JavaScript ולהחליף אותו ב-GWT. שינוי זה הוביל לכתיבתו מחדש של צד לקוח וגרסה חדשה יצאה בשם "IT Mill Toolkit 5".

בשנת 2009 IT Mill שחררה גרסה "Toolkit 6" ושמה שונה ל- Vaadin.

בשנת 2010 המותג Vaddin היה מוכר בציבור יותר משם החברה (IT Mill) מסיבה זו החליטה החברה לשנות את שמה ולאמץ את שם החברה.

בשנת 2013 יצאה גרסה 7. בגרסה זו הכניסו את GWT כחלק מהמערכת. בנוסף, הוסיפו תכונות חדשות ושיפרו את המערכת בהתאם למשובים מהקהילה של Vaadin.

בשנת 2017 שוחררה מגרסה 8. השינויים העיקריים נבעו בעיקר משיפורים של JAVA גרסה 8. הגרסה עברה התאמה מלאה ל-JAVA 8 ושיפור של ה-API.

בשנת 2018 שוחררה גרסה 10 (גרסה 9 לא הייתה קיימת). היה זה השינוי המשמעותי ביותר בהיסטוריה של Vaadin. השינוי כלל שכתוב של הרכיבים ושכבת התקשורת.

בשנת 2019 שוחררה גרסה 13 (בתא) הכוללת שיפורים קטנים ותיקון תקלות.

רכיבי Vaadin[עריכת קוד מקור | עריכה]

הרכיבים של Vaadin הם קבוצה מקיפה של רכיבי אינטרנט המיועדים למפתחי אתרי אינטרנט. בעזרת הרכיבים אלו ניתן לבנות בקלות יחסית אתר אינטרנט.

שימוש בסיסי[עריכת קוד מקור | עריכה]

רכיבי Vaadin מותקנים בדרך כלל עם npm או bower. לדוגמה, הפקודה הבאה מתקינה את vaadin-button :

bower install vaadin/vaadin-button

לאחר ההתקנה, הרכיב יכול לשמש בדף אינטרנט כדלקמן:

<html>
<head>
 <link rel="import" href="bower_components/vaadin-button/vaadin-button.html" />
</head>
<body>
 <vaadin-button onclick='alert("Hello, World")'>Click me</vaadin-button>
</body>
</html>

להלן צילום מסך של הדף הקודם:

Vaadin-components-hello-world-screenshot.png

רכיבים זמינים[עריכת קוד מקור | עריכה]

הטבלה הבאה מציגה רשימה של רכיבי האינטרנט של קוד פתוח ללא תשלום הכלולים ב- Vaadin:

רכיבי Vaadin
רכיב שם אלמנט תיאור
כפתור vaadin-button אלמנט לחצנים מותאמים אישית
תיבת סימון vaadin-checkbox אלמנט עבור תיבות סימון מותאמות אישית
תיבה משולבת vaadin-combo-box מציג רשימה של פריטים עם סינון
תפריט הקשר vaadin-context-menu מציג פריטים תלויי הקשר עבור כל רכיב בדף
בורר התאריכים vaadin-date-picker שדה בחירת תאריך עם יומן חודש לגלילה
דיאלוג vaadin-dialog מציג דיאלוגים מודאליים
תפריט נפתח vaadin-dropdown-menu רכיב אינטרנט להתאמה אישית עבור תפריטים נפתחים
פריסת טופס vaadin-form-layout פריסת תגובה ניתנת להגדרה עבור רכיבי טופס
רשת vaadin-grid נתונים טבלה / נתונים רכיב אלמנט
סמל ממשק המשתמש מוגדר vaadin-icons אוסף של 600 + סמלים
פריט vaadin-item מיכל עבור רכיבי פריט
תיבת רשימות vaadin-list-box תיבה המכילה רשימת פריטים
הודעה vaadin-notification התראות מותאמות אישית
פריסה מסודרת vaadin-ordered-layout יישר אלמנטים אופקית או אנכית ב-HTML
רכיבים מתקדמים
סרגל התקדמות vaadin-progress-bar פסי התקדמות מותאמים אישית
כפתור רדיו vaadin-radio-button לחצני בחירה מותאמים אישית
פיצול הפריסה vaadin-split-layout חלוקת פריסה לאזורים הכולל שינוי גודל דינאמי
כרטיסיות ניווט vaadin-tabs כרטיסיות מותאמות אישית
העלה vaadin-upload טען קבצים מרובים עם סימן התקדמות
Vaadin
Vaadin-logo-hi.png
Vaadin-8-screenshot.png
גרסה אחרונה 8.9.1 (9 באוקטובר 2019) עריכת הנתון בוויקינתונים
נכתבה בשפות Java עריכת הנתון בוויקינתונים
סוג רישיון רישיון אפאצ'י עריכת הנתון בוויקינתונים
vaadin.com
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית OOjs UI icon info big.svg

Vaadin Flow (בעבר Vaadin Framework) היא תשתית לבניית יישומי אינטרנט ואתרי אינטרנט. מודל התכנות של Vadadin Flow דומה Vaadin Framework's - היא משתמשת בשפת JAVA כשפת התכנות ליצירת תוכן אינטרנט. ארכיטקטורת Vaadin Flow היא של צד שרת כלומר רוב הלוגיקה פועלת בצד שרת. בצד לקוח, Vaadin Flow בנויה על גבי תקני Web Component.

Vaadin Flow כוללת תמיכה ברכיבי אינטרנט עבור מפתחי JAVA ומאפשרת שימוש בתבניות HTML (המבוססות על פולימרים) עם תקשורת אוטומטית של שרת-לקוח. הוא כולל גם את ממשק ה- API של ניתוב (חיבור רכיבי ממשק משתמש לכתובות אתר), חיבור נתונים (סנכרון שדות קלט עם מודלים לנתונים בצד השרת) ומניפולציה של ה-DOM בצד השרת.

שימוש בסיסי[עריכת קוד מקור | עריכה]

להלן דוגמה בסיסית של שימוש ב- Vaadin Flow:

@Route("hello-world")
public class MainView extends VerticalLayout {

 public MainView() {
 TextField textField = new TextField("Enter your name");

 Button button = new Button("Click me", event ->
 add(new Span("Hello, " + textField.getValue())));

 add(textField, button);
 }
}

להלן צילום מסך של היישום הקודם:

Vaadin-flow-hello-world-screenshot.png

מאפיינים[עריכת קוד מקור | עריכה]

מימוש ממשק המשתמש רק עם JAVA[עריכת קוד מקור | עריכה]

Vaadin Flow מאפשרת שימוש במרכיבי ממשק קיימים וביצוע רכיבים חדשים באמצעות קוד JAVA הפועל בצד שרת. ניתן ליצור ולשנות את DOM מהצד שרת. הבנאי של קטע הקוד הבא מראה כיצד ליצור אלמנט div חדש, להגדיר id, ולהוסיף מאזין לאירוע קליק:

@Route("")
public class MainView extends Div {
 public MainView() {
 Div div = new Div();
 div.setText("Click me");
 div.getElement().setAttribute("id", "main");
 div.getElement().addEventListener("click", (DomEventListener) event ->
 add(new Span("Hello, World")));
 add(div);
 }
}

שילוב רכיבי אינטרנט[עריכת קוד מקור | עריכה]

שילוב רכיבי אינטרנט מסופק באמצעות ההערות @Import ו- @Tag @Import . קטע הקוד הבא מראה כיצד לעטוף רכיב אינטרנט קיים ברכיב Java בצד השרת:

@Tag("juicy-ace-editor")
@HtmlImport("bower_components/juicy-ace-editor/juicy-ace-editor.html")
public class JuicyAceEditor extends Div {

 public void setMode(String mode) {
 getElement().setAttribute("mode", mode);
 }
}

Router[עריכת קוד מקור | עריכה]

Router הוא מושג ליבה ב-Vaadin Flow המאפשר ניווט באמצעות כתובות אתרים. ה-Router מאפשר חיבור של כתובות אתרים לרכיבי ממשק משתמש. הוא מבוסס על ממשק API HTML5 History המאפשר למשתמשי הקצה לנווט בין הדפים תוך שמירה על מצב הדף. קטע הקוד הבא מראה כיצד להשתמש בהערות @Route כדי להציג את הרכיב @Route כאשר משתמש הקצה מבקש כתובת אתר כגון http://yourdomain.com /hello/world :

@Route("hello/world")
public class HelloWorldComponent extends Div {
 public HelloWorldComponent() {
 setText("Hello, World!");
 }
}

מיזוג נתונים[עריכת קוד מקור | עריכה]

מיזוג הנתונים נעשה דרך מחלקת Binder . זה מאפשר לסנכרן את הערכים בשדות קלט עם מודלים נתונים בצד השרת. קטע הקוד הבא מראה כיצד לקשר את name שדה Java מסוג Person לערך ברכיב TextField :

TextField nameField = new TextField();

Binder<Person> binder = new Binder<>();
binder.bind(nameField, Person::getName, Person::setName);

תבניות HTML[עריכת קוד מקור | עריכה]

Vaadin Flow מאפשרת הגדרה של תבניות HTML עם תקשורת אוטומטית של שרת לקוח וחיבור נתונים (בעת שימוש בתבניות מבוססות פולימר ). להלן דוגמה לתבנית מבוססת פולימרים:

<link rel="import" href="../bower_components/polymer/polymer-element.html">
<link rel="import" href="../bower_components/vaadin-text-field/vaadin-text-field.html">

<dom-module id="hello-world">
 <template>
 <vaadin-text-field label="Your name" value="{{name}}"></vaadin-text-field>
 <button on-click="greet">Click me</button>
 <div id="greeting">[[greeting]]</div>
 </template>
 <script>
 class HelloWorld extends Polymer.Element {
 static get is() {
 return 'hello-world'
 }
 }
 customElements.define(HelloWorld.is, HelloWorld);
 </script>
</dom-module>

קטע הקוד הבא מראה כיצד לחבר את התבנית הקודמת למרכיב Java בצד השרת:

@Tag("hello-world")
@HtmlImport("src/hello-world.html")
public class HelloWorld extends PolymerTemplate<HelloWorld.HelloWorldModel> {

 public interface HelloWorldModel extends TemplateModel {
 String getName();
 void setGreeting(String greeting);
 }

 @EventHandler
 private void greet() {
 getModel().setGreeting("Hello, " + getModel().getName());
 }
}

התאמה אישית של מראה ותחושת המשתמש[עריכת קוד מקור | עריכה]

התאמה אישית של המראה ותחושת המשתמש ניתן לעשות עם CSS, סגנונות מותאמים אישית של HTML, או על ידי תצורות ערכות נושא מוכנות.

שילוב עבודה עם Spring Framework[עריכת קוד מקור | עריכה]

Vaadin Flow כולל אינטגרציה עם Spring Framework 5 ו-Spring Boot 2.

לקריאה נוספת[עריכת קוד מקור | עריכה]

קישורים חיצוניים[עריכת קוד מקור | עריכה]