Skip to main content

āđ€āļāļĢāļīāđˆāļ™āļ™āļģ

āļŦāļĨāļēāļĒ āđ† āļ„āļ™āļ—āļĩāđˆāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđ€āļ‚āļĩāļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļšāļ·āđ‰āļ­āļ‡āļ•āđ‰āļ™āļ­āļēāļˆāļŠāļ‡āļŠāļąāļĒāļ§āđˆāļē Express.js āļ„āļ·āļ­āļ­āļ°āđ„āļĢ āđāļĨāđ‰āļ§āđ€āļāļĩāđˆāļĒāļ§āļ­āļ°āđ„āļĢāļāļąāļš NodeJS āđƒāļ™āļšāļ—āļ„āļ§āļēāļĄāļ™āļĩāđ‰āļˆāļ°āļĄāļēāđ€āļ‚āļĩāļĒāļ™āļ–āļķāļ‡āļ„āļ§āļēāļĄāļĢāļđāđ‰āđ€āļšāļ·āđ‰āļ­āļ‡āļ•āđ‰āļ™āđāļĨāļ°āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļāļąāļ™āļ§āđˆāļēāļ—āļģāđ„āļĄ Express.js āļ–āļķāļ‡āđ€āļ›āđ‡āļ™āļ•āļąāļ§ Framework āļ—āļĩāđˆāđ„āļ”āđ‰āļĢāļąāļšāļ„āļ§āļēāļĄāļ™āļīāļĒāļĄāļāļąāļ™āļ­āļĒāđˆāļēāļ‡āđāļžāļĢāđˆāļŦāļĨāļēāļĒāđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰āļ‡āđˆāļēāļĒ āļœāļĄāļ­āļĒāļēāļāļŠāļĢāļļāļ›āđ„āļ§āđ‰āđƒāļŦāđ‰āļāļĢāļ°āļŠāļąāļšāđāļĨāļ°āđ€āļ‚āđ‰āļēāđƒāļˆāļ‡āđˆāļēāļĒāļŠāļģāļŦāļĢāļąāļšāļ—āļļāļāļ„āļ™āļ™āļ°āļ„āļĢāļąāļš

Image : Project Structure of RESTFul API with Express.js on Node.js by NottDev

āļ—āļģāļ„āļ§āļēāļĄāļĢāļđāđ‰āļˆāļąāļāļāļąāļš NodeJS āļāļąāļ™

NodeJS āļžāļđāļ”āļ‡āđˆāļēāļĒ āđ† āļāļąāļ™āđ€āļĨāļĒāļ„āļ·āļ­āđ€āļ›āđ‡āļ™ JavaScript Open-Source / Cross-Platform Runtime āđƒāļ™āļŠāđˆāļ§āļ™āļ‚āļ­āļ‡ Server / Application āļ—āļĩāđˆ Developer āļŠāļēāļĄāļēāļĢāļ–āđāļāđ‰āđ„āļ‚āļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļ”āđ‰āļœāđˆāļēāļ™ JavaScript āļ™āļąāđˆāļ™āđ€āļ­āļ‡ āļ‹āļķāđˆāļ‡āđ€āļˆāđ‰āļē NodeJS āļ­āļĒāđˆāļēāļˆāļģāļ§āđˆāļēāļ™āđ‰āļ­āļ‡āļ„āļ·āļ­ Programming Language āļŦāļĢāļ·āļ­ Framework āļ™āđ‰āļ­āļ‡āļ„āļ·āļ­āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡ APIs āļ•āđˆāļēāļ‡ āđ† āđ„āļ”āđ‰ āđ„āļĄāđˆāļ§āđˆāļēāļˆāļ°āđ€āļ›āđ‡āļ™ Web / Mobile Application āļˆāļ°āđ€āļŦāđ‡āļ™āđ„āļ”āđ‰āđ€āļĨāļĒāļ§āđˆāļēāļ™āđ‰āļ­āļ‡āļ™āļąāđ‰āļ™āđ€āļ›āđ‡āļ™āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļĄāļēāļ āđ† āđ€āļĨāļĒāļ—āļĩāđ€āļ”āļĩāļĒāļ§

Express.js āđ€āļžāļ·āđˆāļ­āļ™āļĢāļąāļāļ‚āļ­āļ‡ NodeJS

āđƒāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļąāļšāļĢāļ°āļšāļšāļŦāļĨāļąāļ‡āļšāđ‰āļēāļ™āļŠāļģāļŦāļĢāļąāļš Backend Developers āļ™āļąāđ‰āļ™ āđāļ™āđˆāļ™āļ­āļ™āļ§āđˆāļēāļ™āđ‰āļ­āļ‡ NodeJS āļ‚āļ­āļ‡āđ€āļĢāļēāļ™āļąāđ‰āļ™āđ€āļ›āđ‡āļ™āđāļ„āđˆāđ€āļžāļĩāļĒāļ‡āđāļ„āđˆāļ•āļąāļ§āđ€āļŠāļ·āđˆāļ­āļĄāđ€āļ‰āļĒ āđ† āđ„āļĄāđˆāđƒāļŠāđˆ Language āļŦāļĢāļ·āļ­ Framework āļ”āļąāļ‡āļ™āļąāđ‰āļ™āđ€āļžāļ·āđˆāļ­āļ™āļ—āļĩāđˆāļŠāļ·āđˆāļ­āļ§āđˆāļē Express.js āļˆāļ°āļĄāļēāļŠāđˆāļ§āļĒāļžāļ§āļāđ€āļĢāļēāđ€āļ‚āļĩāļĒāļ™āļ—āļģāđƒāļŦāđ‰āļˆāļąāļ”āļāļēāļĢāļāļąāļšāļĢāļ°āļšāļšāļŦāļĨāļąāļ‡āļšāđ‰āļēāļ™āđ„āļ”āđ‰āļ‡āđˆāļēāļĒāļĄāļēāļāļ‚āļķāđ‰āļ™āļ™āļąāđˆāļ™āđ€āļ­āļ‡ āđ‚āļ”āļĒāļ—āļĩāđˆ Express.js āđ€āļ›āđ‡āļ™ Framework āļ•āļąāļ§āļŦāļ™āļķāđˆāļ‡āļ‚āļ­āļ‡ NodeJS āļ—āļĩāđˆāļˆāļ°āļŠāđˆāļ§āļĒāļˆāļąāļ”āļāļēāļĢāđ€āļĢāļ·āđˆāļ­āļ‡āļ‚āļ­āļ‡ APIs āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļ”āļĩāđ€āļĒāļĩāđˆāļĒāļĄ āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ„āļĢāđˆāļēāļ§ āđ† āđ€āļŠāđˆāļ™

  • āļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚āļĩāļĒāļ™ HTTP Methods āđ„āļ”āđ‰āđƒāļ™ URL āļ—āļĩāđˆāđāļ•āļāļ•āđˆāļēāļ‡āļāļąāļ™ āđ€āļĢāļĩāļĒāļāļ§āđˆāļē Routes
  • āļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚āđ‰āļēāļ–āļķāļ‡ Object āļ‚āļ­āļ‡ Request , Response āđāļĨāļ° next function āļ‚āļ­āļ‡ clients āļ—āļĩāđˆāļŠāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļĄāļēāļŦāļēāđ€āļĢāļēāđ„āļ”āđ‰ āđ€āļĢāļĩāļĒāļāļ§āđˆāļē Middlewares
  • āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰ Template Engines āļŦāļĢāļ·āļ­ Rendering Data āđ„āļ”āđ‰ āđ€āļŠāđˆāļ™ static templates file āļšāļ™āļŦāļ™āđ‰āļēāđ€āļ§āđ‡āļš HTML āļ‹āļķāđˆāļ‡āļ‡āđˆāļēāļĒāļ•āđˆāļ­āļāļēāļĢ Maintenance āđāļĨāļ° Design āļŦāļ™āđ‰āļēāđ€āļ§āđ‡āļš āļ‹āļķāđˆāļ‡āđƒāļŠāđ‰ Generator āđ€āļ›āđ‡āļ™ view engine

āļ‚āđ‰āļ­āļ”āļĩāļŦāļĨāļąāļ āđ† āļ‚āļ­āļ‡ Express.js āļĄāļĩāļ”āļąāļ‡āļ™āļĩāđ‰ :

  • Performance āļ„āđˆāļ­āļ™āļ‚āđ‰āļēāļ‡āļ”āļĩāđƒāļ™āļāļēāļĢāļĢāļąāļš Requests āđāļšāļšāļ•āđˆāļ­āđ€āļ™āļ·āđˆāļ­āļ‡āļŦāļĨāļēāļĒ āđ† āļ„āļĢāļąāđ‰āļ‡
  • āļĄāļĩ Community āļ‚āļ­āļ‡ Express.js āļ—āļĩāđˆāđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļ™āļģ APIs , Middleware , Routes āļ•āđˆāļēāļ‡ āđ† āļĄāļēāđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰āđ€āļĨāļĒ āļ‹āļķāđˆāļ‡āļˆāļ°āļŠāđˆāļ§āļĒāļ›āļĢāļ°āļŦāļĒāļąāļ”āđ„āļ”āđ‰āļ—āļąāđ‰āļ‡āļ•āđ‰āļ™āļ—āļļāļ™āđāļĨāļ°āđ€āļ§āļĨāļē
  • āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļ‡āļēāļ™āļāļąāļš Database āđāļĨāļ° Front-End āđ„āļ”āđ‰ ( āļ‚āļķāđ‰āļ™āļ­āļĒāļđāđˆāļāļąāļš Environment āļ‚āļ­āļ‡āļāļēāļĢāļ—āļģāļ‡āļēāļ™ )
  • āļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡ RESTful APIs āđ„āļ”āđ‰āļ”āļĩ āđ„āļĄāđˆāļ§āđˆāļēāļˆāļ°āđ€āļ›āđ‡āļ™āđƒāļ™āđ€āļĢāļ·āđˆāļ­āļ‡āļ‚āļ­āļ‡ HTTP Requests , Request Validation āļĢāļ§āļĄāļ–āļķāļ‡ Response Formatting

āļŠāđˆāļ§āļ™āļ‚āđ‰āļ­āđ€āļŠāļĩāļĒāļ‚āļ­āļ‡ Express.js āļĄāļĩāļ”āļąāļ‡āļ™āļĩāđ‰ :

  • āđƒāļ™āļšāļēāļ‡āļ„āļĢāļąāđ‰āļ‡āļ­āļēāļˆāđ„āļĄāđˆāđ„āļ”āđ‰ Support āđƒāļ™āļžāļ§āļ Specific Projects
  • āđƒāļ™āđ€āļĢāļ·āđˆāļ­āļ‡ Real-Time Application āļ­āļēāļˆāđ„āļĄāđˆāļ•āļ­āļšāđ‚āļˆāļ—āļĒāđŒāļĄāļēāļāđ€āļ—āđˆāļēāđ„āļŦāļĢāđˆ āđƒāļŠāđ‰ Socket.IO āļˆāļ°āđ€āļŦāļĄāļēāļ°āļŠāļĄāļāļ§āđˆāļē

āļŦāļĨāļąāļ‡āļˆāļēāļāđ€āļĢāļēāļĢāļđāđ‰āļˆāļąāļ Express.js āļĄāļēāļžāļ­āļŠāļĄāļ„āļ§āļĢ āļ”āļąāļ‡āļ™āļąāđ‰āļ™ āđ€āļĢāļēāļĄāļēāļĨāļ­āļ‡āļŠāļĢāđ‰āļēāļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāđ‚āļ”āļĒāđƒāļŠāđ‰ Express.js āļ”āđ‰āļ§āļĒāļāļąāļ™āļ„āļĢāļąāļš

āļ•āļīāļ”āļ•āļąāđ‰āļ‡ Express.js āļāļąāļ™āđ€āļ–āļ­āļ°

āđƒāļŦāđ‰āđ€āļžāļ·āđˆāļ­āļ™ āđ† āļ—āļģāļāļēāļĢāļ•āļīāļ”āļ•āļąāđ‰āļ‡ NodeJS āđ€āļ›āđ‡āļ™āļ­āļąāļ™āļ”āļąāļšāđāļĢāļāļœāđˆāļēāļ™āđ€āļ§āđ‡āļš https://nodejs.org/en/download āđ€āļĄāļ·āđˆāļ­āļ•āļīāļ”āļ•āļąāđ‰āļ‡āđ€āļŠāļĢāđ‡āļˆāđāļĨāđ‰āļ§āļ—āļģāļāļēāļĢāđ€āļ›āļīāļ” Terminal āđƒāļŠāđˆ File Directory āđƒāļ™āđ„āļŸāļĨāđŒāļ—āļĩāđˆāđ€āļĢāļēāļ•āđ‰āļ­āļ‡āļāļēāļĢāļĢāļąāļ™ āđāļĨāļ°āļĢāļąāļ™āļ„āļģāļŠāļąāđˆāļ‡ :

npm init -y

āđ€āļĄāļ·āđˆāļ­āļĢāļąāļ™āļ„āļģāļŠāļąāđˆāļ‡āļ‚āđ‰āļēāļ‡āļšāļ™āđ€āļŠāļĢāđ‡āļˆāđ€āļĢāļĩāļĒāļšāļĢāđ‰āļ­āļĒāđāļĨāđ‰āļ§āļˆāļ°āļĄāļĩāļ•āļąāļ§ package.json āļĄāļēāļŦāļ™āļķāđˆāļ‡āđ„āļŸāļĨāđŒâ€‹ āļŦāļĨāļąāļ‡āļˆāļēāļāļ™āļąāđ‰āļ™āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļ•āļīāļ”āļ•āļąāđ‰āļ‡ Express.js āđ„āļ”āđ‰āļœāđˆāļēāļ™āļ„āļģāļŠāļąāđˆāļ‡āđƒāļ™ Terminal āđ„āļ”āđ‰āļ”āļąāļ‡āļ™āļĩāđ‰ :

npm install express

āđ€āļĄāļ·āđˆāļ­āļ•āļīāļ”āļ•āļąāđ‰āļ‡āđ€āļŠāļĢāđ‡āļˆāđ€āļĢāļĩāļĒāļšāļĢāđ‰āļ­āļĒāđāļĨāđ‰āļ§ āđ€āļĢāļēāļĄāļēāļĨāļ­āļ‡āļŠāļĢāđ‰āļēāļ‡ Program āđāļĢāļāļ‚āļ­āļ‡āđ€āļĢāļēāļāļąāļ™āļ„āļĢāļąāļš ( āļŠāļĄāļĄāļ•āļīāļ§āđˆāļēāđ„āļŸāļĨāđŒāļ‚āļ­āļ‡āđ€āļĢāļēāļŠāļ·āđˆāļ­āļ§āđˆāļē myApp.js ) :

const express = require('express'); //āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰ express āļœāđˆāļēāļ™ require
const myApp = express(); //āļŠāļĢāđ‰āļēāļ‡āļ•āļąāļ§āđāļ›āļĢ myApp āđ€āļžāļ·āđˆāļ­āđƒāļŠāđ‰āļ‡āļēāļ™ express 
const port = 3000; //āļžāļ­āļĢāđŒāļ•āļ‚āļ­āļ‡ Server āļ—āļĩāđˆāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāđ€āļ›āļīāļ” Localhost 

myApp.get('/', (req, res) => {
  res.send('Hello World!');
}); 

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

āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļĢāļąāļ™ Code āļ‚āļ­āļ‡āđ€āļĢāļēāļœāđˆāļēāļ™āļ„āļģāļŠāļąāđˆāļ‡ node <filename>.js āļ™āļąāđˆāļ™āđ€āļ­āļ‡ :

node myApp.js

Output āļ‚āļ­āļ‡ Code āļ—āļĩāđˆāļ­āļ­āļāļĄāļē :

Server running at <http://localhost:3000/>

āļˆāļēāļ Code āļ‚āļ­āļ‡āđ€āļĢāļēāļˆāļ°āđ€āļŦāđ‡āļ™āđ„āļ”āđ‰āļ§āđˆāļēāđ€āļĄāļ·āđˆāļ­āđ€āļĢāļēāđ€āļ‚āđ‰āļēāđ„āļ›āļ—āļĩāđˆ localhost:3000 āļˆāļ°āđ€āļŦāđ‡āļ™āļ•āļąāļ§ Plain Text āļ„āļģāļ§āđˆāļē Hello World! āļ­āļĒāļđāđˆāļšāļ™āđ€āļ§āđ‡āļšāļ‚āļ­āļ‡āđ€āļĢāļēāļ™āļąāđˆāļ™āđ€āļ­āļ‡ āđ€āļĒāđ‰ ! āđāļ•āđˆāļŠāļģāļŦāļĢāļąāļšāļ•āļąāļ§ Path āļ­āļ·āđˆāļ™ āđ† āļ™āļ­āļāđ€āļŦāļ™āļ·āļ­āļˆāļēāļāļ™āļĩāđ‰āļˆāļ°āļ‚āļķāđ‰āļ™āļ§āđˆāļē 404

āđāļŦāļĨāđˆāļ‡āļ—āļĩāđˆāļĄāļē : āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļāļēāļĢāļ—āļģāļ‡āļēāļ™ Express āđ‚āļ”āļĒ Jax Wu (BigNerdCoding)

āļŠāļĢāļļāļ›

āđ€āļĢāļēāđ„āļ”āđ‰āļžāļđāļ”āļ–āļķāļ‡āļ™āļīāļĒāļēāļĄāļ§āđˆāļē NodeJS āđāļĨāļ° Express.js āļ„āļ·āļ­āļ­āļ°āđ„āļĢ āđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āđāļĨāļ°āļ—āļģāļ‡āļēāļ™āļāļąāļ™āļ­āļĒāđˆāļēāļ‡āđ„āļĢ āđ‚āļ”āļĒāļ—āļĩāđˆ Express.js āļ™āļąāđ‰āļ™āđ€āļ›āđ‡āļ™ Framework āļ—āļĩāđˆāļŠāļēāļĄāļēāļĢāļ–āļžāļąāļ’āļ™āļēāļ•āļąāļ§āļ‚āļ­āļ‡ Web Application / Mobile Application āļŦāļĢāļ·āļ­āļĢāļ°āļšāļšāļŦāļĨāļąāļ‡āļšāđ‰āļēāļ™āļ•āđˆāļēāļ‡ āđ† āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļ‡āđˆāļēāļĒāļ‚āļķāđ‰āļ™āļ™āļąāđˆāļ™āđ€āļ­āļ‡

āļˆāļšāđ„āļ›āđāļĨāđ‰āļ§āļ™āļ°āļ„āļĢāļąāļšāļŠāļģāļŦāļĢāļąāļšāļšāļ—āļ„āļ§āļēāļĄāļžāļ·āđ‰āļ™āļāļēāļ™āđāļĨāļ°āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļ‚āļ­āļ‡ Express.js āļŦāļ§āļąāļ‡āļ§āđˆāļēāđ€āļžāļ·āđˆāļ­āļ™ āđ† āļ—āļĩāđˆāđ€āļ‚āļēāļĄāļēāļ­āđˆāļēāļ™āļšāļ—āļ„āļ§āļēāļĄāļ™āļĩāđ‰āļˆāļ°āļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚āđ‰āļēāđƒāļˆāđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āļ›āļĢāļ°āļĒāļļāļāļ•āđŒāļāļąāļšāļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāļ‚āļ­āļ‡āļ—āļļāļāļ„āļ™āđ„āļ”āđ‰

āļŠāļģāļŦāļĢāļąāļšāđƒāļ„āļĢāļ—āļĩāđˆāļŠāļ™āđƒāļˆāļĻāļķāļāļĐāļēāļ•āđˆāļ­āđƒāļ™āđ€āļĢāļ·āđˆāļ­āļ‡āļ‚āļ­āļ‡āļāļēāļĢāļžāļąāļ’āļ™āļē Web Application āđ‚āļ”āļĒāđƒāļŠāđ‰ NodeJS āđāļĨāļ° Express.js āļŠāļēāļĄāļēāļĢāļ–āđ€āļĢāļĩāļĒāļ™āļ„āļ­āļĢāđŒāļŠāļŸāļĢāļĩāļˆāļēāļāļŠāļ–āļēāļšāļąāļ™ BorntoDev āđ„āļ”āđ‰āļ—āļĩāđˆ https://school.borntodev.com/course/introduction-to-web-app-development-with-nodejs-express āđ€āļžāļ·āđˆāļ­āđƒāļŠāđ‰āļ•āđˆāļ­āļĒāļ­āļ”āļ„āļ§āļēāļĄāļĢāļđāđ‰āļ‚āļ­āļ‡āđ€āļžāļ·āđˆāļ­āļ™ āđ† āđ„āļ”āđ‰āļ™āļąāđˆāļ™āđ€āļ­āļ‡

āļŠāļļāļ”āļ—āđ‰āļēāļĒāļ™āļĩāđ‰āļ‚āļ­āđƒāļŦāđ‰āđ€āļžāļ·āđˆāļ­āļ™ āđ† āļ—āļļāļāļ„āļ™āļ•āļīāļ”āļšāļąāļ„āļ™āđ‰āļ­āļĒ āđ† āđāļĨāļ°āļĄāļĩāļ„āļ§āļēāļĄāļŠāļļāļ‚āđƒāļ™āļ—āļļāļāļ§āļąāļ™āļ™āļ°āļ„āļĢāļąāļš ðŸ™‚

References

  • https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/Introduction
  • https://expressjs.com/
  • https://www.geeksforgeeks.org/introduction-to-express/
  • https://www.geeksforgeeks.org/node-js-introduction/

āđ€āļĢāļēāđƒāļŠāđ‰āļ„āļļāļāļāļĩāđ‰āđ€āļžāļ·āđˆāļ­āļžāļąāļ’āļ™āļēāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āđāļĨāļ°āļ›āļĢāļ°āļŠāļšāļāļēāļĢāļ“āđŒāļ—āļĩāđˆāļ”āļĩāđƒāļ™āļāļēāļĢāđƒāļŠāđ‰āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāļ‚āļ­āļ‡āļ„āļļāļ“ āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āļĻāļķāļāļĐāļēāļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āđ„āļ”āđ‰āļ—āļĩāđˆ āļ™āđ‚āļĒāļšāļēāļĒāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļ•āļąāļ§ āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āļˆāļąāļ”āļāļēāļĢāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļ•āļąāļ§āđ€āļ­āļ‡āđ„āļ”āđ‰āļ‚āļ­āļ‡āļ„āļļāļ“āđ„āļ”āđ‰āđ€āļ­āļ‡āđ‚āļ”āļĒāļ„āļĨāļīāļāļ—āļĩāđˆ āļ•āļąāđ‰āļ‡āļ„āđˆāļē

āļ•āļąāđ‰āļ‡āļ„āđˆāļēāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļ•āļąāļ§

āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āđ€āļĨāļ·āļ­āļāļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāļ„āļļāļāļāļĩāđ‰āđ‚āļ”āļĒāđ€āļ›āļīāļ”/āļ›āļīāļ” āļ„āļļāļāļāļĩāđ‰āđƒāļ™āđāļ•āđˆāļĨāļ°āļ›āļĢāļ°āđ€āļ āļ—āđ„āļ”āđ‰āļ•āļēāļĄāļ„āļ§āļēāļĄāļ•āđ‰āļ­āļ‡āļāļēāļĢ āļĒāļāđ€āļ§āđ‰āļ™ āļ„āļļāļāļāļĩāđ‰āļ—āļĩāđˆāļˆāļģāđ€āļ›āđ‡āļ™

āļĒāļ­āļĄāļĢāļąāļšāļ—āļąāđ‰āļ‡āļŦāļĄāļ”
āļˆāļąāļ”āļāļēāļĢāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļ•āļąāļ§
  • āļ„āļļāļāļāļĩāđ‰āļ—āļĩāđˆāļˆāļģāđ€āļ›āđ‡āļ™
    āđ€āļ›āļīāļ”āđƒāļŠāđ‰āļ‡āļēāļ™āļ•āļĨāļ­āļ”

    āļ›āļĢāļ°āđ€āļ āļ—āļ‚āļ­āļ‡āļ„āļļāļāļāļĩāđ‰āļĄāļĩāļ„āļ§āļēāļĄāļˆāļģāđ€āļ›āđ‡āļ™āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒ āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ€āļ›āđ‡āļ™āļ›āļāļ•āļī āđāļĨāļ°āđ€āļ‚āđ‰āļēāļŠāļĄāđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒ āļ„āļļāļ“āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āļ›āļīāļ”āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡āļ„āļļāļāļāļĩāđ‰āļ™āļĩāđ‰āđƒāļ™āļĢāļ°āļšāļšāđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāļ‚āļ­āļ‡āđ€āļĢāļēāđ„āļ”āđ‰
    āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ„āļļāļāļāļĩāđ‰

  • āļ„āļļāļāļāļĩāđ‰āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ•āļīāļ”āļ•āļēāļĄāļ—āļēāļ‡āļāļēāļĢāļ•āļĨāļēāļ”

    āļ›āļĢāļ°āđ€āļ āļ—āļ‚āļ­āļ‡āļ„āļļāļāļāļĩāđ‰āļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāļˆāļģāđ€āļ›āđ‡āļ™āđƒāļ™āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āđ€āļžāļ·āđˆāļ­āļāļēāļĢāļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒ āđāļĨāļ° āļ™āļģāđ€āļŠāļ™āļ­āđ‚āļ›āļĢāđ‚āļĄāļŠāļąāļ™ āļŠāļīāļ™āļ„āđ‰āļē āļĢāļ§āļĄāļ–āļķāļ‡āļŦāļĨāļąāļāļŠāļđāļ•āļĢāļŸāļĢāļĩ āđāļĨāļ° āļŠāļīāļ—āļ˜āļīāļžāļīāđ€āļĻāļĐāļ•āđˆāļēāļ‡ āđ† āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āđ€āļĨāļ·āļ­āļāļ›āļīāļ”āļ„āļļāļāļāļĩāđ‰āļ›āļĢāļ°āđ€āļ āļ—āļ™āļĩāđ‰āđ„āļ”āđ‰āđ‚āļ”āļĒāđ„āļĄāđˆāļŠāđˆāļ‡āļœāļĨāļ•āđˆāļ­āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļŦāļĨāļąāļ āđ€āļ§āđ‰āļ™āđāļ•āđˆāļāļēāļĢāļ™āļģāđ€āļŠāļ™āļ­āđ‚āļ›āļĢāđ‚āļĄāļŠāļąāļ™āļ—āļĩāđˆāļ­āļēāļˆāđ„āļĄāđˆāļ•āļĢāļ‡āļāļąāļšāļ„āļ§āļēāļĄāļ•āđ‰āļ­āļ‡āļāļēāļĢ
    āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ„āļļāļāļāļĩāđ‰

āļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļē