Linux-ൽ നിങ്ങളുടെ ആദ്യത്തെ Node.js ആപ്പ് എങ്ങനെ എഴുതാം


കഴിഞ്ഞ കുറച്ച് വർഷങ്ങളായി വെബ് ഡെവലപ്uമെന്റ് ട്രെൻഡുകൾ ഗണ്യമായി മാറിയിട്ടുണ്ട്, ഒരു വെബ് ഡെവലപ്പർ എന്ന നിലയിൽ, നിങ്ങളുടെ ഗെയിമിന്റെ ഏറ്റവും ഉയർന്ന നിലയിലാകാൻ, ഏറ്റവും പുതിയ സാങ്കേതികവിദ്യകൾ ഉപയോഗിച്ച് അപ്uഡേറ്റ് ആയിരിക്കേണ്ടത് പ്രധാനമാണ്.

JavaScript ആണ് അവിടെ നിലവിലുള്ള ട്രെൻഡിംഗ് പ്രോഗ്രാമിംഗ് ഭാഷ; ഫുൾ സ്റ്റാക്ക് ഡെവലപ്പർമാർ ഉപയോഗിക്കുന്ന ഏറ്റവും ജനപ്രിയമായ സാങ്കേതികവിദ്യയാണ് ഇത്.

ജാവാസ്ക്രിപ്റ്റ് വെബ് ഫ്രെയിംവർക്കുകൾ കേവല കാര്യക്ഷമത, സുരക്ഷ, കുറഞ്ഞ ചെലവുകൾ എന്നിവ ഉപയോഗിച്ച് വേഗത്തിലുള്ള വെബ് വികസനത്തിനുള്ള ഒരു മാന്ത്രിക പരിഹാരമായി മാറിയിരിക്കുന്നു. നോഡ് ജാവാസ്ക്രിപ്റ്റിനെക്കുറിച്ച് നിങ്ങൾ കേട്ടിട്ടുണ്ടെന്ന് എനിക്ക് ഉറപ്പുണ്ട് (സാധാരണയായി Node.js അല്ലെങ്കിൽ നോഡ് എന്ന് വിളിക്കപ്പെടുന്നു), ഇന്റർനെറ്റിൽ അതിനെക്കുറിച്ച് ഒരു buzz ഉണ്ട്.

ഈ ലേഖനത്തിൽ, Linux-ൽ Node.js ഉപയോഗിച്ച് JavaScript-ൽ ആപ്ലിക്കേഷനുകൾ വികസിപ്പിക്കുന്നത് എങ്ങനെയെന്ന് ഞാൻ കാണിച്ചുതരാം. എന്നാൽ ആദ്യം, Node.js-ന് ഒരു ഹ്രസ്വ ആമുഖം നൽകാം.

എന്താണ് Node.js?

Node.js എന്നത് Chrome-ന്റെ V8 JavaScript എഞ്ചിനിൽ നിർമ്മിച്ച ഒരു ഓപ്പൺ സോഴ്uസും ഭാരം കുറഞ്ഞതും കാര്യക്ഷമവുമായ JavaScript റൺടൈമാണ്. ഇത് ത്രെഡുകളില്ലാതെ (സിംഗിൾ-ത്രെഡഡ്) രൂപകൽപ്പന ചെയ്uതിരിക്കുന്നു കൂടാതെ റൂബി പ്രോഗ്രാമുകൾക്കായുള്ള ഇവന്റ്-പ്രോസസിംഗ് ലൈബ്രറിയായ പൈത്തൺ അല്ലെങ്കിൽ ഇവന്റ് മെഷീൻ ഉപയോഗിച്ച് നിർമ്മിച്ച ഒരു നെറ്റ്uവർക്കിംഗ് എഞ്ചിനായ ട്വിസ്റ്റഡിന് സമാനമായ നിർവ്വഹണമുണ്ട്.

Node.js-ന്റെ ഹൃദയം ഇവന്റ്-ഡ്രൈവ് പ്രോഗ്രാമിംഗിനെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്; അതിനാൽ ഏതൊക്കെ ഇവന്റുകൾ ലഭ്യമാണെന്നും അവയോട് എങ്ങനെ പ്രതികരിക്കണമെന്നും ഒരു പ്രോഗ്രാമർ മനസ്സിലാക്കണം.

Node.js-ന് കീഴിൽ പാക്കേജ് മാനേജ്മെന്റ്

Node.js ജാവാസ്ക്രിപ്റ്റ് പാക്കേജ് മാനേജറും \npm എന്ന ഇക്കോസിസ്റ്റവും ഉപയോഗിക്കുന്നു, അതിൽ സ്വതന്ത്ര ഓപ്പൺ സോഴ്uസ് ലൈബ്രറികളുടെ ഒരു വലിയ ശേഖരം അടങ്ങിയിരിക്കുന്നു. മോഡുലാർ സോഫ്uറ്റ്uവെയർ വികസനത്തെ ഇത് പിന്തുണയ്uക്കുന്നു. നോഡ് പാക്കേജുകൾ ഇൻസ്റ്റാൾ ചെയ്യാനും പങ്കിടാനും നിങ്ങളുടെ കോഡ് വിതരണം ചെയ്യാനും നിയന്ത്രിക്കാനും നിങ്ങൾക്ക് ഇത് ഉപയോഗിക്കാം. പാക്കേജ് ഡിപൻഡൻസികൾ.

ഇനിപ്പറയുന്ന കാരണങ്ങളാൽ Node.js ശക്തവും പ്രധാനപ്പെട്ടതുമാണ്:

  • ഇത് ഒരു അസിൻക്രണസ് ഇവന്റ്-ഡ്രൈവൺ, നോൺ-ബ്ലോക്കിംഗ് I/O എക്uസിക്യൂഷൻ മോഡൽ ഉപയോഗിക്കുന്നു, ഇത് ഒരു ആപ്ലിക്കേഷന്റെ ത്രൂപുട്ട് മെച്ചപ്പെടുത്തുകയും യഥാർത്ഥ-ലോക വെബ് ആപ്ലിക്കേഷനുകൾക്കുള്ള സ്കേലബിളിറ്റിയെ പിന്തുണയ്ക്കുകയും ചെയ്യുന്നു.
  • ഇത് ഒറ്റ ത്രെഡുള്ളതിനാൽ ഏത് സമയത്തും 1 CPU മാത്രമേ ഉപയോഗിക്കാനാകൂ.
  • ഒരു node.js വെബ് ആപ്ലിക്കേഷൻ ഒരു സമ്പൂർണ്ണ വെബ് സെർവറാണ്, ഉദാഹരണത്തിന് Nginx അല്ലെങ്കിൽ Apache.
  • ഇത് ചൈൽഡ് പ്രോസസ് സ്പോൺ ചെയ്യുന്നതിനായി, child_process.fork() API വഴിയുള്ള ത്രെഡുകളെ പിന്തുണയ്ക്കുന്നു, കൂടാതെ ഒരു ക്ലസ്റ്റർ മൊഡ്യൂളും വാഗ്ദാനം ചെയ്യുന്നു.

ഈ ഹ്രസ്വമായ ആമുഖത്തോടെ, നിങ്ങളുടെ ആദ്യത്തെ JavaScript പ്രോഗ്രാം എഴുതാൻ നിങ്ങൾ ഉത്സുകനായിരിക്കണം. എന്നിരുന്നാലും, ആദ്യം കാര്യങ്ങൾ, താഴെ പറയുന്ന ഗൈഡ് ഉപയോഗിച്ച് നിങ്ങളുടെ Linux സിസ്റ്റത്തിൽ Node.js, NPM പാക്കേജുകൾ ഇൻസ്റ്റാൾ ചെയ്യണം.

  1. Linux സിസ്റ്റങ്ങളിൽ ഏറ്റവും പുതിയ നോഡേജുകളും NPM പതിപ്പും ഇൻസ്റ്റാൾ ചെയ്യുക

Linux-ൽ നിങ്ങളുടെ ആദ്യ Node.js ആപ്പ് എങ്ങനെ സൃഷ്ടിക്കാം

നിങ്ങൾ Node.js ഇൻസ്റ്റാൾ ചെയ്തുകഴിഞ്ഞാൽ, നിങ്ങൾ പോകാൻ തയ്യാറാണ്. നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ഫയലുകൾ സംഭരിക്കുന്ന ഒരു ഡയറക്ടറി സൃഷ്ടിച്ചുകൊണ്ട് ആദ്യം ആരംഭിക്കുക.

$ sudo mkdir -p /var/www/myapp

തുടർന്ന് ആ ഡയറക്uടറിയിലേക്ക് നീങ്ങി നിങ്ങളുടെ അപ്ലിക്കേഷനായി ഒരു package.json ഫയൽ സൃഷ്uടിക്കുക. നിങ്ങളുടെ പ്രോജക്റ്റിനുള്ള ഒരു ചെറിയ ഡോക്യുമെന്റേഷനായി ഈ ഫയൽ സഹായിക്കുന്നു: പ്രോജക്റ്റിന്റെ പേര്, രചയിതാവ്, അത് ആശ്രയിക്കുന്ന പാക്കേജുകളുടെ ലിസ്റ്റ് തുടങ്ങിയവ.

$ cd /var/www/myapp
$ npm init

ഇത് നിങ്ങളോട് നിരവധി ചോദ്യങ്ങൾ ചോദിക്കും, താഴെ വിവരിച്ചിരിക്കുന്നതുപോലെ ഉത്തരം നൽകുക, തുടർന്ന് [Enter] അമർത്തുക. package.json എന്നതിലെ ഏറ്റവും പ്രധാനപ്പെട്ട കാര്യങ്ങൾ ചുവടെ വിശദീകരിച്ചിരിക്കുന്നതുപോലെ പേരും പതിപ്പ് ഫീൽഡുകളുമാണ് എന്നത് ശ്രദ്ധിക്കുക.

  • പാക്കേജിന്റെ പേര് - നിങ്ങളുടെ ആപ്പിന്റെ പേര്, ഡയറക്uടറി നാമത്തിലേക്ക് ഡിഫോൾട്ട്.
  • പതിപ്പ് - നിങ്ങളുടെ ആപ്പിന്റെ പതിപ്പ്.
  • വിവരണം - നിങ്ങളുടെ ആപ്പിനായി ഒരു ചെറിയ വിവരണം എഴുതുക.
  • എൻട്രി പോയിന്റ് - എക്സിക്യൂട്ട് ചെയ്യേണ്ട ഡിഫോൾട്ട് പാക്കേജുകൾ ഫയൽ സജ്ജമാക്കുന്നു.
  • ടെസ്റ്റ് കമാൻഡ് - ഒരു ടെസ്റ്റ് സ്ക്രിപ്റ്റ് സൃഷ്ടിക്കാൻ ഉപയോഗിക്കുന്നു (ഒരു ശൂന്യമായ സ്ക്രിപ്റ്റിലേക്ക് സ്ഥിരസ്ഥിതി).
  • git repository – ഒരു Git repository നിർവ്വചിക്കുക (നിങ്ങൾക്ക് ഒന്ന് ഉണ്ടെങ്കിൽ).
  • കീവേഡുകൾ - കീവേഡുകൾ സജ്ജമാക്കുക, മറ്റ് ഉപയോക്താക്കൾക്ക് npm-ൽ നിങ്ങളുടെ പാക്കേജ് തിരിച്ചറിയാൻ പ്രധാനമാണ്.
  • രചയിതാവ് - രചയിതാവിന്റെ പേര് വ്യക്തമാക്കുന്നു, നിങ്ങളുടെ പേര് ഇവിടെ ഇടുക.
  • ലൈസൻസ് - നിങ്ങളുടെ ആപ്പ്/പാക്കേജിനുള്ള ലൈസൻസ് വ്യക്തമാക്കുക.

അടുത്തതായി, ഒരു server.js ഫയൽ സൃഷ്uടിക്കുക.

$ sudo vi server.js

അതിൽ താഴെയുള്ള കോഡ് പകർത്തി ഒട്ടിക്കുക.

var http = require('http');
http.createServer(function(req,res){
        res.writeHead(200, { 'Content-Type': 'text/plain' });
        res.end('Hello World!');
}).listen(3333);
console.log('Server started on localhost:3333; press Ctrl-C to terminate...!');

അടുത്തതായി, ഇനിപ്പറയുന്ന കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ആരംഭിക്കുക.

$ node server.js
OR
$ npm start

അടുത്തതായി, ഒരു വെബ് ബ്രൗസർ തുറന്ന് നിങ്ങളുടെ വെബ് ആപ്പ് ആക്സസ് ചെയ്യുക, അത് വിലാസം ഉപയോഗിച്ച് ഹലോ വേൾഡ്! എന്ന സ്ട്രിംഗ് പ്രിന്റ് ചെയ്യുകയല്ലാതെ മറ്റൊന്നും ചെയ്യില്ല:

http://localhost:3333

മുകളിലുള്ള ഞങ്ങളുടെ കോഡിൽ, പ്രോസസ്സ് ചെയ്യുന്ന പ്രധാന ഇവന്റ് HTTP മൊഡ്യൂൾ വഴിയുള്ള ഒരു HTTP അഭ്യർത്ഥനയാണ്.

Node.js-ൽ, മൊഡ്യൂളുകൾ JavaScript ലൈബ്രറികൾ പോലെയാണ്, അവയിൽ നിങ്ങളുടെ ആപ്പിൽ വീണ്ടും ഉപയോഗിക്കാനാകുന്ന ഫംഗ്uഷനുകൾ അടങ്ങിയിരിക്കുന്നു. നിങ്ങൾക്ക് ഇൻ-ബിൽറ്റ് മൊഡ്യൂളുകളും മുപ്പത് പാർട്ടി മൊഡ്യൂളുകളും ഉപയോഗിക്കാം അല്ലെങ്കിൽ നിങ്ങളുടേതായവ സൃഷ്ടിക്കാം.

നിങ്ങളുടെ ആപ്പിലെ മൊഡ്യൂളുകളെ വിളിക്കാൻ, കാണിച്ചിരിക്കുന്നതുപോലെ ആവശ്യമുള്ള ഫംഗ്uഷൻ ഉപയോഗിക്കുക.

var http = require('http');

http മൊഡ്യൂൾ ഉൾപ്പെടുത്തിയാൽ, അത് ഒരു പ്രത്യേക പോർട്ടിൽ ശ്രദ്ധിക്കുന്ന ഒരു സെർവർ സൃഷ്ടിക്കും (ഈ ഉദാഹരണത്തിൽ 3333). http.creatServer രീതി യഥാർത്ഥ http സെർവർ സൃഷ്ടിക്കുന്നു, അത് ഒരു ഫംഗ്uഷൻ (ഒരു ക്ലയന്റ് ആപ്പ് ആക്uസസ് ചെയ്യാൻ ശ്രമിക്കുമ്പോൾ അഭ്യർത്ഥിക്കുന്ന) ഒരു വാദമായി സ്വീകരിക്കുന്നു.

http.createServer(function(req,res){
        res.writeHead(200, { 'Content-Type': 'text/plain' });
        res.end('Hello World!');
}).listen(3333);

http.createServer-ലെ ഫംഗ്uഷന് രണ്ട് ആർഗ്യുമെന്റുകളുണ്ട്: req(request), res(response). ഒരു ഉപയോക്താവിൽ നിന്നോ ക്ലയന്റിൽ നിന്നോ ഉള്ള അഭ്യർത്ഥനയാണ് req ആർഗ്യുമെന്റ്, കൂടാതെ res ആർഗ്യുമെന്റ് ക്ലയന്റിന് ഒരു മറുപടി അയയ്ക്കുന്നു.

res.writeHead(200, { 'Content-Type': 'text/plain' });		#This is a response HTTP header
res.end('Hello World!');

സെർവർ സമാരംഭിച്ചുകഴിഞ്ഞാൽ കോഡിന്റെ അവസാന ഭാഗം കൺസോളിലേക്ക് ഔട്ട്uപുട്ട് അയയ്uക്കുന്നു.

console.log('Server started on localhost:3333; press Ctrl-C to terminate...!');

ഈ വിഭാഗത്തിൽ, Node.js പ്രോഗ്രാമിങ്ങിനു കീഴിലുള്ള റൂട്ടിംഗ് എന്നറിയപ്പെടുന്ന ഏറ്റവും പ്രധാനപ്പെട്ട ആശയങ്ങളിലൊന്ന് ഞാൻ വിശദീകരിക്കും (കമ്പ്യൂട്ടർ നെറ്റ്uവർക്കിംഗിന് കീഴിലുള്ള റൂട്ടിംഗുമായി താരതമ്യപ്പെടുത്താവുന്നതാണ്: ഒരു നെറ്റ്uവർക്കിൽ ട്രാഫിക്കിനായി ഒരു പാത കണ്ടെത്തുന്ന പ്രക്രിയ).

ഇവിടെ, റൂട്ടിംഗ് എന്നത് ഒരു ക്ലയന്റിന്റെ അഭ്യർത്ഥന കൈകാര്യം ചെയ്യുന്നതിനുള്ള ഒരു സാങ്കേതികതയാണ്; URL-ൽ വ്യക്തമാക്കിയിരിക്കുന്നതുപോലെ, ക്ലയന്റ് ആവശ്യപ്പെട്ട ഉള്ളടക്കം നൽകുന്നു. ഒരു പാത്തും അന്വേഷണ സ്ട്രിംഗും ചേർന്നതാണ് URL.

ഒരു ക്ലയന്റിന്റെ അഭ്യർത്ഥന സ്ട്രിംഗ് കാണുന്നതിന്, ഞങ്ങളുടെ പ്രതികരണത്തിൽ താഴെയുള്ള വരികൾ ചേർക്കാം.

res.write(req.url);
res.end()

പുതിയ കോഡ് ചുവടെയുണ്ട്.

var http = require('http');
http.createServer(function(req,res){
        res.writeHead(200, { 'Content-Type': 'text/plain' });
        res.write(req.url);
      res.end();		
      }).listen(3333);
console.log('Server started on localhost:3333; press Ctrl-C to terminate...!');

ഫയൽ സംരക്ഷിച്ച് ഇനിപ്പറയുന്ന കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങളുടെ ആപ്ലിക്കേഷൻ വീണ്ടും ആരംഭിക്കുക.

$ node server.js
OR
$ npm start

ഒരു വെബ് ബ്രൗസറിൽ നിന്ന്, ചുവടെ കാണിച്ചിരിക്കുന്നതുപോലെ പ്രദർശിപ്പിക്കുന്ന വ്യത്യസ്ത URL-കൾ ടൈപ്പ് ചെയ്യുക.

http://localhost:3333
http://localhost:3333/about
http://localhost:3333/tecmint/authors

ഇപ്പോൾ, ഞങ്ങൾ Tecmint-നായി ഒരു ഹോംപേജ്, എബൗട്ട്, രചയിതാക്കളുടെ പേജുകൾ എന്നിവയുള്ള ഒരു ചെറിയ വെബ്സൈറ്റ് സൃഷ്ടിക്കും. ഈ പേജുകളിൽ ഞങ്ങൾ ചില വിവരങ്ങൾ പ്രദർശിപ്പിക്കും.

എഡിറ്റിംഗിനായി server.js ഫയൽ തുറക്കുക, അതിൽ താഴെയുള്ള കോഡ് ചേർക്കുക.

//include http module 
var http = require('http');

http.createServer(function(req,res){
	//store URL in variable q_string

	var q_string = req.url;
	switch(q_string) {
		case '/':
                        	res.writeHead(200, { 'Content-Type': 'text/plain' });
                        	res.write('Welcome To linux-console.net!')
                        	res.end();
                        	break;
                	case '/about':
                		res.writeHead(200, { 'Content-Type': 'text/plain' });
                        	res.write('About Us');
                        	res.write('\n\n');
                        	res.write('linux-console.net - Best Linux HowTos on the Web.');
                        	res.write('\n');
                        	res.end('Find out more: https://linux-console.net/who-we-are/');
                        	break;
                	case '/tecmint/authors':
                        	res.writeHead(200, { 'Content-Type': 'text/plain' });
                        	res.write('Tecmint Authors');
                        	res.write('\n\n');
                        	res.end('Find all our authors here: https://linux-console.net/who-we-are/');
                        	break;
                	default:
                       		res.writeHead(404, { 'Content-Type': 'text/plain' });
                       		res.end('Not Found');
                        	break;
	}
}).listen(3333);
console.log('Server started on localhost:3333; press Ctrl-C to terminate....');

മുകളിലെ കോഡിൽ, // പ്രതീകങ്ങൾ ഉപയോഗിച്ച് Node.js-ൽ അഭിപ്രായങ്ങൾ എങ്ങനെ എഴുതാമെന്ന് ഞങ്ങൾ കണ്ടു, കൂടാതെ ക്ലയന്റ് അഭ്യർത്ഥനകൾ റൂട്ട് ചെയ്യുന്നതിനുള്ള സ്വിച്ച്, കേസ് സ്റ്റേറ്റ്uമെന്റുകളും അവതരിപ്പിച്ചു.

ഫയൽ സേവ് ചെയ്യുക, സെർവർ ആരംഭിച്ച് വിവിധ പേജുകൾ ആക്സസ് ചെയ്യാൻ ശ്രമിക്കുക.

തൽക്കാലം അത്രമാത്രം! NPM വെബ്സൈറ്റുകളിൽ നിങ്ങൾക്ക് കൂടുതൽ വിവരങ്ങൾ കണ്ടെത്താം.

Node.js ഇന്ന് പുതിയ ഉയരങ്ങളിലേക്ക് ഉയരുന്നു, ഇത് പൂർണ്ണ-സ്റ്റാക്ക് വികസനം മുമ്പത്തേക്കാൾ വളരെ എളുപ്പമാക്കി. ഇവന്റ്-ഡ്രൈവ് പ്രോഗ്രാമിംഗിന്റെ അതുല്യമായ തത്ത്വശാസ്ത്രം മിന്നൽ വേഗത്തിലും കാര്യക്ഷമവും അളക്കാവുന്നതുമായ വെബ് പ്രോസസ്സുകളും സെർവറുകളും സൃഷ്ടിക്കാൻ നിങ്ങളെ പ്രാപ്uതമാക്കുന്നു.

അടുത്തതായി, വെബ്/മൊബൈൽ ആപ്ലിക്കേഷനുകൾ വേഗത്തിലും വിശ്വസനീയമായും വികസിപ്പിക്കുന്നതിന് അതിന്റെ നേറ്റീവ് കഴിവുകൾ വിപുലീകരിക്കുന്ന Node.js ഫ്രെയിംവർക്കുകൾ ഞങ്ങൾ വിശദീകരിക്കും. ഈ ലേഖനത്തെക്കുറിച്ചുള്ള നിങ്ങളുടെ ചിന്തകൾ ചുവടെയുള്ള അഭിപ്രായ വിഭാഗത്തിലൂടെ പങ്കിടുക.