NodeJS»ù´¡
ʲôÊÇNodeJS
JSÊǽű¾ÓïÑÔ£¬½Å±¾ÓïÑÔ¶¼ÐèÒªÒ»¸ö½âÎöÆ÷²ÅÄÜÔËÐС£¶ÔÓÚдÔÚHTMLÒ³ÃæÀïµÄJS£¬ä¯ÀÀÆ÷³äµ±Á˽âÎöÆ÷µÄ½ÇÉ«¡£¶ø¶ÔÓÚÐèÒª¶ÀÁ¢ÔËÐеÄJS£¬NodeJS¾ÍÊÇÒ»¸ö½âÎöÆ÷¡£
ÿһÖÖ½âÎöÆ÷¶¼ÊÇÒ»¸öÔËÐл·¾³£¬²»µ«ÔÊÐíJS¶¨Òå¸÷ÖÖÊý¾Ý½á¹¹£¬½øÐи÷ÖÖ¼ÆË㣬»¹ÔÊÐíJSʹÓÃÔËÐл·¾³ÌṩµÄÄÚÖöÔÏóºÍ·½·¨×öһЩÊÂÇé¡£ÀýÈçÔËÐÐÔÚä¯ÀÀÆ÷ÖеÄJSµÄÓÃ;ÊDzÙ×÷DOM£¬ä¯ÀÀÆ÷¾ÍÌṩÁËdocumentÖ®ÀàµÄÄÚÖöÔÏó¡£¶øÔËÐÐÔÚNodeJSÖеÄJSµÄÓÃ;ÊDzÙ×÷´ÅÅÌÎļþ»ò´î½¨HTTP·þÎñÆ÷£¬NodeJS¾ÍÏàÓ¦ÌṩÁËfs¡¢httpµÈÄÚÖöÔÏó¡£
ÓÐɶÓô¦
¾¡¹Ü´æÔÚÒ»Ìý˵¿ÉÒÔÖ±½ÓÔËÐÐJSÎļþ¾Í¾õµÃºÜ¿áµÄͬѧ£¬µ«´ó¶àÊýͬѧÔÚ½Ó´¥Ð¶«Î÷ʱÊ×ÏȹØÐĵÄÊÇÓÐɶÓô¦£¬ÒÔ¼°ÄÜ´øÀ´É¶¼ÛÖµ¡£
NodeJSµÄ×÷Õß˵£¬Ëû´´ÔìNodeJSµÄÄ¿µÄÊÇΪÁËʵÏÖ¸ßÐÔÄÜWeb·þÎñÆ÷£¬ËûÊ×ÏÈ¿´ÖصÄÊÇʼþ»úÖÆºÍÒì²½IOÄ£Ð͵ÄÓÅÔ½ÐÔ£¬¶ø²»ÊÇJS¡£µ«ÊÇËûÐèҪѡÔñÒ»ÖÖ±à³ÌÓïÑÔʵÏÖËûµÄÏë·¨£¬ÕâÖÖ±à³ÌÓïÑÔ²»ÄÜ×Ô´øIO¹¦ÄÜ£¬²¢ÇÒÐèÒªÄÜÁ¼ºÃÖ§³Öʼþ»úÖÆ¡£JSûÓÐ×Ô´øIO¹¦ÄÜ£¬ÌìÉú¾ÍÓÃÓÚ´¦Àíä¯ÀÀÆ÷ÖеÄ
DOMʼþ£¬²¢ÇÒÓµÓÐÒ»´óȺ³ÌÐòÔ±£¬Òò´Ë¾Í³ÉΪÁËÌìÈ»µÄÑ¡Ôñ¡£
ÈçËûËùÔ¸£¬NodeJSÔÚ·þÎñ¶Ë»îÔ¾ÆðÀ´£¬³öÏÖÁË´óÅú»ùÓÚNodeJSµÄWeb·þÎñ¡£¶øÁíÒ»·½Ã棬NodeJSÈÃǰ¶ËÖÚÈç»ñÉñÆ÷£¬ÖÕÓÚ¿ÉÒÔÈÃ×Ô¼ºµÄÄÜÁ¦¸²¸Ç·¶Î§Ìø³öä¯ÀÀÆ÷´°¿Ú£¬¸ü´óÅúµÄǰ¶Ë¹¤¾ßÈçÓêºó´ºËñ¡£
Òò´Ë£¬¶ÔÓÚǰ¶Ë¶øÑÔ£¬ËäÈ»²»ÊÇÈËÈ˶¼ÒªÄÃNodeJSдһ¸ö·þÎñÆ÷³ÌÐò£¬µ«¼òµ¥¿ÉÖÁʹÓÃÃüÁî½»»¥Ä£Ê½µ÷ÊÔJS´úÂëÆ¬¶Î£¬¸´ÔÓ¿ÉÖÁ±àд¹¤¾ßÌáÉý¹¤×÷ЧÂÊ¡£
NodeJSÉú̬ȦÕýÐÀÐÀÏòÈÙ¡£
ÈçºÎ°²×°
°²×°³ÌÐò
NodeJSÌṩÁËһЩ°²×°³ÌÐò£¬¶¼¿ÉÒÔÔÚnodejs.orgÕâÀïÏÂÔØ²¢°²×°¡£
WindowsϵͳÏ£¬Ñ¡ÔñºÍϵͳ°æ±¾Æ¥ÅäµÄ.msiºó׺µÄ°²×°Îļþ¡£Mac OS XϵͳÏ£¬Ñ¡Ôñ.pkgºó׺µÄ°²×°Îļþ¡£
±àÒë°²×°
LinuxϵͳÏÂûÓÐÏֳɵݲװ³ÌÐò¿ÉÓã¬ËäȻһЩ·¢Ðаæ¿ÉÒÔʹÓÃapt-getÖ®ÀàµÄ·½Ê½°²×°£¬µ«²»Ò»¶¨Äܰ²×°µ½×îа档Òò´ËLinuxϵͳÏÂÒ»°ãʹÓÃÒÔÏ·½Ê½±àÒ뷽ʽ°²×°NodeJS¡£
È·±£ÏµÍ³ÏÂg++°æ±¾ÔÚ4.6ÒÔÉÏ£¬python°æ±¾ÔÚ2.6ÒÔÉÏ¡£
´Ónodejs.orgÏÂÔØtar.gzºó׺µÄNodeJS×îаæÔ´´úÂë°ü²¢½âѹµ½Ä³¸öλÖá£
½øÈë½âѹµ½µÄĿ¼£¬Ê¹ÓÃÒÔÏÂÃüÁî±àÒëºÍ°²×°¡£
$ ./configure $ make $ sudo make install |
ÈçºÎÔËÐÐ
´ò¿ªÖÕ¶Ë£¬¼üÈënode½øÈëÃüÁî½»»¥Ä£Ê½£¬¿ÉÒÔÊäÈëÒ»Ìõ´úÂëÓï¾äºóÁ¢¼´Ö´Ðв¢ÏÔʾ½á¹û£¬ÀýÈ磺
$ node > console.log('Hello World!'); Hello World! |
Èç¹ûÒªÔËÐÐÒ»´ó¶Î´úÂëµÄ»°£¬¿ÉÒÔÏÈдһ¸öJSÎļþÔÙÔËÐС£ÀýÈçÓÐÒÔÏÂhello.js¡£
function hello() { console.log('Hello World!'); } hello(); |
дºÃºóÔÚÖÕ¶ËϼüÈënode hello.jsÔËÐУ¬½á¹ûÈçÏ£º
$ node hello.js Hello World |
ȨÏÞÎÊÌâ
ÔÚLinuxϵͳÏ£¬Ê¹ÓÃNodeJS¼àÌý80»ò443¶Ë¿ÚÌṩHTTP(S)·þÎñʱÐèÒªrootȨÏÞ£¬ÓÐÁ½ÖÖ·½Ê½¿ÉÒÔ×öµ½¡£
Ò»ÖÖ·½Ê½ÊÇʹÓÃsudoÃüÁîÔËÐÐNodeJS¡£ÀýÈçͨ¹ýÒÔÏÂÃüÁîÔËÐеÄserver.jsÖÐÓÐȨÏÞʹÓÃ80ºÍ443¶Ë¿Ú¡£Ò»°ãÍÆ¼öÕâÖÖ·½Ê½£¬¿ÉÒÔ±£Ö¤½öΪÓÐÐèÒªµÄJS½Å±¾ÌṩrootȨÏÞ¡£
ÁíÒ»ÖÖ·½Ê½ÊÇʹÓÃchmod +sÃüÁîÈÃNodeJS×ÜÊÇÒÔrootȨÏÞÔËÐУ¬¾ßÌå×ö·¨ÈçÏ¡£ÒòΪÕâÖÖ·½Ê½ÈÃÈκÎJS½Å±¾¶¼ÓÐÁËrootȨÏÞ£¬²»Ì«°²È«£¬Òò´ËÔÚÐèÒªºÜ¿¼Âǰ²È«µÄϵͳϲ»ÍƼöʹÓá£
$ sudo chown root /usr/local/bin/node $ sudo chmod +s /usr/local/bin/node |
Ä£¿é
±àдÉÔ´óÒ»µãµÄ³ÌÐòʱһ°ã¶¼»á½«´úÂëÄ£¿é»¯¡£ÔÚNodeJSÖУ¬Ò»°ã½«´úÂëºÏÀí²ð·Öµ½²»Í¬µÄJSÎļþÖУ¬Ã¿Ò»¸öÎļþ¾ÍÊÇÒ»¸öÄ£¿é£¬¶øÎļþ·¾¶¾ÍÊÇÄ£¿éÃû¡£
ÔÚ±àдÿ¸öÄ£¿éʱ£¬¶¼ÓÐrequire¡¢exports¡¢moduleÈý¸öÔ¤Ïȶ¨ÒåºÃµÄ±äÁ¿¿É¹©Ê¹Óá£
require
requireº¯ÊýÓÃÓÚÔÚµ±Ç°Ä£¿éÖмÓÔØºÍʹÓñðµÄÄ£¿é£¬´«ÈëÒ»¸öÄ£¿éÃû£¬·µ»ØÒ»¸öÄ£¿éµ¼³ö¶ÔÏó¡£Ä£¿éÃû¿ÉʹÓÃÏà¶Ô·¾¶£¨ÒÔ./¿ªÍ·£©£¬»òÕßÊǾø¶Ô·¾¶£¨ÒÔ/»òC:Ö®ÀàµÄÅÌ·û¿ªÍ·£©¡£ÁíÍ⣬ģ¿éÃûÖеÄ.jsÀ©Õ¹Ãû¿ÉÒÔÊ¡ÂÔ¡£ÒÔÏÂÊÇÒ»¸öÀý×Ó¡£
var foo1 = require('./foo'); var foo2 = require('./foo.js'); var foo3 = require('/home/user/foo'); var foo4 = require('/home/user/foo.js'); // foo1ÖÁfoo4Öб£´æµÄÊÇͬһ¸öÄ£¿éµÄµ¼³ö¶ÔÏó¡£ |
ÁíÍ⣬¿ÉÒÔʹÓÃÒÔÏ·½Ê½¼ÓÔØºÍʹÓÃÒ»¸öJSONÎļþ£¬Ä£¿éÃûÖÐ.jsonÀ©Õ¹Ãû²»¿ÉÊ¡ÂÔ¡£
var data = require('./data.json');
|
exports
exports¶ÔÏóÊǵ±Ç°Ä£¿éµÄµ¼³ö¶ÔÏó£¬ÓÃÓÚµ¼³öÄ£¿é¹«Óз½·¨ºÍÊôÐÔ¡£±ðµÄÄ£¿éͨ¹ýrequireº¯ÊýʹÓõ±Ç°Ä£¿éʱµÃµ½µÄ¾ÍÊǵ±Ç°Ä£¿éµÄexports¶ÔÏó¡£ÒÔÏÂÀý×ÓÖе¼³öÁËÒ»¸ö¹«Óз½·¨¡£
exports.hello = function () { console.log('Hello World!'); };
|
module
ͨ¹ýmodule¶ÔÏó¿ÉÒÔ·ÃÎʵ½µ±Ç°Ä£¿éµÄһЩÏà¹ØÐÅÏ¢£¬µ«×î¶àµÄÓÃ;ÊÇÌæ»»µ±Ç°Ä£¿éµÄµ¼³ö¶ÔÏó¡£ÀýÈçÄ£¿éµ¼³ö¶ÔÏóĬÈÏÊÇÒ»¸öÆÕͨ¶ÔÏó£¬Èç¹ûÏë¸Ä³ÉÒ»¸öº¯ÊýµÄ»°£¬¿ÉÒÔʹÓÃÒÔÏ·½Ê½¡£
module.exports = function () { console.log('Hello World!'); };
|
ÒÔÉÏ´úÂëÖУ¬Ä£¿éĬÈϵ¼³ö¶ÔÏó±»Ì滻Ϊһ¸öº¯Êý¡£
Ä£¿é³õʼ»¯
Ò»¸öÄ£¿éÖеÄJS´úÂë½öÔÚÄ£¿éµÚÒ»´Î±»Ê¹ÓÃʱִÐÐÒ»´Î£¬²¢ÔÚÖ´Ðйý³ÌÖгõʼ»¯Ä£¿éµÄµ¼³ö¶ÔÏó¡£Ö®ºó£¬»º´æÆðÀ´µÄµ¼³ö¶ÔÏó±»Öظ´ÀûÓá£
Ö÷Ä£¿é
ͨ¹ýÃüÁîÐвÎÊý´«µÝ¸øNodeJSÒÔÆô¶¯³ÌÐòµÄÄ£¿é±»³ÆÎªÖ÷Ä£¿é¡£Ö÷Ä£¿é¸ºÔðµ÷¶È×é³ÉÕû¸ö³ÌÐòµÄÆäËüÄ£¿éÍê³É¹¤×÷¡£ÀýÈçͨ¹ýÒÔÏÂÃüÁîÆô¶¯³ÌÐòʱ£¬main.js¾ÍÊÇÖ÷Ä£¿é¡£
ÍêÕûʾÀý
ÀýÈçÓÐÒÔÏÂĿ¼¡£
- /home/user/hello/ - util/ counter.js main.js
|
ÆäÖÐcounter.jsÄÚÈÝÈçÏ£º
var i = 0; function count() { return ++i; } exports.count = count;
|
¸ÃÄ£¿éÄÚ²¿¶¨ÒåÁËÒ»¸ö˽ÓбäÁ¿i£¬²¢ÔÚexports¶ÔÏóµ¼³öÁËÒ»¸ö¹«Óз½·¨count¡£
Ö÷Ä£¿émain.jsÄÚÈÝÈçÏ£º
var counter1 = require('./util/counter'); var counter2 = require('./util/counter'); console.log(counter1.count()); console.log(counter2.count()); console.log(counter2.count());
|
ÔËÐиóÌÐòµÄ½á¹ûÈçÏ£º
¿ÉÒÔ¿´µ½£¬counter.js²¢Ã»ÓÐÒòΪ±»requireÁËÁ½´Î¶ø³õʼ»¯Á½´Î¡£
¶þ½øÖÆÄ£¿é
ËäȻһ°ãÎÒÃÇʹÓÃJS±àдģ¿é£¬µ«NodeJSÒ²Ö§³ÖʹÓÃC/C++±àд¶þ½øÖÆÄ£¿é¡£±àÒëºÃµÄ¶þ½øÖÆÄ£¿é³ýÁËÎļþÀ©Õ¹ÃûÊÇ.nodeÍ⣬ºÍJSÄ£¿éµÄʹÓ÷½Ê½Ïàͬ¡£ËäÈ»¶þ½øÖÆÄ£¿éÄÜʹÓòÙ×÷ϵͳÌṩµÄËùÓй¦ÄÜ£¬ÓµÓÐÎÞÏÞµÄDZÄÜ£¬µ«¶ÔÓÚǰ¶Ëͬѧ¶øÑÔ±àд¹ýÓÚÀ§ÄÑ£¬²¢ÇÒÄÑÒÔ¿çÆ½Ì¨Ê¹Óã¬Òò´Ë²»ÔÚ±¾½Ì³ÌµÄ¸²¸Ç·¶Î§ÄÚ¡£
С½á
±¾Õ½éÉÜÁËÓйØNodeJSµÄ»ù±¾¸ÅÄîºÍʹÓ÷½·¨£¬×ܽáÆðÀ´ÓÐÒÔÏÂ֪ʶµã£º
1.NodeJSÊÇÒ»¸öJS½Å±¾½âÎöÆ÷£¬ÈκβÙ×÷ϵͳϰ²×°NodeJS±¾ÖÊÉÏ×öµÄÊÂÇé¶¼ÊǰÑNodeJSÖ´ÐгÌÐò¸´ÖƵ½Ò»¸öĿ¼£¬È»ºó±£Ö¤Õâ¸öĿ¼ÔÚϵͳPATH»·¾³±äÁ¿Ï£¬ÒÔ±ãÖÕ¶ËÏ¿ÉÒÔʹÓÃnodeÃüÁî¡£
2. ÖÕ¶ËÏÂÖ±½ÓÊäÈënodeÃüÁî¿É½øÈëÃüÁî½»»¥Ä£Ê½£¬ºÜÊʺÏÓÃÀ´²âÊÔһЩJS´úÂëÆ¬¶Î£¬±ÈÈçÕýÔò±í´ïʽ¡£
3.NodeJSʹÓÃCMDÄ£¿éϵͳ£¬Ö÷Ä£¿é×÷Ϊ³ÌÐòÈë¿Úµã£¬ËùÓÐÄ£¿éÔÚÖ´Ðйý³ÌÖÐÖ»³õʼ»¯Ò»´Î¡£
4.³ý·ÇJSÄ£¿é²»ÄÜÂú×ãÐèÇ󣬷ñÔò²»ÒªÇáÒ×ʹÓöþ½øÖÆÄ£¿é£¬·ñÔòÄãµÄÓû§»á½Ð¿àÁ¬Ìì¡£
´úÂëµÄ×éÖ¯ºÍ²¿Êð
ÓоÑéµÄC³ÌÐòÔ±ÔÚ±àдһ¸öгÌÐòʱÊ×ÏÈ´ÓmakeÎļþдÆð¡£Í¬ÑùµÄ£¬Ê¹ÓÃNodeJS±àд³ÌÐòǰ£¬ÎªÁËÓиöÁ¼ºÃµÄ¿ª¶Ë£¬Ê×ÏÈÐèҪ׼±¸ºÃ´úÂëµÄĿ¼½á¹¹ºÍ²¿Êð·½Ê½£¬¾ÍÈçͬÐÞ·¿×ÓÒªÏÈ´î½ÅÊּܡ£±¾Õ½«½éÉÜÓëÖ®Ïà¹ØµÄ¸÷ÖÖ֪ʶ¡£
Ä£¿é·¾¶½âÎö¹æÔò
ÎÒÃÇÒѾ֪µÀ£¬requireº¯ÊýÖ§³Öб¸Ü£¨/£©»òÅÌ·û£¨C:£©¿ªÍ·µÄ¾ø¶Ô·¾¶£¬Ò²Ö§³Ö./¿ªÍ·µÄÏà¶Ô·¾¶¡£µ«ÕâÁ½ÖÖ·¾¶ÔÚÄ£¿éÖ®¼ä½¨Á¢ÁËÇ¿ñîºÏ¹ØÏµ£¬Ò»µ©Ä³¸öÄ£¿éÎļþµÄ´æ·ÅλÖÃÐèÒª±ä¸ü£¬Ê¹ÓøÃÄ£¿éµÄÆäËüÄ£¿éµÄ´úÂëÒ²ÐèÒª¸ú×ŵ÷Õû£¬±äµÃÇ£Ò»·¢¶¯È«Éí¡£Òò´Ë£¬requireº¯ÊýÖ§³ÖµÚÈýÖÖÐÎʽµÄ·¾¶£¬Ð´·¨ÀàËÆÓÚfoo/bar£¬²¢ÒÀ´Î°´ÕÕÒÔϹæÔò½âÎö·¾¶£¬Ö±µ½ÕÒµ½Ä£¿éλÖá£
1.ÄÚÖÃÄ£¿é
Èç¹û´«µÝ¸ørequireº¯ÊýµÄÊÇNodeJSÄÚÖÃÄ£¿éÃû³Æ£¬²»×ö·¾¶½âÎö£¬Ö±½Ó·µ»ØÄÚ²¿Ä£¿éµÄµ¼³ö¶ÔÏó£¬ÀýÈçrequire('fs')¡£
2.node_modulesĿ¼
NodeJS¶¨ÒåÁËÒ»¸öÌØÊâµÄnode_modulesĿ¼ÓÃÓÚ´æ·ÅÄ£¿é¡£ÀýÈçij¸öÄ£¿éµÄ¾ø¶Ô·¾¶ÊÇ/home/user/hello.js£¬ÔÚ¸ÃÄ£¿éÖÐʹÓÃrequire('foo/bar')·½Ê½¼ÓÔØÄ£¿éʱ£¬ÔòNodeJSÒÀ´Î³¢ÊÔʹÓÃÒÔÏ·¾¶¡£
/home/user/node_modules/foo/bar /home/node_modules/foo/bar /node_modules/foo/bar
|
3.NODE_PATH»·¾³±äÁ¿
ÓëPATH»·¾³±äÁ¿ÀàËÆ£¬NodeJSÔÊÐíͨ¹ýNODE_PATH»·¾³±äÁ¿À´Ö¸¶¨¶îÍâµÄÄ£¿éËÑË÷·¾¶¡£NODE_PATH»·¾³±äÁ¿Öаüº¬Ò»µ½¶à¸öĿ¼·¾¶£¬Â·¾¶Ö®¼äÔÚ*nixÏÂʹÓÃ:·Ö¸ô£¬ÔÚWindowsÏÂʹÓÃ;·Ö¸ô¡£ÀýÈ綨ÒåÁËÒÔÏÂNODE_PATH»·¾³±äÁ¿£º
NODE_PATH=/home/user/lib:/home/lib
|
µ±Ê¹ÓÃrequire('foo/bar')µÄ·½Ê½¼ÓÔØÄ£¿éʱ£¬ÔòNodeJSÒÀ´Î³¢ÊÔÒÔÏ·¾¶¡£
/home/user/lib/foo/bar /home/lib/foo/bar
|
°ü£¨package£©
ÎÒÃÇÒѾ֪µÀÁËJSÄ£¿éµÄ»ù±¾µ¥Î»Êǵ¥¸öJSÎļþ£¬µ«¸´ÔÓЩµÄÄ£¿éÍùÍùÓɶà¸ö×ÓÄ£¿é×é³É¡£ÎªÁ˱ãÓÚ¹ÜÀíºÍʹÓã¬ÎÒÃÇ¿ÉÒÔ°ÑÓɶà¸ö×ÓÄ£¿é×é³ÉµÄ´óÄ£¿é³Æ×ö°ü£¬²¢°ÑËùÓÐ×ÓÄ£¿é·ÅÔÚͬһ¸öĿ¼Àï¡£
ÔÚ×é³ÉÒ»¸ö°üµÄËùÓÐ×ÓÄ£¿éÖУ¬ÐèÒªÓÐÒ»¸öÈë¿ÚÄ£¿é£¬Èë¿ÚÄ£¿éµÄµ¼³ö¶ÔÏó±»×÷Ϊ°üµÄµ¼³ö¶ÔÏó¡£ÀýÈçÓÐÒÔÏÂĿ¼½á¹¹¡£
- /home/user/lib/ - cat/ head.js body.js main.js
|
ÆäÖÐcatĿ¼¶¨ÒåÁËÒ»¸ö°ü£¬ÆäÖаüº¬ÁË3¸ö×ÓÄ£¿é¡£main.js×÷ΪÈë¿ÚÄ£¿é£¬ÆäÄÚÈÝÈçÏ£º
var head = require('./head'); var body = require('./body'); exports.create = function (name) { return { name: name, head: head.create(), body: body.create() }; };
|
ÔÚÆäËüÄ£¿éÀïʹÓðüµÄʱºò£¬ÐèÒª¼ÓÔØ°üµÄÈë¿ÚÄ£¿é¡£½Ó×ÅÉÏÀý£¬Ê¹ÓÃrequire('/home/user/lib/cat/main')ÄܴﵽĿµÄ£¬µ«ÊÇÈë¿ÚÄ£¿éÃû³Æ³öÏÖÔÚ·¾¶Àï¿´ÉÏÈ¥²»ÊǸöºÃÖ÷Òâ¡£Òò´ËÎÒÃÇÐèÒª×öµã¶îÍâµÄ¹¤×÷£¬ÈðüʹÓÃÆðÀ´¸üÏñÊǵ¥¸öÄ£¿é¡£
index.js
µ±Ä£¿éµÄÎļþÃûÊÇindex.js£¬¼ÓÔØÄ£¿éʱ¿ÉÒÔʹÓÃÄ£¿éËùÔÚĿ¼µÄ·¾¶´úÌæÄ£¿éÎļþ·¾¶£¬Òò´Ë½Ó×ÅÉÏÀý£¬ÒÔÏÂÁ½ÌõÓï¾äµÈ¼Û¡£
var cat = require('/home/user/lib/cat'); var cat = require('/home/user/lib/cat/index');
|
ÕâÑù´¦Àíºó£¬¾ÍÖ»ÐèÒª°Ñ°üĿ¼·¾¶´«µÝ¸ørequireº¯Êý£¬¸Ð¾õÉÏÕû¸öĿ¼±»µ±×÷µ¥¸öÄ£¿éʹÓ㬸üÓÐÕûÌå¸Ð¡£
package.json
Èç¹ûÏë×Ô¶¨ÒåÈë¿ÚÄ£¿éµÄÎļþÃûºÍ´æ·ÅλÖ㬾ÍÐèÒªÔÚ°üĿ¼Ï°üº¬Ò»¸öpackage.jsonÎļþ£¬²¢ÔÚÆäÖÐÖ¸¶¨Èë¿ÚÄ£¿éµÄ·¾¶¡£ÉÏÀýÖеÄcatÄ£¿é¿ÉÒÔÖØ¹¹ÈçÏ¡£
- /home/user/lib/ - cat/ + doc/ - lib/ head.js body.js main.js + tests/ package.json
|
ÆäÖÐpackage.jsonÄÚÈÝÈçÏ¡£
{ "name": "cat", "main": "./lib/main.js" }
|
Èç´ËÒ»À´£¬¾ÍͬÑù¿ÉÒÔʹÓÃrequire('/home/user/lib/cat')µÄ·½Ê½¼ÓÔØÄ£¿é¡£NodeJS»á¸ù¾Ý°üĿ¼ÏµÄpackage.jsonÕÒµ½Èë¿ÚÄ£¿éËùÔÚλÖá£
ÃüÁîÐгÌÐò
ʹÓÃNodeJS±àдµÄ¶«Î÷£¬ÒªÃ´ÊÇÒ»¸ö°ü£¬ÒªÃ´ÊÇÒ»¸öÃüÁîÐгÌÐò£¬¶øÇ°Õß×îÖÕÒ²»áÓÃÓÚ¿ª·¢ºóÕß¡£Òò´ËÎÒÃÇÔÚ²¿Êð´úÂëʱÐèҪһЩ¼¼ÇÉ£¬ÈÃÓû§¾õµÃ×Ô¼ºÊÇÔÚʹÓÃÒ»¸öÃüÁîÐгÌÐò¡£
ÀýÈçÎÒÃÇÓÃNodeJSдÁ˸ö³ÌÐò£¬¿ÉÒÔ°ÑÃüÁîÐвÎÊýÔÑù´òÓ¡³öÀ´¡£¸Ã³ÌÐòºÜ¼òµ¥£¬ÔÚÖ÷Ä£¿éÄÚʵÏÖÁËËùÓй¦ÄÜ¡£²¢ÇÒдºÃºó£¬ÎÒÃǰѸóÌÐò²¿ÊðÔÚ/home/user/bin/node-echo.jsÕâ¸öλÖá£ÎªÁËÔÚÈκÎĿ¼Ï¶¼ÄÜÔËÐиóÌÐò£¬ÎÒÃÇÐèҪʹÓÃÒÔÏÂÖÕ¶ËÃüÁî¡£
$ node /home/user/bin/node-echo.js Hello World Hello World
|
ÕâÖÖʹÓ÷½Ê½¿´ÆðÀ´²»ÔõôÏñÊÇÒ»¸öÃüÁîÐгÌÐò£¬Ï±ߵIJÅÊÇÎÒÃÇÆÚÍûµÄ·½Ê½¡£
*nix
ÔÚ*nixϵͳÏ£¬ÎÒÃÇ¿ÉÒÔ°ÑJSÎļþµ±×÷shell½Å±¾À´ÔËÐУ¬´Ó¶ø´ïµ½ÉÏÊöÄ¿µÄ£¬¾ßÌå²½ÖèÈçÏ£º
1.ÔÚshell½Å±¾ÖУ¬¿ÉÒÔͨ¹ý#!×¢ÊÍÀ´Ö¸¶¨µ±Ç°½Å±¾Ê¹ÓõĽâÎöÆ÷¡£ËùÒÔÎÒÃÇÊ×ÏÈÔÚnode-echo.jsÎļþ¶¥²¿Ôö¼ÓÒÔÏÂÒ»ÐÐ×¢ÊÍ£¬±íÃ÷µ±Ç°½Å±¾Ê¹ÓÃNodeJS½âÎö¡£
NodeJS»áºöÂÔµôλÓÚJSÄ£¿éÊ×ÐеÄ#!×¢ÊÍ£¬²»±Øµ£ÐÄÕâÐÐ×¢ÊÍÊÇ·Ç·¨Óï¾ä¡£
2.È»ºó£¬ÎÒÃÇʹÓÃÒÔÏÂÃüÁÓènode-echo.jsÎļþÖ´ÐÐȨÏÞ¡£
$ chmod +x /home/user/bin/node-echo.js |
3.×îºó£¬ÎÒÃÇÔÚPATH»·¾³±äÁ¿ÖÐÖ¸¶¨µÄij¸öĿ¼Ï£¬ÀýÈçÔÚ/usr/local/binϱߴ´½¨Ò»¸öÈíÁ´Îļþ£¬ÎļþÃûÓëÎÒÃÇÏ£ÍûʹÓõÄÖÕ¶ËÃüÁîͬÃû£¬ÃüÁîÈçÏ£º
$ sudo ln -s /home/user/bin/node-echo.js /usr/local/bin/node-echo |
ÕâÑù´¦Àíºó£¬ÎÒÃǾͿÉÒÔÔÚÈκÎĿ¼ÏÂʹÓÃnode-echoÃüÁîÁË¡£
Windows
ÔÚWindowsϵͳϵÄ×ö·¨ÍêÈ«²»Í¬£¬ÎÒÃǵÿ¿.cmdÎļþÀ´½â¾öÎÊÌâ¡£¼ÙÉènode-echo.js´æ·ÅÔÚC:\Users\user\binĿ¼£¬²¢ÇÒ¸ÃĿ¼ÒѾÌí¼Óµ½PATH»·¾³±äÁ¿ÀïÁË¡£½ÓÏÂÀ´ÐèÒªÔÚ¸ÃĿ¼ÏÂн¨Ò»¸öÃûΪnode-echo.cmdµÄÎļþ£¬ÎļþÄÚÈÝÈçÏ£º
@node "C:\User\user\bin\node-echo.js" %*
|
ÕâÑù´¦Àíºó£¬ÎÒÃǾͿÉÒÔÔÚÈκÎĿ¼ÏÂʹÓÃnode-echoÃüÁîÁË¡£
¹¤³ÌĿ¼
Á˽âÁËÒÔÉÏ֪ʶºó£¬ÏÖÔÚÎÒÃÇ¿ÉÒÔÀ´ÍêÕûµØ¹æ»®Ò»¸ö¹¤³ÌĿ¼ÁË¡£ÒÔ±àдһ¸öÃüÁîÐгÌÐòΪÀý£¬Ò»°ãÎÒÃÇ»áͬʱÌṩÃüÁîÐÐģʽºÍAPIģʽÁ½ÖÖʹÓ÷½Ê½£¬²¢ÇÒÎÒÃÇ»á½èÖúÈý·½°üÀ´±àд´úÂë¡£³ýÁË´úÂëÍ⣬һ¸öÍêÕûµÄ³ÌÐòÒ²Ó¦¸ÃÓÐ×Ô¼ºµÄÎĵµºÍ²âÊÔÓÃÀý¡£Òò´Ë£¬Ò»¸ö±ê×¼µÄ¹¤³ÌĿ¼¶¼¿´ÆðÀ´ÏñϱßÕâÑù¡£
- /home/user/workspace/node-echo/ # ¹¤³ÌĿ¼ - bin/ # ´æ·ÅÃüÁîÐÐÏà¹Ø´úÂë node-echo + doc/ # ´æ·ÅÎĵµ - lib/ # ´æ·ÅAPIÏà¹Ø´úÂë echo.js - node_modules/ # ´æ·ÅÈý·½°ü + argv/ + tests/ # ´æ·Å²âÊÔÓÃÀý package.json # ÔªÊý¾ÝÎļþ README.md # ˵Ã÷Îļþ
|
ÆäÖв¿·ÖÎļþÄÚÈÝÈçÏ£º
/* bin/node-echo */ var argv = require('argv'), echo = require('../lib/echo'); console.log(echo(argv.join(' '))); /* lib/echo.js */ module.exports = function (message) { return message; }; /* package.json */ { "name": "node-echo", "main": "./lib/echo.js" }
|
ÒÔÉÏÀý×ÓÖзÖÀà´æ·ÅÁ˲»Í¬ÀàÐ͵ÄÎļþ£¬²¢Í¨¹ýnode_moudlesĿ¼ֱ½ÓʹÓÃÈý·½°üÃû¼ÓÔØÄ£¿é¡£´ËÍ⣬¶¨ÒåÁËpackage.jsonÖ®ºó£¬node-echoĿ¼Ҳ¿É±»µ±×÷Ò»¸ö°üÀ´Ê¹Óá£
NPM
NPMÊÇËæÍ¬NodeJSÒ»Æð°²×°µÄ°ü¹ÜÀí¹¤¾ß£¬Äܽâ¾öNodeJS´úÂ벿ÊðÉϵĺܶàÎÊÌ⣬³£¼ûµÄʹÓó¡¾°ÓÐÒÔϼ¸ÖÖ£º
1.ÔÊÐíÓû§´ÓNPM·þÎñÆ÷ÏÂÔØ±ðÈ˱àдµÄÈý·½°üµ½±¾µØÊ¹Óá£
2. ÔÊÐíÓû§´ÓNPM·þÎñÆ÷ÏÂÔØ²¢°²×°±ðÈ˱àдµÄÃüÁîÐгÌÐòµ½±¾µØÊ¹Óá£
3. ÔÊÐíÓû§½«×Ô¼º±àдµÄ°ü»òÃüÁîÐгÌÐòÉÏ´«µ½NPM·þÎñÆ÷¹©±ðÈËʹÓá£
¿ÉÒÔ¿´µ½£¬NPM½¨Á¢ÁËÒ»¸öNodeJSÉú̬Ȧ£¬NodeJS¿ª·¢ÕߺÍÓû§¿ÉÒÔÔÚÀï±ß»¥Í¨ÓÐÎÞ¡£ÒÔÏ·ֱð½éÉÜÕâÈýÖÖ³¡¾°ÏÂÔõÑùʹÓÃNPM¡£
ÏÂÔØÈý·½°ü
ÐèҪʹÓÃÈý·½°üʱ£¬Ê×ÏȵÃÖªµÀÓÐÄÄЩ°ü¿ÉÓá£ËäÈ»npmjs.orgÌṩÁ˸öËÑË÷¿ò¿ÉÒÔ¸ù¾Ý°üÃûÀ´ËÑË÷£¬µ«Èç¹ûÁ¬ÏëʹÓõÄÈý·½°üµÄÃû×Ö¶¼²»È·¶¨µÄ»°£¬¾ÍÇë°Ù¶Èһϰɡ£ÖªµÀÁ˰üÃûºó£¬±ÈÈçÉϱßÀý×ÓÖеÄargv£¬¾Í¿ÉÒÔÔÚ¹¤³ÌĿ¼Ï´ò¿ªÖÕ¶Ë£¬Ê¹ÓÃÒÔÏÂÃüÁîÀ´ÏÂÔØÈý·½°ü¡£
$ npm install argv ... argv@0.0.2 node_modules\argv
|
ÏÂÔØºÃÖ®ºó£¬argv°ü¾Í·ÅÔÚÁ˹¤³ÌĿ¼ÏµÄnode_modulesĿ¼ÖУ¬Òò´ËÔÚ´úÂëÖÐÖ»ÐèҪͨ¹ýrequire('argv')µÄ·½Ê½¾ÍºÃ£¬ÎÞÐèÖ¸¶¨Èý·½°ü·¾¶¡£
ÒÔÉÏÃüÁîĬÈÏÏÂÔØ×îаæÈý·½°ü£¬Èç¹ûÏëÒªÏÂÔØÖ¸¶¨°æ±¾µÄ»°£¬¿ÉÒÔÔÚ°üÃûºó±ß¼ÓÉÏ@<version>£¬ÀýÈçͨ¹ýÒÔÏÂÃüÁî¿ÉÏÂÔØ0.0.1°æµÄargv¡£
$ npm install argv@0.0.1 ... argv@0.0.1 node_modules\argv
|
Èç¹ûʹÓõ½µÄÈý·½°ü±È½Ï¶à£¬ÔÚÖÕ¶ËÏÂÒ»¸ö°üÒ»ÌõÃüÁîµØ°²×°Î´ÃâÌ«ÈËÈâÁË¡£Òò´ËNPM¶Ôpackage.jsonµÄ×Ö¶Î×öÁËÀ©Õ¹£¬ÔÊÐíÔÚÆäÖÐÉêÃ÷Èý·½°üÒÀÀµ¡£Òò´Ë£¬ÉϱßÀý×ÓÖеÄpackage.json¿ÉÒÔ¸ÄдÈçÏ£º
{ "name": "node-echo", "main": "./lib/echo.js", "dependencies": { "argv": "0.0.2" } }
|
ÕâÑù´¦Àíºó£¬ÔÚ¹¤³ÌĿ¼Ï¾ͿÉÒÔʹÓÃnpm installÃüÁîÅúÁ¿°²×°Èý·½°üÁË¡£¸üÖØÒªµÄÊÇ£¬µ±ÒÔºónode-echoÒ²ÉÏ´«µ½ÁËNPM·þÎñÆ÷£¬±ðÈËÏÂÔØÕâ¸ö°üʱ£¬NPM»á¸ù¾Ý°üÖÐÉêÃ÷µÄÈý·½°üÒÀÀµ×Ô¶¯ÏÂÔØ½øÒ»²½ÒÀÀµµÄÈý·½°ü¡£ÀýÈ磬ʹÓÃnpm
install node-echoÃüÁîʱ£¬NPM»á×Ô¶¯´´½¨ÒÔÏÂĿ¼½á¹¹¡£
- project/ - node_modules/ - node-echo/ - node_modules/ + argv/ ... ...
|
Èç´ËÒ»À´£¬Óû§Ö»Ðè¹ØÐÄ×Ô¼ºÖ±½ÓʹÓõÄÈý·½°ü£¬²»ÐèÒª×Ô¼ºÈ¥½â¾öËùÓаüµÄÒÀÀµ¹ØÏµ¡£
°²×°ÃüÁîÐгÌÐò
´ÓNPM·þÎñÉÏÏÂÔØ°²×°Ò»¸öÃüÁîÐгÌÐòµÄ·½·¨ÓëÈý·½°üÀàËÆ¡£ÀýÈçÉÏÀýÖеÄnode-echoÌṩÁËÃüÁîÐÐʹÓ÷½Ê½£¬Ö»Òªnode-echo×Ô¼ºÅäÖúÃÁËÏà¹ØµÄpackage.json×ֶΣ¬¶ÔÓÚÓû§¶øÑÔ£¬Ö»ÐèҪʹÓÃÒÔÏÂÃüÁî°²×°³ÌÐò¡£
$ npm install node-echo -g
|
²ÎÊýÖеÄ-g±íʾȫ¾Ö°²×°£¬Òò´Ënode-echo»áĬÈϰ²×°µ½ÒÔÏÂλÖ㬲¢ÇÒNPM»á×Ô¶¯´´½¨ºÃ*nixϵͳÏÂÐèÒªµÄÈíÁ´Îļþ»òWindowsϵͳÏÂÐèÒªµÄ.cmdÎļþ¡£
- /usr/local/ # *nixϵͳÏ - lib/node_modules/ + node-echo/ ... - bin/ node-echo ... ... - %APPDATA%\npm\ # WindowsϵͳÏ - node_modules\ + node-echo\ ... node-echo.cmd ...
|
·¢²¼´úÂë
µÚÒ»´ÎʹÓÃNPM·¢²¼´úÂëǰÐèҪע²áÒ»¸öÕ˺š£ÖÕ¶ËÏÂÔËÐÐnpm adduser£¬Ö®ºó°´ÕÕÌáʾ×ö¼´¿É¡£Õ˺Ÿ㶨ºó£¬½Ó×ÅÎÒÃÇÐèÒª±à¼package.jsonÎļþ£¬¼ÓÈëNPM±ØÐèµÄ×ֶΡ£½Ó×ÅÉϱßnode-echoµÄÀý×Ó£¬package.jsonÀï±ØÒªµÄ×Ö¶ÎÈçÏ¡£
{ "name": "node-echo", # °üÃû£¬ÔÚNPM·þÎñÆ÷ÉÏÐëÒª±£³ÖΨһ "version": "1.0.0", # µ±Ç°°æ±¾ºÅ "dependencies": { # Èý·½°üÒÀÀµ£¬ÐèÒªÖ¸¶¨°üÃûºÍ°æ±¾ºÅ "argv": "0.0.2" }, "main": "./lib/echo.js", # Èë¿ÚÄ£¿éλÖà "bin" : { "node-echo": "./bin/node-echo" # ÃüÁîÐгÌÐòÃûºÍÖ÷Ä£¿éλÖà } }
|
Ö®ºó£¬ÎÒÃǾͿÉÒÔÔÚpackage.jsonËùÔÚĿ¼ÏÂÔËÐÐnpm publish·¢²¼´úÂëÁË¡£
°æ±¾ºÅ
ʹÓÃNPMÏÂÔØºÍ·¢²¼´úÂëʱ¶¼»á½Ó´¥µ½°æ±¾ºÅ¡£NPMʹÓÃÓïÒå°æ±¾ºÅÀ´¹ÜÀí´úÂ룬ÕâÀï¼òµ¥½éÉÜһϡ£
ÓïÒå°æ±¾ºÅ·ÖΪX.Y.ZÈý룬·Ö±ð´ú±íÖ÷°æ±¾ºÅ¡¢´Î°æ±¾ºÅºÍ²¹¶¡°æ±¾ºÅ¡£µ±´úÂë±ä¸üʱ£¬°æ±¾ºÅ°´ÒÔÏÂÔÔò¸üС£
+ Èç¹ûÖ»ÊÇÐÞ¸´bug£¬ÐèÒª¸üÐÂZλ¡£ + Èç¹ûÊÇÐÂÔöÁ˹¦ÄÜ£¬µ«ÊÇÏòϼæÈÝ£¬ÐèÒª¸üÐÂYλ¡£ + Èç¹ûÓдó±ä¶¯£¬Ïòϲ»¼æÈÝ£¬ÐèÒª¸üÐÂXλ
|
°æ±¾ºÅÓÐÁËÕâ¸ö±£Ö¤ºó£¬ÔÚÉêÃ÷Èý·½°üÒÀÀµÊ±£¬³ýÁË¿ÉÒÀÀµÓÚÒ»¸ö¹Ì¶¨°æ±¾ºÅÍ⣬»¹¿ÉÒÀÀµÓÚij¸ö·¶Î§µÄ°æ±¾ºÅ¡£ÀýÈç"argv":
"0.0.x"±íʾÒÀÀµÓÚ0.0.xϵÁеÄ×îаæargv¡£NPMÖ§³ÖµÄËùÓа汾ºÅ·¶Î§Ö¸¶¨·½Ê½¿ÉÒԲ鿴¹Ù·½Îĵµ¡£
Áé»úÒ»µã
³ýÁ˱¾Õ½éÉܵIJ¿·ÖÍ⣬NPM»¹ÌṩÁ˺ܶ๦ÄÜ£¬package.jsonÀïÒ²ÓкܶàÆäËüÓÐÓõÄ×ֶΡ£³ýÁË¿ÉÒÔÔÚnpmjs.org/doc/²é¿´¹Ù·½ÎĵµÍ⣬ÕâÀïÔÙ½éÉÜһЩNPM³£ÓÃÃüÁî¡£
1.NPMÌṩÁ˺ܶàÃüÁÀýÈçinstallºÍpublish£¬Ê¹ÓÃnpm
help¿É²é¿´ËùÓÐÃüÁî¡£
2.ʹÓÃnpm help <command>¿É²é¿´Ä³ÌõÃüÁîµÄÏêϸ°ïÖú£¬ÀýÈçnpm
help install¡£
3.ÔÚpackage.jsonËùÔÚĿ¼ÏÂʹÓÃnpm install .
-g¿ÉÏÈÔÚ±¾µØ°²×°µ±Ç°ÃüÁîÐгÌÐò£¬¿ÉÓÃÓÚ·¢²¼Ç°µÄ±¾µØ²âÊÔ¡£
4.ʹÓÃnpm update <package>¿ÉÒ԰ѵ±Ç°Ä¿Â¼ÏÂnode_modules×ÓĿ¼Àï±ßµÄ¶ÔӦģ¿é¸üÐÂÖÁ×îа汾¡£
5. ʹÓÃnpm update <package> -g¿ÉÒÔ°ÑÈ«¾Ö°²×°µÄ¶ÔÓ¦ÃüÁîÐгÌÐò¸üÐÂÖÁ×îа档
6. ʹÓÃnpm cache clear¿ÉÒÔÇå¿ÕNPM±¾µØ»º´æ£¬ÓÃÓÚ¶Ô¸¶Ê¹ÓÃÏàͬ°æ±¾ºÅ·¢²¼Ð°汾´úÂëµÄÈË¡£
7. ʹÓÃnpm unpublish <package>@<version>¿ÉÒÔ³·Ïú·¢²¼×Ô¼º·¢²¼¹ýµÄij¸ö°æ±¾´úÂë¡£
С½á
±¾Õ½éÉÜÁËʹÓÃNodeJS±àд´úÂëǰÐèÒª×öµÄ×¼±¸¹¤×÷£¬×ܽáÆðÀ´ÓÐÒÔϼ¸µã£º
1.±àд´úÂëǰÏȹ滮ºÃĿ¼½á¹¹£¬²ÅÄÜ×öµ½ÓÐÌõ²»ÎÉ¡£
2. ÉÓ´óЩµÄ³ÌÐò¿ÉÒÔ½«´úÂë²ð·ÖΪ¶à¸öÄ£¿é¹ÜÀí£¬¸ü´óЩµÄ³ÌÐò¿ÉÒÔʹÓðüÀ´×é֯ģ¿é¡£
3. ºÏÀíʹÓÃnode_modulesºÍNODE_PATHÀ´½âñî°üµÄʹÓ÷½Ê½ºÍÎïÀí·¾¶¡£
4. ʹÓÃNPM¼ÓÈëNodeJSÉú̬Ȧ»¥Í¨ÓÐÎÞ¡£
5. Ïëµ½ÁËÐÄÒǵİüÃûʱÇëÌáǰÔÚNPMÉÏÇÀ×¢¡£
|