JavaScript – ын тухай

JavaScript –ийн зориулалт

Ямарч програм хангамжийн хөгжлийн хандлага нь аюулгүй байдлыг хангасан интерактив ажиллагаатай, ажиллахад эвтэйхэн интерфейстэй байхад оршино. Энэ нь хэрэглэгч тухайн програмыг үр дүнтэй ашиглах үндэс болохоос гадна програм боловсруулагчдын ашигт ажиллагааг өндөрсгөн улмаар өрсөлдөх чадварыг дээшлүүлнэ.
Энэ хандлага нь интернет програмчлалыг тойрч гарахгүй нь тодорхой. Сүүлийн жилүүдэд интернет програмчлал асар хурдтай хөгжиж байна. Интернетэд сайтад байрлуулсан маш их хэмжээний мэдээллийг хэрэглэгчид хүргэхэд хуудсыг үзэж байгаа хүнтэйгээ шууд харьцахгүйгээр төсөөлөхөд бэрхшээлтэй. Сайтад үзүүлж байгаа материалыг хэрэглэгчид хир зэрэг чанартай талбарлахаас тухайн сайтын үр өгөөж шууд хамаарна. HTML хэл нь статик веб хуудсыг үүсгэх боломжийг бүрдүүлдэг. Веб хуудсанд динамик байдлыг бий болгох олон технологийн нэг нь JavaScript юм.

Одоо интернетэд цэвэр статик хуудас бараг байхгүй болсон гэхэд хилсдэхгүй. Веб хуудасны статик байдал нь муу цаасан дээр жижиг шрифтээр хэвлэсэн сонин шиг л хэрэглэгчдэд хайхрамжгүй хандаж байгаагийн илрэл. Веб бүтээгдхүүнийг хэрэглэгч ашиглахад амархан, эвтэйхэн байлгахын тулд түүнийг үүсгэхдээ сүүлийн үеийн веб технологийг ашиглах хэрэгтэй. Веб технологиуд нь хэрэглэгч болон сервер талд ажиллах боломжоороо янз бүрийн хязгаарлалттай байдаг. JavaScript нь дээрх хоёр салангид технологийг нийлүүлэн маш үр дүнтэй харилцан холбоо бүхий ажиллагааг хангаж өгдөг онцгой чанартай.
Хэлийг үзэхийн өмнө энэ хэл юунд зориулагдан үүссэн, хэлийг хамгийн үр ашигтайгаар ямар зорилгод ашиглах боломжтойн талаар мэдэх хэрэгтэй.  
JavaScript нь HTML хуудсыг бүрдүүлэхэд ашигладаг програм бичдэг хэл юм. JavaScript нь статик веб хуудсанд функционал элементүүдийг нэмэхээс гадна клиент серверийн хооронд өгөгдлийг солилцох шинэ боломжуудыг нээж өгдөг.
Netscape ба Sun компаниуд JavaScript-ийг Netscape броузерт клиент талд ашиглах зорилгоор анх төлөвлөсөн боловч одоо хэлний боломж анхны төлөвлөсөн стандартын хязгаарыг аль хэдийн давсан болно. Одоогоор ихэнх өргөн дэлгэрсэн бүх броузерууд JavaScript-ийг дэмждэг.
JavaScript-ийг ашигласнаар статик HTML хуудсууд өндөр чанартай хөдөлгөөнт бүрдүүлэлт, өгөгдлийн оролт гаралтын интерактив диалог, өгөгдлийг серверт дамжуулахаас өмнө урьдчилан шалгах боломжуудаар хангагдана. JavaScript нь цорын ганц веб технологи биш. Гэхдээ түүний бусад CGI (Common Gateway Interface), Java апелит, ActiveX удирдлагын элементүүд гэх мэт веб технологуудтай зөрчилддөггүй нь түүнд илүү их хүчийг олгодог. Харин ч JavaScript програмаар эдгээр технологуудыг илүү үр ашигтай хэрэглэж болдог. JavaScript-ыг программ зохиогчид түүний клиент талын боломжоор илүү мэддэг хэдий ч хэл сервер талд CGI, Java, API програмуудтай эн тэнцүү ажиллах чадвартай.

Хэл зохиогдсон түүхээс

HTML хуудсыг интерактив горимд ажиллуулах шаардлгын үүднээс Netscape компани хуудсны дотор байрлан хөрвөгдөх хэлийг зохиох ажлыг эхлүүлсэн. Шинэ хэлэнд тавигдаж байсан үндсэн шаардлага нь HTML хэлний боломжийг өргөжүүлж ажлын дэлгэцэнд мэдээллийн оролт гаралтыг интерактив горимд хийдэг олон тооны CGI програмуудтай ижил үйлдлийг хийх явдал байлаа. Энэ хэлний анхны хувилбар нь LiveScript гэсэн нэртэй гарчээ. Sun компаниас Java хэлийг гаргасны дараа Netscape компани Sun - тай хамтрахаар шийдсэн бөгөөд Java хэлний бичлэг болон логикийг үндэслэн LiveScript -д хийгдсэн шийдлүүдийг ашиглан Netscape броузерт ашиглагдах програмын хэлийг боловсруулахаар болсон. Эдгээр компаниудын хамтын ажиллагааны дүнд JavaScript-ийг бүтээсэн. JavaScript нь компиляц (машины кодод хөрвүүлэгддэггүй) хийгддэггүй зөвхөн броузероор хөрвүүлэлт хийгддэг бөгөөд JavaScript-ийн яг ижил кодыг броузерууд янз бүрээр хөрвүүлдэг. 1995 оны 12-р сард JavaScript-ийн анхны хувилбар гарсан. Хэлний гол онцлог нь өгөгдөлтэй ажиллах ажиллагаанд клиент талд илүү бололцоог олгосон явдал байлаа.

Хэлний боломжууд. JavaScript ба Java

JavaScript нь нэг талаас HTML хэлний хөгжлийн үргэлжлэл мэт боловч нөгөө талаас JavaScript-ийг хангалттай хүнд бодлогыг шийдэх чадалтай бүрэн хэмжээний програмчлалын хэл гэж үзэж болно. Хэл нь өөрийн бичлэгийн дүрэм ба логиктойгоос гадна хангалттай өргөн боломжтой. Гэхдээ өөрийн компилятор гэж байхгүй бөгөөд HTML хуудасны код дотор бичигдэн броузероор хөрвүүлэгдэнэ. Броузер HTML кодыг бүрэн ачаалсны дараа JavaScript-ийн код броузероос шууд хамаарна. Хэрвээ броузер JavaScript-ийг дэмждэггүй бол код шууд дэлгэцэнд текст байдлаар гарч ирдэг. Гэхдээ интернетийн ихэнх хэрэглэгчид JavaScript-ийг дэмждэг броузеруудыг ашигладаг.
JavaScript-ийн кодыг бичихдээ энгийн текст едитороор (Notepad г.м) эсвэл JavaScript-ийн кодыг бичих тусгай зориулалтын (ScriptBuilder, HomeSite г.м) програмуудыг ашиглаж болно. Хэл бүх веб програмуудын ажиллагааг үр дүнтэй нэгтгэж чаддагаараа бусад хэлнүүдээс давуу бөгөөд үйл явцыг (event) боловсруулагч нь түүнд онцгой чанарыг бий болгосон. Үүний үр дүнд веб хуудастай харьцаж байгаа хэрэглэгчийн ажиллагааг улам илүү динамик уян хатан болгох боломжийг нээж өгдөг.
JavaScript ба Java эдгээр нь хоёр өөр төрлийн програмчлалын хэлүүд.
Java бол компилятор болон туслах файлуудын тусламжтайгаар ажилладаг обьект хандалттай програмчлалын хэл. Java-гаар зохиогдсон программууд нь бүрэн хэмжээний систем эсвэл вебийн апелит байдлаар ажилладаг. Хэдийгээр апелит HTML кодод орох боловч клиентийн машинд тусдаа файл байдлаар хадгалагдаж байдаг. Харин JavaScript –ийн программ тусдаа файл байдлаар байдаггүй HTML код дотор байрлана. JavaScript –ийн програм броузераас ажиллуусан мэт харагдана. JavaScript ба Java хэлүүдийг ялгааг хүснэгтээр үзүүлбэл

JavaScript ба Java хэлүүдийг ялгаанууд

JavaScript Java
Машины код руу хөрвүүлэлт хийгдэхгүй Ажлуулахын өмнө машины код руу хөрвүүлнэ
Обьектын хэл Обьект хандалттай хэл
HTML кодод скрипт байдлаар орно HTML кодоос тусдаа жижиг програм
Хувьсагч өгөгдлийн төрлүүдийг тодорхойлдоггүй Хувьсагч өгөгдлийн төрлүүдийг заавал тодорхойлно
Динамик холболттой. Ажиллах явцдаа обьектын холбоосыг шалгадаг Статик холболттой. Компиляц хийх үед обьектын холбоосыг шалгадаг

Мэдээлэл таалагдсан бол найзуудтайгаа хуваалцаарай.

  Нээгдсэн тоо: 322 Төлбөртэй

vuex сан төслийн компонентуудын ажиллагаануудын хоорондын хамааралыг арилган бие даан ажиллах боломжийг бүрдүүлдэг. Getters -ийг ашиглах хичээлд vuex сангийн state, getters талбаруудыг ашиглан Counter , SecondCounter компонентуудыг бусад компонентуудаас хамааралгүйгээр ажилладаг болгосон. Counter , SecondCounter компонентууд одоо зөвхөн store -той харьцан ажиллах болсноор төслийн компонент хоорондын хамаарал багасан програмын ажиллагааны логик ойлгомжтой хөнгөн болохын дээр компонентуудыг дахин ашиглах боломж бүрдсэн.

  Нээгдсэн тоо: 304 Төлбөртэй

Vuejs програмын ажиллагааг хожуу ачаалалт буюу lazy loading технологийг ашиглан оптимизаци хийх боломжийн тухай хичээлээр авч үзье. Өмнөх хичээлүүдэд хийгдэж байсан жишээ програмуудын Cars, Car, CarFull гэх мэт компоненнтууд болон төслийн бусад js файлууд npm run serve командаар компиляц хийгдэхэд бүгд нийлэн нэг файл болж байсан.

  Нээгдсэн тоо: 707 Нийтийн

Сүүлийн жилүүдэд Javascript хэл хөгжихийн хирээр түүнийг хэрэглэгч талын хуудасны хөгжүүлэлтэд улам ихээр ашиглан нэг хуудаст аппликашныг /SPA/ хийхэд өргөнөөр ашиглах боллоо. Цаашид Javascript програмистуудын эрэлт огцом өсөх хандлага бий болж байгаа тул та програмын чиглэлээр ажилладаг эсхүл суралцдаг бол сайтын хичээлүүдтэй танилцахыг санал болгоё. Хичээлд масиваас стрим үүсгэх боломжийг авч үзэх болно. Үүний тулд төслийн index.js файлд

function createSubscribe(name) {
    return {
        next(x) {
            console.log(name, ': ', x);
        },
        error(err) {
            console.log('Error: ', err);
        },
        complete() {
            console.log(name, ': Completed!');
        }
    }
}

Rx.Observable.from([1, 2, 3, 4])
    .subscribe(createSubscribe('from'));

кодыг оруулан өгье.

  Нээгдсэн тоо: 1458 Бүртгүүлэх

ES6 -д шинээр гарч ирсэн бүтцийн задаргаа (destructuring assignment) ойлголтын талаар хичээлд авч үзье. Хичээлийн сэдвийг ойлгохын тулд  

let obj = {
    name: 'e-surgalt.com',
    age: 20
};

let name = obj.name;
let age = obj.age;

console.log('name: ' + name, 'age: ' + age);

name, age талбаруудтай обьектыг үүсгэе. obj обьектын талбаруудыг тусдаа хувьсагчуудад авахын тулд өмнө нь дээрх кодод бичигдсэн аргыг ашигладаг байсан. Терминалаас webpack -ийг ажлуулаад хуудсаа хөтөч дээр нээн консолын цонхыг харвал

Үйл явдал /event/ тодорхой үйлдэл хийгдсэн талаар системд мэдэгддэг. Хэрвээ бид энэхүү үйлдлийг ажиглах хэрэгтэй бол яг энд…

Нээгдсэн тоо : 195

 

Манай төсөл олон хуудсуудтай болон тэдгээрийн хооронд динамикаар шилжилт хийж байгаа ч тухайн үед шилжилт хийгдсэн хуудаст тохирох…

Нээгдсэн тоо : 277

 

Зочин (Visitor) паттерн классуудыг өөрчлөхгүйгээр тэдгээрийн обьектуудын үйлдлийг тодорхойлох боломжийг олгоно. Зочин хэвийг ашиглахдаа классуудын хоёр ангилалыг тодорхойлно.…

Нээгдсэн тоо : 234

 

Лямбда-илэрхийлэл нь нэргүй аргын хураангуй бичилтийг илэрхийлнэ. Лямбда-илэрхийлэл утга буцаадаг, буцаасан утгыг өөр аргын…

Нээгдсэн тоо : 339

 

Кодийн сайжруулалт /рефакторинг/ хичээлээр програмийн кодоо react -ийн зарчимд нийцүүлэн компонентод салгасан.…

Нээгдсэн тоо : 377

 

Хадгалагч (Memento) хэв обьектын дотоод төлвийг түүний гадна гаргаж дараа нь хайрцаглалтын зарчмыг зөрчихгүйгээр обьектыг сэргээх боломжийг олгодог.

Нээгдсэн тоо : 395

 

Делегаттай нэргүй арга нягт холбоотой. Нэргүй аргуудыг делегатийн хувийг үүсгэхэд ашигладаг.
Нэргүй аргуудын тодорхойлолт delegate түлхүүр үгээр…

Нээгдсэн тоо : 462

 

Математикт харилцан урвуу тоонууд гэж бий. Ямар нэгэн тооны урвуу тоог олохдоо тухайн тоог сөрөг нэг зэрэг дэвшүүлээд…

Нээгдсэн тоо : 520

 

Төсөлд react-router-dom санг оруулан чиглүүлэгчдийг бүртгүүлэн тохируулсан Санг суулган тохируулах хичээлээр бид хуудас…

Нээгдсэн тоо : 556

 
Энэ долоо хоногт

Кубын ирмэг a. Дээд талын төвийг суурийн оройтой холбоход үүсэх пирамидийн бүтэн гадаргуун талбайг ол.

Нээгдсэн тоо : 1487

 

A=(-2; 3; 5), B=(4; -1; 7) векторууд өгөгджээ. 3A-2B векторын координатуудын нийлбэрийг ол.

Нээгдсэн тоо : 1070

 

Утасны лавлах номыг дэлгэн 7 цифрээс бүрдсэн дугаарыг санамсаргүйгээр байдлаар сонгоход дугаарын сүүлийн дөрвөн цифрүүд ижил байх хувилбарын тоог ол.

Нээгдсэн тоо : 299