Sobes.tech
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(); // Բացառում է ձևի ուղարկումը
  }
});