Senior
Պատմեք Code-On-Demand սկզբունքի մասին։
sobes.tech AI
Պատասխան AI-ից
Code-On-Demand (Պահանջի վրա կոդ) սկզբունքը REST-ում մեկն է ընտրական շինարարական ոճերից, երբ սերվերը ժամանակավորապես կարող է ընդլայնել հաճախորդի գործառույթը ուղարկելով գործարկվող կոդ:
Այսպիսով, հաճախորդը կարող է ավելի թեթև լինել՝ մասամբ տեղափոխելով տրամաբանությունը սերվերին, որը «պահանջի վրա» բեռնվում է անհրաժեշտության դեպքում:
Օգտագործման օրինակներ՝
- JavaScript վեբ հավելումներում: Սերվերը ուղարկում է JavaScript կոդը բրաուզերին, որը կատարվում է հաճախորդի կողմում՝ ինտերակտիվության, տվյալների վավերացման, ասինխրոնային հարցումների և այլն իրականացնելիս:
- Պլագիններ և ընդարձակումներ: Սերվերը կարող է տրամադրել կոդ՝ հավելվածի կամ հաճախորդի գործառույթը ընդլայնելու համար:
Առավելություններ՝
- Տվյալների փոխանցման ծավալի կրճատում: Կոդը ուղարկվում է միայն անհրաժեշտության դեպքում:
- Լայնություն: Սերվերը կարող է դինամիկ փոփոխել հաճախորդի վարքը:
- Անհատական հաճախորդ: Հաճախորդը չի պետք նախապես իրականացնել բոլոր հնարավոր գործառույթները:
Անբարենպաստ կողմեր՝
- Իմպլեմենտացիայի և անվտանգության բարդություն: Պահանջվում է մեխանիզմ՝ վստահելի փոխանցում և գործարկում կոդը հաճախորդի կողմում:
- Աշխատանքային արագություն: Կոդի բեռնումը և գործարկումը կարող է տևել ժամանակ:
// Վեբում Code-On-Demand-ի օրինակ՝ սերվերը ուղարկում է JS ձևի վավերացման համար
// Սերվերը ուղարկում է HTML ձև և սցենտ
/*
<html>
<body>
<form id="myForm">
<input type="text" id="myInput">
<button type="submit">Ուղարկել</button>
</form>
<script src="/validate.js"></script> // Սցենտը "պահանջի վրա" բեռնվում է
</body>
</html>
*/
// /validate.js պարունակությունը
// Այս կոդը կատարվում է հաճախորդի կողմում բեռնելուց հետո
document.getElementById('myForm').addEventListener('submit', function(event) {
const input = document.getElementById('myInput');
if (input.value.trim() === '') {
alert('Դաշտը չի կարող լինել դատարկ!');
event.preventDefault(); // Բացառում է ձևի ուղարկումը
}
});