למרות שזה לא הנושא הישיר אתן סקירה קטנה מנסיוני.
מנועי התצוגה (Template engine) בNode מתחלקים לשניים:
-
אלה שמשתמשים במילים ופקודות שמורות משלהן עבור כל פקודה, והן שואבות השראה ממנועים אחרים בשפות אחרות (שם הדבר מפותח מאוד ובשימוש רב).
במנועים אלה האפשרויות מצומצמות למספר מילים שמורות בלבד (if, else, switch)
וכד'. יש גם "פילטרים" שמאפשרים לשנות את הערך של משתנה המודפס לדוגמה: {{ count | add: 1}}
כאשר רוצים להציב תנאי מורכב או להציג ערך קומבינציה שמורכב מכמה פרמטרים יש צורך לבנות רכיב תצוגה מיוחד ולהעביר אותו לפקודת הRender בדומה להעברת שאר הData מצד השרת לטמפלט.
שיטה זו דומה למנועים אחרים רבים הקיימים בשפות אחרות, דוגמת Django של פייתון או Laravel של PHP, ERB ברובי וכן הלאה.
-
אלה שמאפשרים לשים פקודות Javascript מלאות בין חלקי הhtml בקובץ, כמו כן ניתן לשים תנאים מורכבים שתלויים בהרבה משתנים, ולא צריך לבנות לזה רכיב תצוגה במיוחד.
שיטה זו דומה לכתיב של php טהור בקבצי html.
בקבוצת המנועים הראשונה ניתן למנות את Pug (Jade לשעבר), Handlebars, mustache.js, ועוד,
בקבוצה השניה יש את Ejs (לדעתי זהו היחיד שקיים).
סגנון התחביר להכנסת פקודות בין חלקי הhtml משתנה בין הספריות השונות, יש כמה סגנונות מקובלים (ובכל שפת תכנות יש כמה שלקחו השראה מכל סגנון כזה)
באיזה מנוע כדאי להשתמש?
מנסיוני, כאשר מדובר בפרויקט קטן ושהטפמלט אינו דורש מניפולציות מורכבות, יש עדיפות גדולה לקבוצה הראשונה, השימוש בה נותן פחות אפשרויות, הכתיב מוגדר יותר ולכן הוא פחות מאפשר לבלגן את הקוד.
אבל כשצריך מניפלציות מורכבות יש יתרון מסוים להשתמש בEjs ולהציב את כל תוכן קוד הבנייה של הערך בבלוק עצמו. כדי לחסוך בנייה של פונקציות רבות שעושות את ההרכבה ולהעביר כל אחת לתוך הטמפלט בנפרד.