Node js global o'zgaruvchilari. NodeJS. Global ob'ekt. Fayllarni o'qish va yozish

Tugunda siz "global" yoki "GLOBAL" ob'ekti yordamida global o'zgaruvchilarni o'rnatishingiz mumkin:

GLOBAL._ = talab ("pastki chiziq"); // lekin siz buni qilmasligingiz kerak! (quyidagi eslatmaga qarang)

yoki ko'proq foydali ...

GLOBAL.window = GLOBAL; // brauzerdagi kabi

Tugundan ular bir-biriga tikilganligini ko'rishingiz mumkin:

Node-v0.6.6/src/node.js:28:global = bu; 128: global.GLOBAL = global;

Yuqoridagi kodda "bu" global kontekstdir. CommonJS modulida (qaysi tugun foydalanadi), modul ichidagi bu "ob'ekt" (ya'ni "sizning kodingiz") global kontekst EMAS. Buning isboti uchun quyida men "bu" ob'ektni va keyin ulkan "GLOBAL" ob'ektni qaerdan chiqarganimni ko'ring.

Console.log("\nBU:"); console.log(bu); console.log("\nGLOBAL:"); console.log(global); /* chiqadi ... BU: {} GLOBAL: ( ArrayBuffer: , Int8Array: ( BYTES_PER_ELEMENT: 1 ), Uint8Array: ( BYTES_PER_ELEMENT: 1 ), Int16Array: ( BYTES_PER_ELEMENT: 2 ), Uint16Array: ( BYTES_PER_ELEMENT: BYTES_PER_ELEMENT: Uint8Array: (BYTES_PER_ELEMENT: BYTES:_2), 32 Massiv: ( BYTES_PER _ELEMENT: 4 ), Float32Array: ( BYTES_PER_ELEMENT: 4 ), Float64Array: ( BYTES_PER_ELEMENT: 8 ), DataView: , global: , jarayon: ( EventEmitter: , sarlavha: "tugun", assert: , versiya: "v0.6.5", _tick , moduleLoadList: [ "Binding baholash", "NativeModulelarni ulash", "NativeModule hodisalari", "NativeModule buferi", "Binding bufer", "NativeModule assert", "NativeModule util", "NativeModule yo'li", "NativeModule moduli", " NativeModule fs, "Binding fs", "Binding console", "NativeModule oqimi", "NativeModule konsoli", "Binding tty_wrap", "NativeModule tty", "NativeModule net", "NativeModule taymerlari", "Binding timer_wrap", " NativeModule _linklist" ], versiyalar: ( tugun: "0.6.5", v8: "3.6.6.11", ares: "1.7.5-DEV", uv: "0.6", openssl: "0.9.8n" ), nextTick : , stdout: , arch: "x64", stderr: , platforma: "darvin", argv: [ "tugun", "/workspace/zd/zgap/darwin-js/index.js" ], stdin: , env: ( TERM_PROGRAM: "iTerm.app", "COM_GOOGLE_CHROME_FRAMEWORK_SERVICE_PROCESS/USERS/DDOPSON/LIBRARY/APPLICATION_SUPPORT/GOOGLE/CHROME_SOCKET": "/tmp/launch-nScket/:ELLScket/"ermbaa", "term"/" sh" , TMPDIR: "/var/folders/2h/2hQmtmXlFT4yVGtr5DBpdl9LAiQ/-Tmp-/", Apple_PubSub_Socket_Render: "/tmp/launch-9Ga0PT/Render", FOYDALANUVCHI: "ddopson", COMMAND_MODE: "unix:AUTH3", SSHOC_0 ishga tushirish -sD905b/Listeners", __CF_USER_TEXT_ENCODING: "0x12D732E7:0:0", PATH: "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:~/bin:/usr/ X11 /bin", PWD: "/workspace/zd/zgap/darwin-js", LANG: "en_US.UTF-8", ITERM_PROFILE: "Standart", SHLVL: "1", COLORFGBG: "7;0", HOME: "/Users/ddopson", ITERM_SESSION_ID: "w0t0p0", LOGNAME: "ddopson", DISPLAY: "/tmp/launch-l9RQXI/org.x:0", OLDPWD: "/workspace/zd/zgap/darwin- js /external", _: "./index.js"), openStdin: , exit: , pid: 10321, xususiyatlar: (disbob: false, uv: true, ipv6: true, tls_npn: false, tls_sni: true, tls : true ), kill: , execPath: "/usr/local/bin/node", addListener: , _needTickCallback: , on: , removeListener: , reallyExit: , chdir: , disk raskadrovka: , xato: , cwd: , watchFile: , umask : , getuid: , unwatchFile: , mixin: , setuid: , setgid: , createChildProcess: , getgid: , meros qilib oladi: , _kill: , _byteLength: , mainModule: ( id: ". ", eksport: (), ota: null, fayl nomi: "/workspace/zd/zgap/darwin-js/index.js", yuklangan: noto'g'ri, chiqarilgan: noto'g'ri, bolalar: , yo'llar: ), _debugProcess: , dlopen: , ish vaqti: , xotiraUsage: , uvCounters: , ulash: ), GLOBAL: , root: , Bufer: ( poolSize: 8192, isBuffer: , byteLength: , _charsWritten: 8 ), setTimeout: , setIntervalout: , clearTime, konsol: , oyna: , navigator: () ) */

**Izoh: "GLOBAL._" sozlamasiga kelsak, umuman olganda, var _ = require("pastki chiziq"); . Ha, siz buni pastki chiziqdan foydalanadigan har bir faylda qilasiz, xuddi Java-da com.foo.bar-ni import qilganingiz kabi; . Bu sizning kodingiz nima qilayotganini aniqlashni osonlashtiradi, chunki fayllar orasidagi bog'lanishlar "aniq". Engil zerikarli, lekin yaxshi. Bu va'z.

Har bir qoida uchun istisno mavjud. Menda "GLOBAL._" ni o'rnatishim kerak bo'lgan bitta misol bor edi. Men asosan JSON bo'lgan, ammo biroz ko'proq moslashuvchanlikni qo'shish uchun "JSda yozilgan" "konfiguratsiya" fayllarini aniqlash uchun tizim yaratdim. Bunday konfiguratsiya fayllarida "talab qilish" iboralari yo'q edi, lekin men ularning pastki chiziqqa kirishini xohlardim (butun tizim pastki chiziq va pastki chiziq naqshlariga asoslangan edi), shuning uchun "config" ni baholashdan oldin "GLOBAL._" ni o'rnatgan bo'lardim. Shunday qilib, ha, har bir qoida uchun biron bir joyda istisno mavjud. Lekin sizda yaxshi sabab bor, shunchaki "men yozishdan charchadim" emas, shuning uchun men kelishuvni buzmoqchiman."

JavaScript-da Global Ob'ekt deb nomlangan maxsus ob'ekt mavjud bo'lib, u va uning barcha atributlariga dasturning istalgan joyidan kirish mumkin, global o'zgaruvchi.

JavaScript brauzeri odatda global oyna ob'ekti, Node.js global ob'ekti global ob'ekt, barcha global o'zgaruvchilar (global o'zlikdan tashqari) global ob'ektga tegishli.

Node.js-da biz global xususiyatlarga to'g'ridan-to'g'ri kirishimiz mumkin, uni ilovaga qo'shmasdan.

Global ob'ektlar va global o'zgaruvchilar

Eng asosiy global rol global xost o'zgaruvchisi sifatida. ECMAScript ta'rifiga ko'ra, quyidagi shartlar global o'zgaruvchilardir:

  • Tashqi o'zgaruvchi aniqlangan;
  • Global ob'ekt xususiyatlari;
  • O'zgaruvchi bevosita aniqlangan (aniqlanmagan o'zgaruvchilarga to'g'ridan-to'g'ri tayinlash).

Global o'zgaruvchini aniqlaganingizda, o'zgaruvchi global ob'ektning mulkiga aylanadi va aksincha. E'tibor bering, Node.js da siz tashqi kontekstda o'zgaruvchilarni aniqlay olmaysiz, chunki barcha foydalanuvchi kodi joriy modulning bir qismidir va modulning o'zi tashqi kontekst emas.

Eslatma: Global o'zgaruvchini kiritmaslik uchun o'zgaruvchilarni aniqlash uchun har doim var dan foydalaning, chunki global o'zgaruvchilar nomlar maydonini ifloslantiradi va aloqa kodining xavfini oshiradi.

__Fayl nomi

__filename hozirda ishlayotgan skriptning fayl nomini bildiradi. Chiqish fayli bo'ladigan joyga mutlaq yo'l, lekin buyruq qatori parametri va fayl nomini ko'rsatish bir xil bo'lishi shart emas. Agar modulda bo'lsa, qaytarilgan qiymat modul fayliga yo'ldir.

misollar

// __filename console.log(__filename);

$ node main.js /web/com/w3big/nodejs/main.js

__dirname

__dirname hozirda joylashgan skript katalogini ifodalaydi.

misollar

main.js faylini yarating, quyidagi kod:

// línhìnìníní __dirname língín console.log(__dirname);

main.js bajariladigan fayl, kod quyidagicha ko'rinadi:

$ tugun main.js /web/com/w3big/nodejs

setTimeout (CB, ms)

setTimeout(C - Bi, milodiy): SetTimeout() funksiyasi faqat bir marta belgilanadi.

Taymerni ifodalovchi tutqichning qiymatini qaytaradi.

misollar

main.js faylini yarating, quyidagi kod:

Funktsiya printHello())( console.log("Salom, Dunyo!"); ) // setTimeout(printHello, 2000);

main.js bajariladigan fayl, kod quyidagicha ko'rinadi:

$ node main.js Salom, dunyo!

clearTimeout(t)

clearTimeout(t) taymer yaratish uchun setTimeout() dan o'tishdan oldin global funktsiyani to'xtatish uchun ishlatiladi. Parametr Kalkulyator yaratish uchun T funktsiyasi setTimeout().

misollar

main.js faylini yarating, quyidagi kod:

Funktsiya printHello())( console.log("Salom, Dunyo!"); ) // var t = setTimeout(printHello, 2000); // língíngíngín clearTimeout(t);

main.js bajariladigan fayl, kod quyidagicha ko'rinadi:

$nodemain.js

setInterval(CB, ms)

setInterval(C - Bi, milodiy) Global funktsiya belgilangan funktsiyani belgilangan millisekundlar (ms) sonidan keyin (CB) bajaradi.

Taymerni ifodalovchi tutqichning qiymatini qaytaradi. Funktsiyadan foydalanishingiz mumkin taymerni tozalash uchun clearInterval(T).

setInterval() usuli funksiyani clearInterval() chaqirilguncha yoki oyna yopilmaguncha chaqirishda davom etadi.

misollar

main.js faylini yarating, quyidagi kod:

Funktsiya printHello())( console.log("Salom, Dunyo!"); ) // setInterval(printHello, 2000);

main.js bajariladigan fayl, kod quyidagicha ko'rinadi:

$ node main.js Salom, dunyo! Salom Dunyo! Salom Dunyo! Salom Dunyo! Salom Dunyo! ......

Yuqoridagi dastur har ikki soniyada bir marta "Salom, dunyo!"ni chiqaradi va tugma bosilmaguncha uzluksiz ishlaydi. CTRL + C.

konsol

Konsol Internet Explorer-da JScript dvigateli tomonidan taqdim etilgan disk raskadrovka uskunasi bo'lgan standart chiqishni ta'minlash uchun konsol va keyinchalik de-fakto brauzer standartiga aylandi.

Node.js standart chiqish oqimi (STDOUT) yoki standart xato oqimi (STDERR) chiqish belgilarida foydalaniladigan konsol ob'ektining izchil xatti-harakati va odatlarini ta'minlaydigan ushbu standartga amal qiladi.

konsol usuli

Quyida konsol ob'ekti mavjud:

Yo'q.Usul va tavsif
1 console.log([ma'lumotlar] [, ... ])
Standart bosma chiqish oqimi belgilari uchun va yangi qator belgisi bilan tugaydi. Ushbu usul bir nechta parametrlarni qabul qiladi, agar faqat bitta parametr mavjud bo'lsa, u holda chiqish ushbu parametrning satridir. Agar bir nechta argumentlar mavjud bo'lsa, C E() da buyruq chiqarish formati kabi joylar.
2 console.info([ma'lumotlar] [, ... ])
Buyruqning P roli axborot xabarini qaytaradi, console.log buyrug'i unchalik farq qilmaydi, xromga qo'shimcha ravishda faqat matn chiqariladi, qolganlarida ko'k undov belgisi ko'rsatiladi.
3 console.error([ma'lumotlar] [, ... ])
Chiqarish xato xabari. Vilkada xatolik yuz berganda konsol qizil rangni ko'rsatadi.
4 console.warn([ma'lumotlar] [, ... ])
Ogohlantirish xabari ko'rsatiladi. Konsol sariq undov belgisi bilan ko'rsatiladi.
5 console.dir(OBJ[, options])
Tekshirish (tekshirish) uchun ishlatiladigan ob'ekt va o'qish uchun qulay displey va chop etish formatlari.
6 console.time (yorliq)
Vaqt chiqishi, boshlanish vaqti.
7 console.timeEnd(yorliq)
Vaqtning tugashini ko'rsatadigan tugash vaqti.
8 console.trace(xabar [, ...])
Kod hozirda stekda qo'ng'iroq yo'lini amalga oshiradi, bu test funktsiyasini ishga tushirish foydalidir, faqat chiziqda console.trace bilan birlashtirilgan funktsiyani sinab ko'rishni xohlaysiz.
9 console.assert(qiymat[, xabar][, ...])
O'zgaruvchi yoki ifoda to'g'ri yoki yo'qligini aniqlash uchun ikkita parametr kerak edi, birinchi parametr - ifoda va ikkinchi argument - satr. Faqat birinchi argument noto'g'ri bo'lsa, natija ikkinchi argument bo'ladi, natija bo'lmaydi.
console.log(): Standart chiqishga chop eting va yangi qator bilan tugating.

console.log bir nechta parametrlarni qabul qiladi, agar faqat bitta parametr bo'lsa, bu parametrning chiqish satri. Agar bir nechta argumentlar mavjud bo'lsa, C E() da buyruq chiqarish formati kabi joylar.

Birinchi parametr - satr, hech qanday parametr yo'q, faqat yangi satr belgisini chop eting.

Console.log("Salom dunyo"); console.log("byvoid%diovyb"); console.log("byvoid%diovyb", 1991);

Salom dunyo byvoid%diovyb byvoid1991iovyb

  • console.error(): console.log() bilan u xuddi shu ishni bajaradi, lekin standart xatolikka chiqadi.
  • console.trace(): Xatolarni joriy qo'ng'iroqlar to'plamining standart chiqishiga uzatish.
console.trace();

Ishlash natijalari quyidagicha:

Iz: Ob'ektda. (/home/byvoid/consoletrace.js:1:71) Module._compile (module.js:441:26) da Object..js (module.js:459:10) da Module.load (module.js: 348:31) Function._load (module.js:308:12) da Array.0 (module.js:479:10) da EventEmitter._tickCallback (node.js:192:40)

misollar

main.js faylini yarating, quyidagi kod:

Console.info("làngàngàngàngàng:"); var counter = 10; console.log("kōmí: %d", hisoblagich); console.time("língíngíní"); ////////////////console.timeEnd("língíngíngín"); console.info("līngīngīngīngānīng")

main.js bajariladigan fayl, kod quyidagicha ko'rinadi:

$ node main.js míngíníníní: língíí: 10ííííí: 0msíííííín

jarayon

Jarayon global o'zgaruvchidir, atribut global ob'ektdir.

U Node.js obyektining joriy jarayon holatini tavsiflash uchun ishlatiladi va operatsion tizimga oddiy interfeysni taqdim etadi. Odatda siz o'zingizning buyruq qatoringiz dasturlarini yozasiz va u bilan shug'ullanasiz. Quyida a'zolar tomonidan e'tiroz bildirish jarayonining eng ko'p qo'llaniladigan usullari bilan tanishamiz.

Yo'q.Voqealar va tavsif
1 Chiqish
Jarayon tugashga tayyor bo'lganda yonadi.
2 Chiqishdan oldin
Ushbu hodisa tugunda bo'sh hodisa tsikliga ega bo'lganda ishga tushiriladi va boshqa hech qanday harakat bajarilmaydi. Umuman olganda, chiqish tugunini tashkil qilish jarayoni yo'q, lekin tugun davom etishi uchun "Exitdan oldin" tinglovchilarni asinxron chaqirish mumkin.
3 tutilmaganException
Istisno hodisalar davriga qaytarilsa, bu hodisani ko'taring. Agar siz istisnoga monitor qo'shsangiz, standart amal (stekni chop etish va chiqish) amalga oshirilmaydi.
4 Signal qachon ishga tushiriladi
voqea jarayon signal qabul qilganda.
SIGINT, SIGUSR1 va boshqalar kabi standart POSIX signal nomlari ro'yxatini ko'rib chiqing.

misollar

main.js faylini yarating, quyidagi kod:

Process.on("chiqish", funktsiya(kod) ( // setTimeout(funksiya() ( console.log("língíngíngíníníní"); 0); console.log("língíngínė:", kod) ;))) console.log("līngīngčičiči");

main.js bajariladigan fayl, kod quyidagicha ko'rinadi:

$ node main.js língíngíngíngíngín: 0

Chiqish holati kodlari

Chiqish holati kodlari quyidagicha:

Status kodiSarlavha va tavsif
1 Qo'lga olinmagan halokatli istisno
Qo'lga olinmagan istisno mavjud va u ishlov berilmagan yoki uncaughtException ishlov beruvchisi domeni.
2 foydalanilmagan
ushlab turish
3 JavaScript-ning ichki xatolarini tahlil qilish
Tugun jarayoni boshlanganda JavaScript xatosi manba kodini tahlil qilish chaqiriladi. Juda kamdan-kam hollarda, faqat tugun bo'lganda.
4 Ichki JavaScript xatosi reytingi
Manba tugunida ishlaydigan JavaScript jarayoni funktsiyani baholashda muvaffaqiyatsizlikni qaytaradi. Juda kamdan-kam hollarda, faqat tugun bo'lganda.
5 Jiddiy xato
V8 tuzatib bo'lmaydigan xatolik va halokatli natija. Odatda Stderr-ni chop eting, kontent: halokatli xato
6 Funktsional bo'lmagan ichki istisnolarni ishlov beruvchi
Tugallanmagan istisno, ichidagi istisno ishlovchisi qandaydir tarzda funktsiyaga o'rnatiladi va uni chaqirib bo'lmaydi.
7 Ichki ish vaqti ishlov beruvchisi istisno xatosi
Qo'lga olinmagan istisno va o'z-o'zini boshqarish uchun istisno ishlovchisi istisno qiladi. Misol uchun, agar process.on("uncaughtException") yoki domain.on("xato") istisno qilsa.
8 foydalanilmagan
ushlab turish
9 Yaroqsiz argument
Bu noma'lum parametrlar yoki qiymatga parametr bo'lishi mumkin.
10 Ichki JavaScript ish vaqti bajarilmadi
JavaScript-ning manba kodi Tugun jarayonida xatoliklar yuzaga kelganda, juda kamdan-kam hollarda, faqat tugun ishlab chiqilganda hosil bo'ladi.
12 Nosozliklarni tuzatish argumenti noto‘g‘ri
--debug opsiyalari o'rnatilgan va/yoki --debug-BRK, lekin noto'g'ri port tanlangan.
> 128 Signal chiqishlari
Agar tugun SIGKILL yoki SIGHUP kabi halokatli signalni qabul qilsa, qaytish kodi 128 va signal kodi. Bu standart Unix amaliyoti, chiqish signallaridagi yuqori kod.

jarayon atributlari

Jarayon ko'plab foydali xususiyatlarni, o'zaro ta'sir qilish qulayligini ta'minlaydi, biz tizimni yaxshiroq boshqarishimiz mumkin:

MiqdorMulk va tavsif
1 STDOUT
Standart chiqish oqimi.
2 STDERR
Standart xato oqimi.
3 STDIN
Standart kirish oqimi.
4 ARGV
ARGV xossasi yozishda buyruq qatori skriptini bajarish uchun turli xil variantlar qatorini qaytaradi. Uning birinchi a'zolari har doim tugun, ikkinchi a'zosi skript fayli nomi, qolgan a'zolar esa skript fayli parametrlari.
5 execPath
Joriy skriptni bajarish ikkilik tugunining mutlaq yo'lini qaytaradi.
6 execArgv
Skript faylining tugun bajariladigan buyruq qatori parametrlari orasida bajarilgan buyruq qatori skripti ostida joylashgan massiv a'zosini qaytaradi.
7 ENV
Ob'ektni, joriy qobiq muhiti o'zgaruvchisining a'zolarini qaytaradi
8 Chiqish kodi
Jarayon uchun chiqish kodi, agar jarayon chiqish kodini ko'rsatmasdan, process.exit() bilan taqdim etilgan bo'lsa.
9 versiya
v0.10.18 kabi tugun versiyasi.
10 versiyalari
Tugunlar va bog'liqliklar versiyalarini o'z ichiga olgan xususiyat.
11 konfiguratsiya
Joriy tugunni o'z ichiga olgan ob'ekt bajariladigan JavaScript variantlari konfiguratsiya faylini kompilyatsiya qilish uchun ishlatiladi. Bu "config.gypi" fayli tomonidan yaratilgan xuddi shu run./configure skriptidir.
12 PID - regulyator
Joriy jarayon raqami.
13 Ism
Jarayon nomi, standart "tugun", siz qiymatni sozlashingiz mumkin.
14 arch
Joriy protsessor arxitekturasi: "arm", "ia32" yoki "64".
15 platforma
"Darvin", "FreeBSD", "Linux", "SunOS" yoki "win32" platformasi bo'lgan dasturni ishga tushiring.
16 asosiy modul
talab qiladi.asosiy muqobil usullar. Har xil nuqtalar, agar asosiy modul ish vaqtida o'zgarsa, require.main eski modulga qaytishda davom etishi mumkin. Ikkalasi ham bir modulga tegishli deb hisoblanadi.

misollar

main.js faylini yarating, quyidagi kod:

// língjíngíngín process.stdout.write("Salom dunyo!" + "\n"); // língíngíngínì process.argv.forEach(funksiya(val, indeks, massiv) ( console.log(index + ": " + val); )); // língíngínín console.log(process.execPath); // console.log(process.platform);

main.js bajariladigan fayl, kod quyidagicha ko'rinadi:

$ node main.js Salom dunyo! 0: tugun 1: /web/www/node/main.js /usr/local/node/0.10.36/bin/node darvin

Metod uchun qo'llanma

Jarayon interaktiv tizimimizni yanada samarali boshqarishni osonlashtiradigan ko'plab foydali usullarni taqdim etadi:

Yo'q.Usul va tavsif
1 bekor qilish()
Bu uzilish tugunini ishga tushirish hodisasini oshiradi. Bu tugunning chiqishiga olib keladi va dump faylini yaratadi.
2 ChDir (katalog)
Agar operatsiya tugamasa, jarayonning joriy ishchi katalogini o'zgartiring.
3 EAR ()
Joriy jarayonning ishchi katalogini qaytaradi
4 chiqish ([kod])
Belgilangan kod bilan jarayonni tugatadi. Agar ushbu parametr o'tkazib yuborilsa, u 0 kodini ishlatadi.
5 getgid()
Jarayon guruhi identifikatsiyasini oling (qarang: getgid(2)). Guruh nomidan ko'ra raqamli ID sotib olinganida.
6 setgid(ID)
Guruhni identifikatsiya qilish jarayonini sozlash (setgid (2) ga qarang). ID raqam yoki guruh nomini olishi mumkin. Agar siz guruh nomini belgilasangiz, blokirovkaga raqamli identifikatorni kutishga ruxsat beriladi.
Eslatma: Bu funksiyadan faqat POSIX platformalarida foydalanish mumkin (masalan, Windows va Android bo'lmagan).
7 getuid()
Foydalanuvchining identifikatsiya jarayonini oling (getuid(2) ga qarang). Bu foydalanuvchi nomi emas, raqamli foydalanuvchi identifikatoridir.
Eslatma: Bu funksiyadan faqat POSIX platformalarida foydalanish mumkin (masalan, Windows va Android bo'lmagan).
8 UIP (ID)
Jarayonni sozlash foydalanuvchi identifikatori (UIP (2) ga qarang). Raqamli identifikator yoki nom qatorini olish. Agar siz guruh nomini belgilasangiz, blokirovkaga raqamli identifikatorni kutishga ruxsat beriladi.
Eslatma: Bu funksiyadan faqat POSIX platformalarida foydalanish mumkin (masalan, Windows va Android bo'lmagan).
9 getgroups()
Guruh identifikatori massivini qaytarish jarayoni. POSIX tizimi uning mavjudligiga kafolat bermaydi, lekin Node.js u yerda bo'lishi kafolatlanadi.
Eslatma: Bu funksiyadan faqat POSIX platformalarida foydalanish mumkin (masalan, Windows va Android bo'lmagan).
10 sozlash guruhlari
Jarayon guruhi identifikatorini o'rnating. U ishlashga yaroqli, sizga kerak bo'lgan yagona narsa superfoydalanuvchi imtiyozlariga ega bo'lish yoki CAP_SETGID qobiliyatiga ega bo'lishdir.
Eslatma: Bu funksiyadan faqat POSIX platformalarida foydalanish mumkin (masalan, Windows va Android bo'lmagan).
11 initgroups (foydalanuvchi, qo'shimcha_guruh)
O'qish / boshqalar. /group va guruhga kirish ro'yxatini ishga tushiradi, guruhning barcha a'zolari joylashgan. U ishlashga yaroqli, sizga kerak bo'lgan yagona narsa superfoydalanuvchi imtiyozlariga ega bo'lish yoki CAP_SETGID qobiliyatiga ega bo'lishdir.
Eslatma: Bu funksiyadan faqat POSIX platformalarida foydalanish mumkin (masalan, Windows va Android bo'lmagan).
12 o'ldirish (IDP [signal])
Jarayonga signal yuboradi. ID jarayon identifikatori, signal esa uzatilayotgan signalni ko'rsatuvchi qatordir. Signal nomlari "SIGINT" yoki "" SIGHUP kabi qatorlardir. Agar bu parametr o'tkazib yuborilsa, signal "SIGTERM" bo'ladi.
13 MemoryUsage()
U tugunning xotira holati baytlari tomonidan ishlatiladigan jarayonni tavsiflovchi ob'ektni qaytaradi.
14 Keyingi belgi (qayta qo'ng'iroq)
Joriy funktsiyadan keyin qayta qo'ng'iroq qilish hodisasi davri tugaydi.
15 Umask ([niqob])
Jarayon niqobi faylini o'rnating yoki o'qing. Bola jarayonlari bu niqobni ota-ona jarayonidan meros qilib oladi. Agar niqob argumenti to'g'ri bo'lsa, u eski niqobni qaytaradi. Aks holda, u joriy niqobni qaytaradi.
16 Sarflangan()
Tugun allaqachon boshlangan soniyalar sonini qaytaradi.
17 hrtime()
Joriy jarayonning vaqt ravshanligi [soniya] massiv nanosekundlar sifatida belgilangan. Bu har qanday o'tmishdagi hodisaga nisbatan. Bu qiymat sana bilan hech qanday aloqasi yo'q, shuning uchun u soatning siljishiga ta'sir qilmaydi. Asosiy maqsad dasturning ishlashini aniq vaqt oralig'ida o'lchashdir.
Natijani joriy process.hrtime() ga o'tkazishdan oldin u mos yozuvlar va vaqt oralig'ini o'lchash uchun ular orasidagi vaqt farqini qaytaradi.

misollar

main.js faylini yarating, quyidagi kod:

// língíngíngíníngíngín console.log("kíngíngín: " + process.cwd()); // língíngíngín bín console.log("kíngíngín: " + process.version); // língjàngíngíngíngín console.log(process.memoryUsage());

NODE.JS– js ni bajarish uchun dasturiy vosita.

Nodejs = V8 + I/U + kutubxonalari

V8: tez, zamonaviy, tejamkor

Afzalliklar

  • Javascript
  • Mijoz va serverdagi umumiy kod
  • Asosiy veb vazifalari
  • Bir vaqtning o'zida ko'plab ulanishlar va vazifalar
  • Ishchi prototipni yaratish oson
  • Qulay npm paket menejeri
  • Jamiyat

O'rnatish

O'rnatishda nodejs o'zini PATH o'zgaruvchisiga yozadi (+ npm), [ma'muriyat - muhit o'zgaruvchilari]; buyruq satrida tekshirilishi mumkin:
PATH ni o'rnating

Qoida tariqasida, fayllar nodejs ostida ishga tushiriladi: oddiy skript yozamiz va uni buyruq satri orqali ishga tushiramiz:


Skript bajariladi va natija buyruq satrida ko'rsatiladi.

Nodejs hujjatlari

nodejs modullari

O'rnatilgan nodejs modullari qanday ishlashini tushunish uchun siz nodejs veb-saytidan manba kodi arxivini yuklab olishingiz kerak (manba kodi). Va lib katalogiga o'ting. (dir buyrug'i - buyruq qatori orqali fayllar ro'yxatini oling; Agar siz barcha pastki papkalarda fayllarni ro'yxatlashingiz kerak bo'lsa, unda "dir" o'rniga "dir / s" dan foydalaning). Agar siz paketdan nodejs o'rnatgan bo'lsangiz, lib papkasida hech qanday fayl topa olmaysiz.

Nodejs turli darajadagi modullarga ega barqarorlik. (masalan, 0 - ishlatilmasligi kerak; 1, 2 - ishlatilishi mumkin, ammo modul API o'zgarishi mumkin).

Funktsiyalar o'sib bormoqda (loyiha rivojlanmoqda) va vaqt o'tishi bilan USER konstruktor funksiyasini alohida faylga ko'chirishimiz kerak bo'ladi. Bu erda modullar o'ynaydi.

Modullar nodejs loyihani tashkil qilish uchun taklif qiladigan usuldir.

Loyihalar o'sish tendentsiyasiga ega, bu esa loyihani bir nechta fayllarga bo'lish istagini keltirib chiqaradi - bu erda modullar o'ynaydi.

talab qiladi

HTML sahifalari uchun skript teglari skriptlarni kiritish uchun ishlatiladi. Nodejs maxsus talab buyrug'iga ega.

Var user = require("./user");

Bizning misolimizda biz bir xil katalogdagi faylga (user.js) kiramiz (kengaytma (.js) ixtiyoriy).

//talab ("./user"); // .js ni belgilash shart emas // bu holda fayl bajariladi, lekin USER o'zgaruvchisi bo'lmaydi // bu nodejs skript teglaridan asosiy farqi // node.js da funksiyalar va o'zgaruvchilar har bir modul globaldir // ushbu fayl uchun (modulning o'zi) va ular avtomatik ravishda // ulanganda mavjud bo'lmaydi (talab ("./user")) // Lekin qanday qilib kirish mumkin? // Har bir modulda maxsus eksport o'zgaruvchilari mavjud - bu ob'ekt va // Men u erga qo'ygan narsam qaytariladi, natijada talab var user = require("./user.js"); // natija: foydalanuvchi = (foydalanuvchi: funktsiya)

Nodejs modulli tizimi va brauzer skriptlari o'rtasidagi birinchi farq: agar brauzerda ikkita skript tegi mavjud bo'lsa, u holda ulardan birida global darajada aniqlangan funksiya boshqasida mavjud, lekin nodejs-da emas. Nodejlarda funksiyalar va o'zgaruvchilar ma'lum fayl uchun globaldir (kerak bo'lganda ular mavjud emas). Shunday qilib, nodejs haqiqiy mustaqil modullarni yozish imkonini beradi. Ammo modul mavjud bo'lishi uchun u ishlatiladi eksport tizimi. Har bir modulda maxsus eksport o'zgaruvchisi mavjud.

Modul-katalog DIR/indeks

Biz papkani to'g'ridan-to'g'ri bog'laymiz var user = require("./user"); , unda tegishli index.js mavjud.

Masalan

Function User(name)( this.name = name; ) User.prototype.salom = function(kim)( console.log(phrases.Hello + ", " + who.name); ); eksport.User = Foydalanuvchi;

Biz ./server.js faylida Foydalanuvchi konstruktorini ulaymiz va ishlatamiz

//server.js var user = require("./user"); var vasya = new user.User("Vasya");

"./" - joriy jildga nisbatan

eksport ob'ektdir va u erga qo'yilgan narsa talab (exports.jpg) natijasida qaytariladi. Shunday qilib, modul o'zining shaxsiy o'zgaruvchilari/funksiyalarini e'lon qilishi va faqat kerakli narsalarni eksport qilishi mumkin.


Global o'zgaruvchilar uchun va boshqalar. global ob'ekt mavjud

Global.User = Foydalanuvchi;

Pastki chiziq

  • Ulanish talab qilinadi
  • O'zgaruvchilar: var (modullar uchun xususiy), eksport, global (kamdan-kam ishlatiladi)
  • Modullar turlari: js, tugun (.node kengaytmasi bilan), json (.json kengaytmasi bilan). Json modullari faylda oddiy ma'lumotlarni saqlash kerak bo'lganda foydalaniladi.
  • Modul-katalog DIR/indeks

modul ob'ekti

  • modul ob'ekti
  • Module-funktsiya module.exports = funktsiya
  • Keshlash modullari (modul boshqa hech qachon o'qilmaydi)
  • Modulni joylashtirish: qidiruv tartibi
  • O'tish parametrlari: modul-zavod

Modul ob'ekti (modullar uchun asosiy ob'ekt) har bir modulda mavjud bo'lgan o'zgaruvchidir (fayl, siz console.log(module;); chiqarishingiz mumkin). . Tarkib: id xususiyati - odatda faylga yo'l,
ota-ona - ota-modulga havola (module.parent - buni talab qiladigan ota-modulga havola),
bolalar (module.children - talab orqali ulangan modullar),
mulk va boshqalarni eksport qiladi.

Modul yoki dastur? modul.ota-ona

Modul to'g'ridan-to'g'ri ishga tushirilishi mumkin, ammo agar bo'lmasa, agar funksionallik boshqa modulga ulangan bo'lsa, u holda ushbu funksiyani eksport qilishga ruxsat bering. Bu ikki holatni tekshirish orqali ajratish mumkin:

If(module.parent) ( exports.run = run; ) else ( run(); )


ps: stackoverflow.com saytida aytganidek, ota-ona - bu skriptni sharhlash uchun chaqirgan modul.

// $ node foo.js console.log(module.parent); // null // require("./foo") console.log(module.parent); // (...)

modul.exports dan to'g'ri foydalanish

Modul kontekstida:

module.exports = eksport = bu (bu tuzilmalar ekvivalentdir)

Agar siz funktsiyani ob'ektda emas, balki to'g'ridan-to'g'ri o'tkazmoqchi bo'lsangiz, quyidagi sintaksisdan foydalaning:

Module.exports = Foydalanuvchi;


Modul keshlash

Nodejs modulni yuklaganida, u mos keladigan modul ob'ektini to'liq yaratadi (ota-ona, eksport va boshqa shunga o'xshash xususiyatlarni hisobga olgan holda) va uni o'zida eslab qoladi (module.id (faylning to'liq yo'li) ichki kesh uchun identifikator bo'lib xizmat qiladi. ) va keyingi safar har qanday modulga (faylga) qayta kirganimizda (ulaganimizda), nodejs keshdan bir xil ob'ektni oladi. Ya'ni, masalan, modulni faylda bir marta ishga tushirish kifoya, kelajakda siz undan oddiygina foydalanishingiz mumkin.

Bizning holatda, var db uchun = require("../db");
va var db uchun = require("./db"); xuddi shu ob'ekt olinadi. Shuning uchun printsip quyidagicha: modul birinchi marta qo'llanilganda, u ishga tushiriladi va kelajakda biz uni faqat ulab, foydalanamiz (ya'ni bizning holatlarimizda db.connect() dan ikki marta foydalanish kerak emas, ya'ni turli fayllarda).


Modulning joylashuvi: modullarni nodejs-da topish tartibi

JB ni har doim ma'lum bir yo'lni ko'rsatmasdan qanday qilib ulash mumkin:

Var db = talab ("../db"); //yoki var db = require("./db");

va shunga o'xshash:

Var db = talab ("db");

db qaysi faylga ulangan bo'lishidan qat'iy nazar.

Buni amalga oshirish uchun siz nodejs-da modullarni qidirish tartibini tushunishingiz kerak (talab chaqirilganda nima sodir bo'ladi). Nodejlarda ko'plab o'rnatilgan modullar mavjud, masalan, require("fs"); , bu muammosiz ulanadi. Agar talabda ma'lum bir yo'lni belgilasangiz, masalan, require("../db"); , keyin qidiruv berilgan yoʻlga asoslanadi va fayl topiladi yoki nodejs bu faylni katalog sifatida olishga harakat qiladi (va kategoriya ichida index.js ni qidiradi).

Agar talabni belgilasangiz ("db"); va modul o'rnatilgan bo'lmasa, node_modules katalogi joriy holatga nisbatan qidiriladi (agar topilsa, modulni undan olishga harakat qiladi). Agar node_modules katalogi yo'q bo'lsa, yuqorida node_modules katalogi qidiriladi va hokazo.

Modul uchun ma'lum bir yo'lni belgilashdan tashqari, nodejs quyidagi kabi modullarni qidirishi mumkin:

npm ga kirish - Node.JS paket menejeri

  1. modul (nomi, versiyasi va boshqalar) haqidagi ma'lumotlarni o'z ichiga olgan paket tavsifi faylini (package.json) yarating. Qo'lda yoki buyruq orqali
    npm init
    (kerakli ma'lumotlarni so'raydi)
  2. Modulni nashr qilish uchun sizga kerak:
    1. Npm adduser buyrug'i yordamida foydalanuvchi qo'shing (siz foydalanuvchi nomi va parolni kiritishingiz kerak). Endi npm bilan barcha ishlar ushbu foydalanuvchi nomidan amalga oshiriladi. Foydalanuvchi https://www.npmjs.com/~name_user saytiga kirishi va modullarini kuzatishi mumkin.
    2. Nashriyot: npm publish
  3. Keyin kimdir ma'lumotlar bazasiga qo'shilgan modulingizdan foydalanishi mumkin va foydalanuvchining o'zi o'zgartirishlar kiritishi mumkin.
  4. Npm help buyrug'i yordamida barcha npm buyruqlarini oling
  5. Ma'lumotlar bazasida modulni qidiring: npm s kalit so'zlari yoki npm qidiruv kalit so'zlari (masalan, npm s super moduli)
  6. Modulni o'rnating: npm install name_module yoki npm i name_module
  7. Modullarni o'rnatishda nodejs birinchi navbatda joriy katalogdagi node_modules jildini qidiradi (keyin yuqoriroq va yuqoriroq va hokazo) yoki (agar node_modules yo'q bo'lsa) package.json ni qidiradi (shuningdek yuqoriga ko'tariladi; package.json odatda faylning ildizini bildiradi. loyiha) va shunga mos ravishda, agar u package.json ni topsa, tegishli katalogda node_modules papkasini yaratadi; agar ikkala variant ham muvaffaqiyatsiz bo'lsa, nodejs joriy katalogda node_modules papkasini yaratadi. Agar siz modulni ma'lum bir katalogga joylashtirmoqchi bo'lsangiz, u holda ushbu katalogda node_modules papkasini yaratishingiz kerak.
  8. npm up yangilash moduli (node_modules papkasida joylashgan yangilash modullarini tekshiradi)
  9. npm modul nomini olib tashlash (modulni olib tashlash)

npm dan chiqish:

npm init
nmp qo'shuvchi
npm nashr etish
npm qidiruv kalit so'zlari
npm o'rnatish moduli
npm yangilash moduli
npm modulini olib tashlash
npm yordam buyrug'i

NPM paket tuzilishi

Kerakli versiyani o'rnatish, masalan: npm i [elektron pochta himoyalangan]

Modulning so'nggi versiyasini modul git versiyalash tizimi yordamida ishlab chiqilgan bo'lsa, masalan, github-da olish mumkin. Git-ni faqat o'qish uchun (url) olish kifoya: https://github.com/strongloop/express.git va konsolda:

npm i https://github.com/strongloop/express.git

package.json-dagi bog'liqliklar

bog'liqliklar ushbu modul bog'liq bo'lgan modullarga ishora qiladi.

dev bog'liqliklar

Agar modul bog'liqlik sifatida tortilsa, devDependencies-da ro'yxatdan o'tgan modullar o'rnatilmaydi. Ular faqat ishlab chiqish uchun o'rnatiladi va, masalan, node_modules papkasidagi modulga o'tsangiz va npm i ni kiritsangiz (yoki npm konfiguratsiya bayrog'ini o'rnatish orqali) o'rnatilishi mumkin.

asosiy maydon paketga kirish nuqtasini belgilaydi

Global modullar

Agar siz -g bayrog'ini o'rnatsangiz, har qanday modul global miqyosda o'rnatilishi mumkin: npm -g moduli

Tizim katalogiga global vositalar.

Windows uchun global modullar katalogi:

C:\users\User_Name\AppData\Rouming\npm

Global modullar standart tizim katalogiga joylashtirilgan. Package.json da joylashgan ikkilik fayllar tizim yo'liga o'rnatiladi (bu global modullarning asosiy qo'llanilishi), ya'ni kelajakda ularni konsol orqali chaqirish mumkin.

I. Kantor kurslari materiallari asosida

Tugunda siz global o'zgaruvchilarni "global" yoki "GLOBAL" ob'ekt orqali o'rnatishingiz mumkin:

GLOBAL._ = talab ("pastki chiziq"); // lekin siz buni qilmasligingiz kerak! (quyidagi eslatmaga qarang)

yoki ko'proq foydali ...

GLOBAL.window = GLOBAL; // brauzerdagi kabi

Tugun manbasidan ular bir-biriga taxallus ekanligini ko'rishingiz mumkin:

Node-v0.6.6/src/node.js:28:global = bu; 128: global.GLOBAL = global;

Yuqoridagi kodda "bu" global kontekstdir. CommonJS modulida (qaysi tugun foydalanadi), modul ichidagi bu "ob'ekt" (ya'ni "sizning kodingiz") global kontekst EMAS. Buning isboti uchun quyida men "bu" ob'ektni va keyin ulkan "GLOBAL" ob'ektni qaerdan chiqarganimni ko'ring.

Console.log("\nBU:"); console.log(bu); console.log("\nGLOBAL:"); console.log(global); /* chiqadi ... BU: {} GLOBAL: ( ArrayBuffer: , Int8Array: ( BYTES_PER_ELEMENT: 1 ), Uint8Array: ( BYTES_PER_ELEMENT: 1 ), Int16Array: ( BYTES_PER_ELEMENT: 2 ), Uint16Array: ( BYTES_PER_ELEMENT: BYTES_PER_ELEMENT: Uint8Array: (BYTES_PER_ELEMENT: BYTES:_2), 32 Massiv: ( BYTES_PER _ELEMENT: 4 ), Float32Array: ( BYTES_PER_ELEMENT: 4 ), Float64Array: ( BYTES_PER_ELEMENT: 8 ), DataView: , global: , jarayon: ( EventEmitter: , sarlavha: "tugun", assert: , versiya: "v0.6.5", _tick , moduleLoadList: [ "Binding baholash", "NativeModulelarni ulash", "NativeModule hodisalari", "NativeModule buferi", "Binding bufer", "NativeModule assert", "NativeModule util", "NativeModule yo'li", "NativeModule moduli", " NativeModule fs, "Binding fs", "Binding console", "NativeModule oqimi", "NativeModule konsoli", "Binding tty_wrap", "NativeModule tty", "NativeModule net", "NativeModule taymerlari", "Binding timer_wrap", " NativeModule _linklist" ], versiyalar: ( tugun: "0.6.5", v8: "3.6.6.11", ares: "1.7.5-DEV", uv: "0.6", openssl: "0.9.8n" ), nextTick : , stdout: , arch: "x64", stderr: , platforma: "darvin", argv: [ "tugun", "/workspace/zd/zgap/darwin-js/index.js" ], stdin: , env: ( TERM_PROGRAM: "iTerm.app", "COM_GOOGLE_CHROME_FRAMEWORK_SERVICE_PROCESS/USERS/DDOPSON/LIBRARY/APPLICATION_SUPPORT/GOOGLE/CHROME_SOCKET": "/tmp/launch-nScket/:ELLScket/"ermbaa", "term"/" sh" , TMPDIR: "/var/folders/2h/2hQmtmXlFT4yVGtr5DBpdl9LAiQ/-Tmp-/", Apple_PubSub_Socket_Render: "/tmp/launch-9Ga0PT/Render", FOYDALANUVCHI: "ddopson", COMMAND_MODE: "unix:AUTH3", SSHOC_0 ishga tushirish -sD905b/Listeners", __CF_USER_TEXT_ENCODING: "0x12D732E7:0:0", PATH: "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:~/bin:/usr/ X11 /bin", PWD: "/workspace/zd/zgap/darwin-js", LANG: "en_US.UTF-8", ITERM_PROFILE: "Standart", SHLVL: "1", COLORFGBG: "7;0", HOME: "/Users/ddopson", ITERM_SESSION_ID: "w0t0p0", LOGNAME: "ddopson", DISPLAY: "/tmp/launch-l9RQXI/org.x:0", OLDPWD: "/workspace/zd/zgap/darwin- js /external", _: "./index.js"), openStdin: , exit: , pid: 10321, xususiyatlar: (disbob: false, uv: true, ipv6: true, tls_npn: false, tls_sni: true, tls : true ), kill: , execPath: "/usr/local/bin/node", addListener: , _needTickCallback: , on: , removeListener: , reallyExit: , chdir: , disk raskadrovka: , xato: , cwd: , watchFile: , umask : , getuid: , unwatchFile: , mixin: , setuid: , setgid: , createChildProcess: , getgid: , meros qilib oladi: , _kill: , _byteLength: , mainModule: ( id: ". ", eksport: (), ota: null, fayl nomi: "/workspace/zd/zgap/darwin-js/index.js", yuklangan: noto'g'ri, chiqarilgan: noto'g'ri, bolalar: , yo'llar: ), _debugProcess: , dlopen: , ish vaqti: , xotiraUsage: , uvCounters: , ulash: ), GLOBAL: , root: , Bufer: ( poolSize: 8192, isBuffer: , byteLength: , _charsWritten: 8 ), setTimeout: , setIntervalout: , clearTime, konsol: , oyna: , navigator: () ) */

**Izoh: "GLOBAL._" sozlamasiga kelsak, umuman olganda, var _ = require("pastki chiziq"); Ha, buni pastki chiziqni ishlatadigan har bir faylda qilasiz, xuddi Java-da com.foo.barni import qilganingiz kabi; Bu sizning kodingiz nima qilayotganini aniqlashni osonlashtiradi, chunki fayllar orasidagi bog'lanishlar "aniq". Engil zerikarli, lekin yaxshi. Bu va'z.

Har bir qoida uchun istisno mavjud. Menda "GLOBAL._" ni o'rnatishim kerak bo'lgan bitta misol bor edi. Men asosan JSON bo'lgan, ammo biroz ko'proq moslashuvchanlikni qo'shish uchun "JSda yozilgan" "konfiguratsiya" fayllarini aniqlash uchun tizim yaratdim. Bunday konfiguratsiya fayllarida "talab qilish" iboralari yo'q edi, lekin men ularning pastki chiziqqa kirishini xohlardim (butun tizim pastki chiziq va pastki chiziq naqshlariga asoslangan edi), shuning uchun "config" ni baholashdan oldin "GLOBAL._" ni o'rnatgan bo'lardim. Shunday qilib, ha, har bir qoida uchun biron bir joyda istisno mavjud. Lekin sizda yaxshi sabab bor, shunchaki "men yozishdan charchadim" emas, shuning uchun men kelishuvni buzmoqchiman."

va menga var qoldirib, o'zgaruvchilarni global miqyosga o'rnatishim mumkinligini aytishdi.

Bu men uchun ishlamaydi.

Require("pastki chiziq");

Kerakli fayllar uchun _ ni mavjud qilmaydi. Men app.set-ni o'rnatishim va uni boshqa joyda ishlatishim mumkin.

Kimdir bu ishlashi kerakligini tasdiqlay oladimi? Rahmat.

Tugunda siz global o'zgaruvchilarni "global" yoki "GLOBAL" ob'ekti orqali o'rnatishingiz mumkin:

GLOBAL._ = talab ("pastki chiziq"); // lekin siz buni qilmasligingiz kerak! (quyidagi eslatmaga qarang)

yoki ko'proq foydali ...

GLOBAL.window = GLOBAL; // brauzerdagi kabi

Tugun manbasidan ular bir-biriga taxallus ekanligini ko'rishingiz mumkin:

Node-v0.6.6/src/node.js:28:global = bu; 128: global.GLOBAL = global;

Yuqoridagi kodda "bu" global kontekstdan foydalanadi. CommonJS modulli tizimida (qaysi tugun foydalanadi), modul ichidagi "bu" ob'ekt (ya'ni "Sizning kodingiz") global kontekst EMAS. Buning isboti uchun quyida "bu" ob'ektni va keyin ulkan "GLOBAL" ob'ektni teskari aylantirgan joyga qarang.

Console.log("\nBU:"); console.log(bu); console.log("\nGLOBAL:"); console.log(global); /* chiqadi ... BU: {} GLOBAL: ( ArrayBuffer: , Int8Array: ( BYTES_PER_ELEMENT: 1 ), Uint8Array: ( BYTES_PER_ELEMENT: 1 ), Int16Array: ( BYTES_PER_ELEMENT: 2 ), Uint16Array: ( BYTES_PER_ELEMENT: BYTES_PER_ELEMENT: Uint8Array: (BYTES_PER_ELEMENT: BYTES:_2), 32 Massiv: ( BYTES_PER _ELEMENT: 4 ), Float32Array: ( BYTES_PER_ELEMENT: 4 ), Float64Array: ( BYTES_PER_ELEMENT: 8 ), DataView: , global: , jarayon: ( EventEmitter: , sarlavha: "tugun", assert: , versiya: "v0.6.5", _tick , moduleLoadList: [ "Binding baholash", "NativeModulelarni ulash", "NativeModule hodisalari", "NativeModule buferi", "Binding bufer", "NativeModule assert", "NativeModule util", "NativeModule yo'li", "NativeModule moduli", " NativeModule fs, "Binding fs", "Binding console", "NativeModule oqimi", "NativeModule konsoli", "Binding tty_wrap", "NativeModule tty", "NativeModule net", "NativeModule taymerlari", "Binding timer_wrap", " NativeModule _linklist" ], versiyalar: ( tugun: "0.6.5", v8: "3.6.6.11", ares: "1.7.5-DEV", uv: "0.6", openssl: "0.9.8n" ), nextTick : , stdout: , arch: "x64", stderr: , platforma: "darvin", argv: [ "tugun", "/workspace/zd/zgap/darwin-js/index.js" ], stdin: , env: ( TERM_PROGRAM: "iTerm.app", "COM_GOOGLE_CHROME_FRAMEWORK_SERVICE_PROCESS/USERS/DDOPSON/LIBRARY/APPLICATION_SUPPORT/GOOGLE/CHROME_SOCKET": "/tmp/launch-nScket/:ELLScket/"ermbaa", "term"/" sh" , TMPDIR: "/var/folders/2h/2hQmtmXlFT4yVGtr5DBpdl9LAiQ/-Tmp-/", Apple_PubSub_Socket_Render: "/tmp/launch-9Ga0PT/Render", FOYDALANUVCHI: "ddopson", COMMAND_MODE: "unix:AUTH3", SSHOC_0 ishga tushirish -sD905b/Listeners", __CF_USER_TEXT_ENCODING: "0x12D732E7:0:0", PATH: "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:~/bin:/usr/ X11 /bin", PWD: "/workspace/zd/zgap/darwin-js", LANG: "en_US.UTF-8", ITERM_PROFILE: "Standart", SHLVL: "1", COLORFGBG: "7;0", HOME: "/Users/ddopson", ITERM_SESSION_ID: "w0t0p0", LOGNAME: "ddopson", DISPLAY: "/tmp/launch-l9RQXI/org.x:0", OLDPWD: "/workspace/zd/zgap/darwin- js /external", _: "./index.js"), openStdin: , exit: , pid: 10321, xususiyatlar: (disbob: false, uv: true, ipv6: true, tls_npn: false, tls_sni: true, tls : true ), kill: , execPath: "/usr/local/bin/node", addListener: , _needTickCallback: , on: , removeListener: , reallyExit: , chdir: , disk raskadrovka: , xato: , cwd: , watchFile: , umask : , getuid: , unwatchFile: , mixin: , setuid: , setgid: , createChildProcess: , getgid: , meros qilib oladi: , _kill: , _byteLength: , mainModule: ( id: ". ", eksport: (), ota: null, fayl nomi: "/workspace/zd/zgap/darwin-js/index.js", yuklangan: noto'g'ri, chiqarilgan: noto'g'ri, bolalar: , yo'llar: ), _debugProcess: , dlopen: , ish vaqti: , xotiraUsage: , uvCounters: , ulash: ), GLOBAL: , root: , Bufer: ( poolSize: 8192, isBuffer: , byteLength: , _charsWritten: 8 ), setTimeout: , setIntervalout: , clearTime, konsol: , oyna: , navigator: () ) */

**Izoh: "GLOBAL._" sozlamasiga kelsak, umuman olganda, var _ = require("pastki chiziq"); . Ha, siz buni pastki chiziqdan foydalanadigan har bir faylda qilasiz, xuddi Java-da com.foo.bar-ni import qilganingiz kabi; . Bu sizning kodingiz nima qilayotganini aniqlashni osonlashtiradi, chunki fayllar orasidagi bog'lanishlar "aniq". Engil zerikarli, lekin yaxshi..... Bu va'z.

Har bir qoida uchun istisno mavjud. Menda "GLOBAL._" ni o'rnatishim kerak bo'lgan bitta misol bor edi. Men asosan JSON bo'lgan, ammo biroz ko'proq moslashuvchanlikni qo'shish uchun "JSda yozilgan" "konfiguratsiya" fayllarini aniqlash uchun tizim yaratdim. Bunday konfiguratsiya fayllarida "talab qilish" iboralari yo'q edi, lekin men ularning pastki chiziqqa kirishini xohlardim (butun tizim pastki chiziq va pastki chiziq naqshlariga asoslangan edi), shuning uchun "config" ni baholashdan oldin "GLOBAL._" ni o'rnatgan bo'lardim. Shunday qilib, ha, har bir qoida uchun biron bir joyda istisno mavjud. Lekin sizda yaxshi sabab bor, shunchaki “men “talab” yozishdan charchadim, shuning uchun kelishuvni buzmoqchiman”.