מדריך למתחילים ל- Node.js (בצד השרת JavaScript)
Node.js - במילים פשוטות - הוא בצד השרת JavaScript. זה כבר מקבל הרבה באז בימים אלה. אם שמעתם על זה או שאתה מעוניין ללמוד ולקבל כמה ידיים על זה - הודעה זו היא בשבילך.
אז מה בדיוק צריך להשתמש ב- JavaScript בשרת? כדי להפוך את הקונספט של Node.js ברור אני רוצה להשוות אותו עם שפות בצד השרת רגיל כגון PHP. Node.js משתמש ב אירוע מבוסס שרת ביצוע הליך במקום ביצוע מרובה הליכי ב- PHP.
כדי להסביר זאת עוד, נדבר על הרעיון מה Node.js הוא יחד עם כמה הצעות ספק אירוח וטיפים להתקנה. ידע ברמה בינונית של JavaScript, jQuery ו- Ajax נדרשים, אך אנו נספק לך גם דוגמאות כדי להבין את כל העניין קל יותר ואפילו לעבוד עליו, אז בואו לקבל מידע נוסף על Node.js!
הבה נבחן מקרה:
שקול אתר שבו אתה צריך לטעון תוכן באופן דינמי משרת אינטרנט אחר שהוא איטי. ב- PHP אתה יכול לעשות את זה 2 דרכים - קידוד אותו בקובץ פשוט ו מקודד אותו כתסריט אחר, לאחר מכן ביצוע אותו בגישה מרובת הליכי.
בשיטה הראשונה, למרות הקוד הוא פשוט את ההוצאות להורג לזמן מה בנקודת הגישה של שרת האינטרנט האיטי. השיטה השנייה היא ממוטב יותר במקרה של ביצועים אבל זה קשה קוד ויש לו תקורה ניהול multithread. המקרה דומה לרוב שפות תכנות האינטרנט מלבד JavaScript בצד השרת, כלומר, Node.js.
מה ההבדל Node.js? כדי להבין Node.js עליך לזכור את האירוע מבוסס JavaScript של תכנות בדפדפן. אנו משתמשים באותה טכנולוגיה כאן. במקום להשתמש בחוט נפרד, א הפונקציה מחוברת לאירוע הסיום של ה “איטי גישה לשרת האינטרנט - -” הנ"ל, וכך אתה מקבל את פונקציונליות מלאה באופציה השנייה האופטימלית שהוזכרה לעיל ללא תקורה מרובת הליכי משנה.
תחילת העבודה עם Node.js
Node.js הוא JavaScript. למה אנחנו לא יכולים לנצל את האירוע מבוסס פונקציונליות של JavaScript הלקוח לשרת? מחשבה זו אולי הובילה לפיתוח של Node.js.
עם זאת, הדגש העיקרי של Node.js - זה אירוע מבוסס פונקציות אסינכרוני. היא משתמשת לולאת האירוע במקום להמתין לפעולות קלט / פלט (גישה לשירות אינטרנט חיצוני, גישה לחומרה).
Node.js עדיין יכול לעשות שימוש בכוח העיבוד שלה כאשר השרת ממתין לפעולה אחרת. זה עושה Node.js ניתן להרחבה למיליוני קשרים מקבילים.
כיצד פועל JavaScript על שרת?
Node.js עובד על סביבת v8 - זה מכונה וירטואלית או מנוע שמפעילה את קוד ה- JavaScript, ולכן עבור אירוח אתה לא יכול להשתמש באינטרנט המארח רגיל. אתה צריך את אלה שיש להם את V8.
הנה כמה הצעות ספק עבור אירוח Node.js:
- ענן יציקה
- ענן
- DotCloud
- דווסטק
התקנת Node.js
הצומת יהיה עבודה מושלמת על לינוקס, מקינטוש, ו Solaris מערכות ההפעלה. ב- Windows ניתן להתקין אותו באמצעות שכבת אמולציה של Cygwin. אף אחד בונה ב- Windows אינם משביעי רצון, אבל זה עדיין אפשרי להשיג משהו לרוץ.
אפשרות 1: בניית צומת ממקור.
להשתמש עשה
לבנות ולהתקין node.js (לבצע את הפעולות הבאות בשורת הפקודה). Git נדרש.
git clone - depth 1 git: //github.com/joyent/node.git cd הצומת git checkout v0.4.11 ייצוא עבודות = 2 mkdir ~ / מקומי. / קונפיגור --prefix = $ HOME / מקומי / הצומת להפוך את ההתקנה echo 'ייצוא PathH = $ HOME / local / node / bin: $ Path' >> ~ / .profile echo 'ייצוא NODE_PATH = $ HOME / local / node: $ HOME / local / node / lib / node_modules' .profile מקור ~ / .profile
אפשרות 2: התקנת Node.js מחבילה
עבור משתמשי מקינטוש, ניתן להתקין את Node.js כחבילה מ- https://sites.google.com/site/nodejsmacosx/ וזה די מובן מאליו.
התקנת צומת בדיקה
כדי לבדוק את הצומת מוצלח הצומת אנחנו יכולים לנסות את קונסולת פשוטה מאוד "שלום העולם" התוכנית. צור קובץ בשם "test.js"ולכתוב את הקוד הבא לתוכו.
var sys = דורשים ("sys"); sys.puts ("שלום עולם");
הסבר על קוד:
הוא טוען את sys
בכיתה למשתנה sys
. לאחר מכן הוא משתמש sys
אובייקט לבצע את משימות המסוף. ה sys.puts
היא פקודה הדומה ל צעיף
ב C + +, אז כדי להפעיל את התסריט מעל ללכת לשורת הפקודה ולהפעיל אותו על ידי הפקודה הבאה:
הצומת הבדיקה
אם ההתקנה שלך מוצלחת אז אתה תקבל פלט שלום בעולם במסך.
יצירת שרת HTTP
עכשיו הגיע הזמן ליצור "שלום עולם" באמצעות שרת אינטרנט באמצעות Node.js. הנה מה שאנחנו הולכים לעשות - אנחנו ליצור שרת כי יציאות “שלום עולם” כדי המקומית על היציאה 8080 לא משנה מה כתובת האתר, נותן לך מושג מה אירוע J.
הקודים:
var sys = דורשים ("sys"), my_http = דורשים ("http"); My_http.createServer (פונקציה, תגובה) sys.puts ("קיבלתי בעיטה"); response.writeHeader (200, "Content-Type": "text / plain"; response.write ("Hello World "); response.end ();) האזן (8080); sys.puts ("שרת פועל על 8080");
הסבר על קוד:
החלק המעניין ביותר ב- Node.js הוא תכנות המבוסס על אירועים. כדי ליצור שרת HTTP אנחנו צריכים את ספריית HTTP, אז אנחנו הולכים קדימה ולהוסיף אותו באמצעות my_http
. אנו יוצרים שרת לפי הפונקציה:
My_http.createServer (פונקציה (בקשה, תגובה) ) האזן (8080);
הפונקציה הניתנת כארגומנט הראשון מתבצעת בכל פעם שהאירוע מופעל ביציאה 8080, כך את הפונקציה עצמה מציע את הצומת להאזין לאירוע בנמל 8080. על מנת לזהות זאת, הוספתי “קיבלתי בעיטות” הודעה שתוצג במסך המסוף בכל פעם שתתקבל בקשה.
ה בקשה
אובייקט מכיל כל המידע על הבקשה שבוצעה לשרת. לדוגמה, הוא מכיל את מחרוזת כתובת האתר. ה תגובה
אובייקט הוא אובייקט מטפל בתגובה מהשרת. תחילה קבענו את כותרת התגובה כ טקסט / רגיל
תוכן, ואז פלטי “שלום עולם“, ואז לסיים את זרם הפלט. 200 היא תגובת המעמד.
ובכן, הנ"ל הוא דוגמה פשוטה מאוד, אבל אנחנו יכולים לראות כי מה כתובת האתר שאנו נותנים בדפדפן עבור אותו שרת אנחנו מקבלים את אותו פלט כמו “שלום עולם”.
יצירת שרת קבצים סטטיים פשוטים
בואו ליצור שרת קבצים סטטיים פשוט במדריך הבא.
הקודים:
var sys = דורשים ("sys"), my_http = דורשים ("http"), path = require ("path"), url = require ("url"), filesys = require ("fs"); My_http.createServer (function, Request) (var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); path.exists (full_path, function (קיים ) if (! קיים) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 לא נמצא \ n"); Resp.end (); אחר filesys.readFile (full_path, "binary", function (err, file) if (err) response.writeHeader (500, "Content-Type": "text / plain"; response.write (err + "# n;); response.end (); אחר Resp.writeHeader (200); response.write (file," binary "); Resp.end (););); תקשיב (8080); sys.puts ("שרת פועל על 8080");
הסבר על קודים:
הקוד הנ"ל הוא די פשוט, נדון בו כמו בלוקים.
var sys = דורשים ("sys"), my_http = דורשים ("http"), path = require ("path"), url = require ("url"), filesys = require ("fs");
כל הספריות האלה נדרשות לתוכנית. השימוש בו יהיה ברור בקוד הבא.
var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path);
ה בקשה
אובייקט יש את פרטי הבקשה כפי שכבר דנו קודם לכן. אנו משתמשים לנתח
הפונקציה של המחלקה כתובת האתר אשר כללנו כדי לקבל את שם נתיב
של כתובת האתר של הבקשה. לאחר קבלת נתיב אנו לשרשר אותו עם הנתיב של ספריית העבודה הנוכחית כדי לקבל את הנתיב המלא של הקובץ.
עבור ההצטרפות לכתובות אתרים נקראת פונקציה להצטרף
בספריית הנתיב.
path.exists (full_path, function (קיים)
לאחר קבלת הנתיב המלא נבדוק אם הנתיב קיים על ידי הפונקציה קיים
. לאחר הסימון, פונקציית התקשרות נקראת ומועברת כארגומנט שני.
אם (! קיים) response.writeHeader (404, "Content-Type": "text / plain"); Resp.write ("404 לא נמצא \ n"); Resp.end (); else fileys.readFile (full_path, "binary", function (err, file) if (err) response.writeHeader (500, "Content-Type": "text / plain"; response.write ( (+) ;. תגובה ();
עכשיו בפונקציה התקשרות אם הקובץ אינו קיים אנו שולחים "404 הדף לא נמצא"שגיאה.
אם הדף נמצא אז אנו קוראים את הקובץ על ידי readFile
פונקציה במערכת הקבצים. אנחנו יכולים גם לראות את הפונקציה התקשרות עבור readFile
פונקציה מוגדרת שם עצמה. אם אין שגיאה בקריאת הקובץ אז זה יוצג. אם יש שגיאה אז סטטוס 500 מוחזר עם טקסט השגיאה.
אני גם ממליץ על גלישת קודים של המדריך הקודם לפונקציה, כך שתוכל להשתמש בה במדריך הבא או לשימוש עתידי.
var sys = דורשים ("sys"), my_http = דורשים ("http"), path = require ("path"), url = require ("url"), filesys = require ("fs"); My_http.createServer (function, Request) (var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); path.exists (full_path, function (קיים ) if (! קיים) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 לא נמצא \ n"); Resp.end (); אחר filesys.readFile (full_path, "binary", function (err, file) if (err) response.writeHeader (500, "Content-Type": "text / plain"; response.write (err + "; n";;;;;;;; response.end (); אחר Resp.writeHeader (200); response.write (קובץ, "בינארי"); שרת (פונקציה, תגובה) (var my_path = url.parse (request.url) .pathname; load_file (my_path, Response);) האזן (8080); sys.puts ("שרת פועל ב 8080");
המשך לעקוב !
זה הכל. מקווה שזה נותן לך רעיון טוב של Node.js. במאמר הבא, אני אראה לך איך לטעון ולהציג מספר פייסבוק אוהב באמצעות Node.js. המשך לעקוב!
הערת העורך: פוסט זה נכתב על ידי גיאו פול עבור Hongkiat.com. Geo היא עצמאית אינטרנט / iPhone מפתח אשר נהנה לעבוד עם PHP, Codeigniter, וורדפרס, jQuery ו Ajax. יש לו 4 שנות ניסיון ב- PHP ו- 2 שנות ניסיון בפיתוח יישומים.