---
title: Node.js® பற்றி
layout: about
---

# Node.js® பற்றி

Node.js என்பது ஒரு asynchronous event-driven JavaScript runtime ஆகும். இது அளவிடக்கூடிய வலைப்பின்னல் பயன்பாடுகளை உருவாக்க வடிவமைக்கப்பட்டுள்ளது. கீழே உள்ள "hello world" உதாரணமாக, ஒரே நேரத்தில் பல இணைப்புகளை கையாள முடியும். ஒவ்வொரு இணைப்பின் போதும், ஒரு callback இயக்கப்படும்; ஆனால் செய்வதற்கு வேலை ஏதும் இல்லையெனில், Node.js உறக்க நிலைக்கு சென்றுவிடும்.

```cjs
const { createServer } = require('node:http');

const hostname = '127.0.0.1';
const port = 3000;

const server = createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});
```

```mjs
import { createServer } from 'node:http';

const hostname = '127.0.0.1';
const port = 3000;

const server = createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});
```

இன்றைய பொதுவான கன்கரன்சி மாடலான OS திரெட்கள் பயன்படுத்துவதற்கு நேர்மாறானது இது. திரெட்களை அடிப்படையாகக் கொண்ட நெட்வொர்க்கிங் முறை சற்றே செயல்திறன் குறைவானது மற்றும் பயன்படுத்துவதற்கு கடினமானது. மேலும், Node.js பயனர்கள் 'dead-locking' பற்றிய கவலை இன்றி இருக்கலாம், ஏனெனில் இதில் லாக் முறைகள் கிடையாது. Node.js-இல் உள்ள எந்தவொரு செயல்பாடும் நேரடியாக I/O-வை இயக்குவதில்லை, எனவே Node.js தரநிலை நூலகத்தின் synchronous முறைகளைப் பயன்படுத்தும் போது தவிர, மற்ற நேரங்களில் செயல்முறை முடங்குவதில்லை. எதுவும் தடையின்றி இயங்குவதால், Node.js மூலம் மிகப்பெரிய அமைப்புகளை உருவாக்குவது மிகவும் எளிதாகிறது.

இதில் பயன்படுத்தப்பட்டுள்ள language உங்களுக்குப் புதியதாகவோ அல்லது புரியாததாகவோ இருந்தால் [Blocking vs. Non-Blocking](/learn/asynchronous-work/overview-of-blocking-vs-non-blocking) குறித்த முழுமையான கட்டுரையை இங்கே படிக்கலாம்.

---

Node.js வடிவமைப்பில் Ruby [Event Machine](https://github.com/eventmachine/eventmachine) மற்றும் Python [Twisted](https://twisted.org/) போன்ற அமைப்புகளைப் போன்றது, மேலும் அவற்றின் தாக்கத்தால் உருவானது. ஆனால், Node.js இந்த event model இன்னும் ஒரு படி மேலே கொண்டு செல்கிறது. இது event loop ஐ ஒரு library -யாக வழங்காமல், ரன்டைம் கட்டமைப்பின் ஒரு பகுதியாகவே வழங்குகிறது. மற்ற அமைப்புகளில், நிகழ்வு வளையத்தைத் தொடங்க எப்போதும் blocking call தேவைப்படும். பொதுவாக, ஒரு ஸ்கிரிப்ட்டின் தொடக்கத்தில் கால்பேக்குகள் மூலம் அதன் செயல்பாடுகள் வரையறுக்கப்படும், இறுதியில் `EventMachine::run()` போன்ற ஒரு blocking call மூலம் சர்வர் தொடங்கப்படும்.
Node.js-இல் அத்தகைய 'start-the-event-loop' அழைப்பு எதுவும் கிடையாது. உள்ளீட்டு ஸ்கிரிப்டை இயக்கிய உடனேயே Node.js நேரடியாக நிகழ்வு வளையத்திற்குள் நுழைகிறது. செய்ய வேண்டிய கால்பேக்குகள் ஏதுமில்லாத போது, அது நிகழ்வு வளையத்தை விட்டு வெளியேறுகிறது. இந்தச் செயல்பாடு browser JavaScript போன்றது — அதாவது, நிகழ்வு வளையம் பயனருக்குத் தெரியாமல் மறைக்கப்பட்டிருக்கும்.

HTTP என்பது Node.js-இல் ஒரு முதன்மை அங்கமாகக் கருதப்படுகிறது. இது தரவுப் பரிமாற்றம் மற்றும் மிகக்குறைந்த தாமதத்தைக் கருத்தில் கொண்டே வடிவமைக்கப்பட்டுள்ளது. இதன் காரணமாக, web libraries அல்லது frameworks உருவாக்குவதற்கான மிகச்சிறந்த அடித்தளமாக Node.js விளங்குகிறது.

Node.js திரெட்கள் இன்றி வடிவமைக்கப்பட்டிருந்தாலும், உங்கள் கணினியில் உள்ள பல கோர்களின் பலனை நீங்கள் பெற முடியாது என்று அர்த்தமல்ல. எமது [`child_process.fork()`](https://nodejs.org/api/child_process.html) API-ஐப் பயன்படுத்தி துணைச் செயல்முறைகளை உருவாக்க முடியும்; இவை மிக எளிதாகத் தொடர்புகொள்ளும் வகையில் வடிவமைக்கப்பட்டுள்ளன. அதே இடைமுகத்தின் அடிப்படையில் உருவாக்கப்பட்டதே [`cluster`](https://nodejs.org/api/cluster.html) மாட்யூல் ஆகும். இது செயல்முறைகளுக்கு இடையே சாக்கெட்டுகளைப் பகிர்ந்துகொள்ள அனுமதிக்கிறது. இதன் மூலம் உங்கள் கணினியின் அனைத்து கோர்களிலும் சுமை சமநிலையை ஏற்படுத்தி, செயல்திறனை அதிகரிக்க முடியும்.

## அதிகாரப்பூர்வ Node.js ஆதாரங்கள்

Node.js உடன் பணியாற்றும்போது அதன் நம்பகத்தன்மை மற்றும் பாதுகாப்பை உறுதிப்படுத்த, எப்போதும் அதிகாரப்பூர்வ ஆதாரங்களையே பயன்படுத்துங்கள். அதிகாரப்பூர்வமற்ற இடங்களிலிருந்து வரும் மின்னஞ்சல்கள், பைனரி கோப்புகள் அல்லது பதிவிறக்கங்களை நம்புவதைத் தவிர்க்கவும்.

### அதிகாரப்பூர்வ Node.js களங்கள்

Node.js பைனரிகளைப் பதிவிறக்கம் செய்யவும், அதிகாரப்பூர்வ ஆவணங்களை அணுகவும், இந்தக் களங்களை மட்டும் பயன்படுத்தவும்:

- [nodejs.org](https://nodejs.org)
- [nodejs.dev](https://nodejs.dev) _(Redirects to https://nodejs.org)_
- [iojs.org](https://iojs.org) _(Redirects to https://nodejs.org)_

### அதிகாரப்பூர்வ npm தொகுப்புகள்

Node.js குழு பின்வரும் அதிகாரப்பூர்வ npm தொகுப்பு வரம்புகளைப் பராமரிக்கிறது:

- [`@node-core`](https://npmjs.com/~node-core)
- [`@pkgjs`](https://npmjs.com/~pkgjs)

கூடுதலாக, Node.js குழு [`nodejs-foundation`](https://npmjs.com/~nodejs-foundation) npm கணக்கின் மூலம் வெளியிடப்பட்ட தொகுப்புகளைப் பராமரிக்கிறது, மற்ற Node.js தொடர்பான தொகுப்புகளையும் ([`undici`](https://www.npmjs.com/package/undici) போன்றவை) திட்டத்துடன் நெருக்கமாகத் தொடர்புடைய பங்களிப்பாளர்கள் பராமரிக்கலாம்.

Node.js குழுவிலிருந்து தொகுப்புகளைப் பயன்படுத்துவது நீங்கள் அதிகாரப்பூர்வமாக ஆதரிக்கப்படும் Node.js கூறுகளைப் பயன்படுத்துகிறீர்கள் என்பதை உறுதி செய்கிறது.

### அதிகாரப்பூர்வ GitHub அமைப்புகள்

Node.js மற்றும் அது தொடர்பான திட்டங்கள் இந்த அதிகாரப்பூர்வ GitHub அமைப்புகளின் கீழ் பராமரிக்கப்படுகின்றன:

- [nodejs](https://github.com/nodejs)
- [pkgjs](https://github.com/pkgjs)

### அதிகாரப்பூர்வ தகவல் தொடர்பு வழிகள்

Node.js மற்றும் OpenJS அறக்கட்டளை பல்வேறு அதிகாரப்பூர்வ மற்றும் சமூக ஆதரவு வழிகள்மூலம் தொடர்பு கொள்கின்றன. எவ்வாறு ஈடுபடுவது என்பது பற்றிய விவரங்களை [Get Involved](https://nodejs.org/en/about/get-involved) பக்கத்தில் காணலாம்.

### வலைத்தள சிக்கல்கள் & செயலிழப்பு பற்றித் தெரிவித்தல்

Node.js இணையதளத்தில் சிக்கல்களை நீங்கள் சந்தித்தால், அவற்றை [Node.js இணையதள களஞ்சியத்தில்](https://github.com/nodejs/nodejs.org/issues) தெரிவிக்கவும்.
செயலிழப்புகள் குறித்த நிகழ்நேர புதுப்பிப்புகளுக்கு, [Node.js நிலை பக்கத்தைப்](https://status.nodejs.org) பார்வையிடவும்.
