ABA


"|מדריך| NodeJS צעדים ראשונים...."
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #20165 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 20165
last_test
חבר מתאריך 20.8.13
328 הודעות
   18:09   20.08.13   
אל הפורום  
  |מדריך| NodeJS צעדים ראשונים....  
 
   קודם כל טוב לחזור, תודה לאורי על ההזדמנות, חלק ממכם יזהו ישר את הסגנון כתיבה, מי שלא אז לא

הקדמה לחסרי ההכרות עם Node.JS - הטכנולוגיה מבוססת V8 (המנוע שכרום משתמש בו כדי להריץ Javascript), היעוד שלה הוא לפתח אפליקציות סקלאביליות במיוחד (התמודדות עם עומסים, תהליכים כבדים שגדלים עם הזמן).

מצד שני לא תמיד אנחנו מפתחים אפליקציות כבדות כל כך, ולטעמי לפחות ב-Node.js אני נהנה לפתח את כל סוגי האפליקציות.

את תהליך ההתקנה הראשוני אני מניח הנחה שכולכם עובדים עם לינוקס, סתם בגדר המלצה תצרו לכם מחיצה עם הפצה בסיסית של לינוקס, יש דברים שפשוט לא נועדו לעבוד על windows.

דרך אגב node.js גם רץ על ווינדוס מכיוון שאף פעם לא ניסיתי להריץ אותו, אז תצטרכו להכנס לאתר שלהם ולהוריד את הbinary installer ולקוות שזה עובד כמו אצלי.

לינק להורדה - http://nodejs.org/

בלינוקס זה קצת יותר פשוט, תפתחו terminal ותקלידו


sudo apt-get install nodejs

כדי לא לכתוב כל פעם sudo אתם יכולים להריץ


sudo -i

להקיש את הסיסמא שלכם, ואז כל פקודה בחלון הנוכחי תרוץ כ-super.

כרגע אתם פחות או יותר יכולים לעשות הכל, אבל זה נורא משעמם כל פעם לכתוב קוד ללכת ל-terminal ולהריץ אותו, בשביל זה אני רוצה להכיר לכם כלי שנקרא npm (Node Package Manager)

מאז ש-Node.JS יצא לאור, הקהילה פיתחה המון המון תוספים בשבילו, הכלי הזה נועד בעיקר לאגד אותם במקום אחד, הכלי הזה כבר מגיע bundle בתוך node.js.

בואו נפתח תיקיה במחשב נקרא לה node_js_example ונכנס אליה (דרך הטרמינל),
כשאנחנו בתוך התיקיה הזאת נקליד את הפקודה הבאה:


npm install connect

connect היא ספריה אופטימלית במיוחד כדי להריץ שרת Http אנחנו לא נרחיב עליה יותר מדי, מי שמעוניין:

https://npmjs.org/package/connect

אחרי שהתקנו אם נסתכל על מה שהתיקיה שלנו מכילה, אנחנו נראה תיקיה של node_modules ששם בעצם יושבות כל החבילות שהתקנו ברמת ה-folder root, מה שמגניב במיוחד זה, שכל חבילה יכולות להיות לה dependencies משלה, ובתוכה אתם תמצאו עוד תיקיות של node_modules.

למה זה טוב?

כי גם אתם יכולים לעשות את זה בפרוייקט שלכם, כל מה שאתם צריכים זה ליצור קובץ package.json ושם אתם פשוט יכולים להגדיר את כל התלות של הפרוייקט שלכם בחבילות, ממש עד רמת הגירסא של החבילה.

ככה כשאתם מוציאים release אתם לא צריכים לדאוג אם יצאה חבילה חדשה של כלי שאתם משתמשים בו, אתם יכולים מראש להגדיר שאתם עובדים עם גירסא x והפרוייקט יותקן איתה.


חזרה ל-connect בואו ניצור קובץ חדש ונקרא לו server.js (בתיקיה שיצרנו מקודם).

נדביק בקובץ את הקוד הבא (כבר הסברים):



var server = require("connect");

server.createServer(server.static(__dirname)).listen(3000);



ל-nodejs יש מנגנון שיודע להתמודד עם טעינה של מודולים, מה זה אומר?

קודם כל אני חוזר קצת ל-npm בשביל להרחיב את ההסבר, יש 2 דרכים להתקין חבילה, אחת נקודתית לתיקיה שאנחנו נמצאים בה, השניה היא גלובאלית לשרת, כדי להתקין גלובאלית אנחנו נוסיף בסוף הפקודה -g כדי להתקין לוקאלית זה נעשה by default אבל אם אתם מתעקשים אז אפשר עם -l.

למה זה משנה?

כי יש חבילות שמותקנות כ-process חיצוני ממש כמו node ואנחנו יכולים להריץ אותו כפקודה ממש ב-terminal, קחו למשל חבילה שאני מאוד אוהב nodemon

https://github.com/remy/nodemon

החבילה הזאת בעצם משמשת בתור watcher על הקבצים ויודעת לעשות reset לשרת שלכם כל פעם שמתבצע שינוי בקבצים, כדי להריץ אותה צריך ממש לכתוב בשורת הפקודה nodemon --args --args --args ממש תוספת לenvironment variables שלנו.

אני חוזר לטעינה של המודולים, כשמשתמשים ב-require הוא כמובן מחפש את החבילה בחבילות הבסיס של node.js וגם בתיקיה עצמה (חבילות שהותקנו לוקאלית).

אז מה הקוד שלנו עושה?

קודם כל בואו נשמור אותו בתור קובץ server.js נחזור ל-terminal ונכתוב:


node server.js

עכשיו נפתח דפדפן ונלך לכתובת:

http://localhost:3000

אתם תראו שכתוב לכם "Cannot GET /" בגלל שלא יצרנו קובץ index בתוך התיקיה, בואו נייצר קובץ html בסיסי:



<!DOCTYPE html>
<html>
<head>
<title>test game</title>
</head>
<body>
<header>
<h1>Title</h1>
</header>
<section id="application">
</section>
<footer>
</footer>
</body>
</html>

תשמרו את הקובץ הזה באותה תיקיה בשם index.html (ותריצו את השרת מחדש אלא אם התקנתם nodemon ואז אתם גאונים קטנים, וזה כבר אוטומאטית מתבצע).


כל זה ממש על רגל אחת, אבל אני בחופשת מחלה של חודש, אז תצפו להמשכים, מילות מפתח שאני מציע לכם לחפש בהקשר של node.js הם:

Compound, Express, Meteor כולם תשתיות שנועדו לתת לכם כלים לפיתוח אפליקציות עם nodejs אני נורא אוהב את meteor כשתתקינו תבינו גם למה...

אם יש שאלות אתם מוזמנים זה לא שיש לי יכולת ללכת לאיזה שהוא מקום (חוליה שבורה)!!!...


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  תודה רבה, נשמע מעניין, למה בעצם נועד ה-nodeJS? זה serverside? CaTz 20.08.13 18:56 1
     בדיוק במקום PHP, last_test 20.08.13 19:21 2
     תכנות SERVER SIDE עם ג'אווה סקריפט inno3D 20.08.13 19:29 3
  שלום, אפשר הסבר קצר על connect. מה זה ומה המשמעות שלו? תודה! osnat25 20.01.14 09:35 4
  יוזמ ברוכה :) Ice Cold  20.01.14 10:47 5
  יוחאי? galaxy  21.01.14 00:26 6

       
CaTz
חבר מתאריך 2.10.04
14537 הודעות
   18:56   20.08.13   
אל הפורום  
  1. תודה רבה, נשמע מעניין, למה בעצם נועד ה-nodeJS? זה serverside?  
בתגובה להודעה מספר 0
 
   נניח נקביל את זה לעולם ה-WEB, עם PHP...
במקום מי מגיע ה-NODEJS?

תודה רבה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
last_test
חבר מתאריך 20.8.13
328 הודעות
   19:21   20.08.13   
אל הפורום  
  2. בדיוק במקום PHP,  
בתגובה להודעה מספר 1
 
   רק תחשוב על זה ש-PHP צריך להגיע עם אפליקצית שרת (Apache/nginx/IIS...) עם nodejs אתה לא חייב את זה (זה אפשרי דרך אגב להריץ אותם ביחד), אבל לא רואה צורך בזה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות
   19:29   20.08.13   
אל הפורום  
  3. תכנות SERVER SIDE עם ג'אווה סקריפט  
בתגובה להודעה מספר 1
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
osnat25
חבר מתאריך 20.1.14
1 הודעות
   09:35   20.01.14   
אל הפורום  
  4. שלום, אפשר הסבר קצר על connect. מה זה ומה המשמעות שלו? תודה!  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק
   10:47   20.01.14   
אל הפורום  
  5. יוזמ ברוכה :)  
בתגובה להודעה מספר 0
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
galaxy 
חבר מתאריך 2.7.02
8816 הודעות, 1 פידבק
   00:26   21.01.14   
אל הפורום  
  6. יוחאי?  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net