Express.js או רק Express היא פריימוורק לשפת node.js שמהווה תשתית לשרת אינטרנט לכל אפליקציה. בפועל, Express הפכה להיות הסטנדרט בכל מה שקשור לאפליקציות מבוססות node.js בכלל, ה-E של ה-Express היא חלק מה MEAN stack (שזה ראשי תבות של MongoDB, Express.js, Angular, node.js) שהולכת ומתפתחת בצעדי ענק.
עד כאן להגדרה הסמי ויקיפדית של Express. נשאלת השאלה מה זה בדיוק ולמה צריך את זה. כפי שאנו יודעים, אם אני רוצה לפתח אתר/אפליקציה ב-node.js, אני צריך לממש את השרת שלי. בניגוד ל-PHP למשל, שם יש לי את Apache או את NginX שהם שרתי אינטרנט שמעבדים ומגישים לי את הקבצים, ב-node.js אין לי דבר כזה. מה עושים? אפשר לממש את שרת האינטרנט לבד. אבל במקום זה אפשר להשתמש במודול של node.js ליצירת השרת. ה-מודול, בה"א הידיעה לשרתים הוא Express.js והוא כל כך פופולרי שהוא עתיד להכנס לליבה של node.js. כמעט כל האפליקציות משתמשות בו.
על מנת להשתמש ב-Express ולתפעל אותו, צריך לדעת node.js, כאן לא יעזרו קיצורי דרך. למרבה המזל, הכנתי מדריך מפורט בשביל כל אלו שלא מכירים את node.js, שווה לעבור עליו לפני. כדאי גם לעבור על המדריך הקצרצר של REST API.
המדריך מותאם גם לחלונות וגם ללינוקס/מק. בגדול, אני ממליץ מאוד להשתמש ב-git bash. כשאני מדבר על הקלדה בקונסולה, אני מתכוון להקלדה בקונסולה של לינוקס/מק או להקלדה ב-cmd\git bash.
הדבר הראשון שצריך לעשות הוא לדאוג שיש לכם node על המחשב. ההתקנה קלה גם בחלונות וגם בלינוקס/מק ועברנו עליה במדריך של node.js מהנקודה הזו והלאה אני יוצא מנקודת הנחה שאתם יודעים node.js.
על מנת להתחיל את האפליקציה שלנו, אנחנו נפתח תיקיה כלשהי, נכנס עם הקונסולה ונכתוב שם:
npm install express --save
זה מתקין כמובן את המודול express ואת כל המודולים שבו הוא תלוי. אם הכל תקין, אתם מחוברים לאינטרנט וכמובן מותקן אצלכם node (אם לא, תקבלו שגיאה שמערכת ההפעלה לא מזהה את node). הכל יותקן. עכשיו ניצור קובץ ששמו הוא index.js ושם נכתוב את הקוד הבא:
var express = require('express');
var app = express();
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
app.get('/', function (req, res) {
res.send('Hello World!');
});
מה יש בקוד הזה? קודם כל יש require ל-express ואנו מגדירים את app כ-instance של express. אחר כך אנחנו מפרטים לו לאיזה פורט להאזין, במקרה הזה ל-3000. זה קוד שהוא קריטי לכל אפליקצית express וחייב להיות בו. לא יהיה listen, לא יהיה שרת.
הקוד הבא הוא יותר מעניין – הוא בעצם אומר שכל בקשת GET תעבור דרכו. הוא מקבל את הנתיב (במקרה הזה הנתיב הכללי /) ו-callback שמכיל שני ארגומנטים req שהוא הבקשה (ושם יש לי גישה לכל פרטי הבקשה) ו-res שהוא התגובה שלי. אני יכול לשלוט שם על כל פרטי התגובה.
במקרה הזה, אני אשתמש ב-send על מנת לשלוח טקסט בלבד.
אחרי ששמרתי את הקובץ, עכשיו כל מה שנותר לי לעשות זה להפעיל את השרת – במקרה הזה להקליד את הקוד הזה בקונסולה:
node app.js
אם נפתח את הדפדפן ונכניס את הכתובת localhost:3000 או את ה-IP של המחשב שלנו עם פורט 3000, נראה Hello World! יש!
בואו ונמשיך את זה, נוסיף נתיב נוסף ששמו בישראל יהיה moshe. איך עושים את זה? על ידי הוספת הקוד הבא:
var express = require('express');
var app = express();
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.get('/moshe', function (req, res) {
res.send('Hello moshe!');
});
נהרוג את התהליך שפתוח בקונסולה באמצעות ctrl +c ואז נפעיל אותו שוב על ידי node app.js, על מנת שה-app.js יעבוד. אם נכניס את הכתובת localhost:3000/moshe אנו נראה שיהיה כתוב לנו על הדפדפן Hello Moshe
נחמד, נכון? זו התחלה ראשונית בלבד למה שנקרא routing ונרחיב על כך עוד במאמר הבא בסדרה – routing ב-express
4 תגובות
תודה על המאמר המושקע!
זמן רב חכיתי למאמרי המשך הקשורים ל-nodejs.
תודה רבה! אני מתכוון להמשיך עם זה לפחות עד בדיקות אוטומטיות, יצירת code coverage וגם עבודה עם ג'נרייטור כמו yeoman 🙂
תודה רבה, רן.
תיקון לקובץ קראת index.js אם כן צריך להפעיל node index.js ולא app.js
(משום מה על פורט 3000 אצלי לא עבד. עברתי לפורט 8080)
מעונין לבדוק אפשרות להקמת אתר מסחרי
דוד גרוסמן 052-6244733