Бір беттен тұратын қосымша - Single-page application

A бір беттен тұратын қосымша (SPA) Бұл веб-қосымша немесе веб-сайт токты динамикалық қайта жазу арқылы пайдаланушымен өзара әрекеттеседі веб парақ жаңа мәліметтермен веб-сервер, браузердің әдепкі әдісі орнына барлық жаңа беттерді жүктейді. Мақсаты - бұл веб-сайтты жылдам ауыстыру сезіну көбірек а жергілікті қолданба.

СПА-да барлығы қажет HTML, JavaScript, және CSS кодты браузер бір парақ жүктемесімен алады,[1] немесе тиісті ресурстар динамикалық түрде жүктеледі және қажет болған жағдайда параққа, әдетте, пайдаланушының әрекеттеріне жауап ретінде қосылады. Парақ процестің кез-келген нүктесінде қайта жүктелмейді және басқаруды басқа бетке өткізбейді, дегенмен орналасу хэші немесе HTML5 History API қолданбадағы бөлек логикалық беттерді қабылдау мен шарлауды қамтамасыз етуге болады.[2]

Тарих

Терминнің пайда болуы бір беттен тұратын қосымша түсініксіз, дегенмен тұжырымдама кем дегенде 2003 жылы талқыланды.[3] Стюарт Моррис, Уэльстегі Кардифф университетінің бағдарламалаушы студенті, 2002 жылдың сәуірінде slashdotslash.com сайтында өзін-өзі қамтыған веб-сайтты жазды,[4] содан кейін сол жылы Лукас Бирдо, Кевин Хакман, Майкл Пичи және Клиффорд Йех АҚШ-тағы 8,136,109 патенттегі бір парақты өтінімнің орындалуын сипаттады.[5]

JavaScript веб-шолғышта бейнені көрсету үшін қолданыла алады пайдаланушы интерфейсі (UI), қосымшалар логикасын іске қосыңыз және веб-сервермен байланыс орнатыңыз. SPA құрылысын қолдайтын, JavaScript кодын әзірлеушілер жазуға тура келетін көлемді төмендететін, ашық бастапқы коды бар кітапханалар қол жетімді.

Техникалық тәсілдер

Бағдарлама серверлік байланыс қажет болған жағдайда да, браузерге бір парақты сақтауға мүмкіндік беретін әр түрлі әдістемелер бар.

JavaScript жақтаулары

Сияқты веб-шолғыш, JavaScript рамалары мен кітапханалары AngularJS, Ember.js, ExtJS, Knockout.js, Meteor.js, Реакция, Vue.js, және Свельте SPA принциптерін қабылдады. ExtJS-тен басқа, олардың барлығы ашық ақпарат көзі.

  • AngularJS толығымен клиенттік құрылым болып табылады. AngularJS-тің екпіні екі бағытты негізге алынады UI деректерін байланыстыру. Деректерді байланыстыру - бұл модель өзгерген кезде көріністі жаңартудың, сондай-ақ көрініс өзгерген кезде модельді жаңартудың автоматты тәсілі. HTML үлгісі браузерде жинақталған. Компиляция қадамы таза HTML-ді жасайды, оны шолушы қайта тірі көрініске айналдырады. Келесі беттерді қарау үшін қадам қайталанады. Дәстүрлі HTML-серверлік бағдарламалауда жаңа HTML көріністерін шығару үшін контроллер және модель сияқты ұғымдар сервер процесінде өзара әрекеттеседі. AngularJS шеңберінде контроллер мен модель күйлері клиент шолғышында сақталады. Сондықтан жаңа беттер сервермен өзара әрекеттесусіз жасалуы мүмкін.
  • Ember.js - негізделген клиенттік JavaScript веб-қосымшасы модель - көрініс - контроллер (MVC) бағдарламалық жасақтаманың архитектуралық үлгісі. Ол байытылған объект моделін, декларативті екі жақты деректерді байланыстыруды, есептелген қасиеттерді, Handlebars.js арқылы шаблондарды автоматты түрде жаңартуды және маршрутизаторды қамтамасыз ететін құрылымға кең таралған идиомалар мен озық тәжірибелерді енгізу арқылы масштабталатын бір парақты қосымшалар жасауға мүмкіндік береді. өтініш күйін басқару.
  • ExtJS бұл MVC қосымшаларын құруға мүмкіндік беретін клиенттік құрылым. Оның өзіндік оқиғалар жүйесі, терезелер мен орналасуды басқару, мемлекеттік басқару (дүкендер) және әртүрлі UI компоненттері (торлар, диалогтық терезелер, форма элементтері және т.б.) бар. Оның динамикалық немесе статикалық жүктеушісі бар өзіндік класс жүйесі бар. ExtJS-пен құрылған қосымша не өздігінен (браузердегі күйімен), не сервермен (мысалы Демалыс Ішкі дүкендерін толтыру үшін қолданылатын API). ExtJS-те тек localStorage-ді қолдану мүмкіндігі бар, сондықтан үлкен бағдарламаларға күйді сақтау үшін сервер қажет.
  • Knockout.js - негізделген шаблондарды қолданатын клиенттік құрылым Model-View-ViewModel өрнек.
  • Meteor.js бұл тек SPA-ға арналған толық стек (клиент-сервер) JavaScript негізі. Ол Angular, Ember немесе ReactJS қарағанда қарапайым деректерді байланыстырады,[6] және қолданады Таратылған деректер хаттамасы[7] және а жариялау – жазылу үлгісі нақты уақыт режимінде клиенттерге деректердің өзгеруін автоматты түрде тарату үшін әзірлеушіден синхрондау кодын жазуды талап етпейді. Толық стек реактивтілігі мәліметтер базасынан шаблондарға дейінгі барлық қабаттар қажет болған кезде автоматты түрде жаңартылуын қамтамасыз етеді. Сияқты экожүйелік пакеттер Серверлік көрсету[8] іздеу жүйесін оңтайландыру мәселесін шешу.
  • Реакция Бұл JavaScript кітапханасы құрылыс үшін пайдаланушы интерфейстері. Оны қолдайды Facebook, Instagram және жеке әзірлеушілер мен корпорациялар қауымдастығы. React JS және HTML (HTML-дің бір бөлігі) араласқан жаңа тілді қолданады. Бірнеше компаниялар React-ты қолданады Redux (JavaScript кітапханасы) бұл мемлекеттік басқарудың мүмкіндіктерін қосады, бұл (бірнеше басқа кітапханаларда) әзірлеушілерге күрделі қосымшалар жасауға мүмкіндік береді.[9]
  • Vue.js - бұл пайдаланушы интерфейстерін құруға арналған JavaScript негізі. Vue әзірлеушілері Vuex-ті мемлекеттік басқару үшін ұсынады.
  • Свельте - бұл Svelte кодын JavaScript DOM манипуляцияларына жинақтайтын, клиент үшін фреймворды біріктіру қажеттілігінен аулақ болатын және қолданбаны жеңілдетіп синтаксис құруға мүмкіндік беретін қолданушы интерфейстерін құруға арналған негіз.

Аякс

2006 жылғы жағдай бойынша ең көрнекті әдіс қолданылды Аякс.[1] Ajax серверге асинхронды сұраныстарды қолдануды қамтиды XML немесе JSON JavaScript сияқты деректер XMLHttpRequest немесе қазіргі заманғы әкелу () (2017 жылдан бастап) немесе ескірген ActiveX нысаны. Айырмашылығы декларативті веб-сайт JavaScript немесе JavaScript кітапханасын тікелей қолданады jQuery манипуляциялау DOM және HTML элементтерін өңдеу. Ajax сияқты кітапханалар бұдан әрі танымал болды jQuery, бұл қарапайым синтаксисті қамтамасыз етеді және Ajax мінез-құлқын тарихи әртүрлі мінез-құлыққа ие болған әр түрлі браузерлерде қалыпқа келтіреді.

WebSockets

WebSockets HTML5 спецификациясының бөлігі болып табылатын нақты уақыт режиміндегі клиент-сервер байланысының екі бағытты технологиясы. Нақты уақыттағы байланыс үшін оларды пайдалану Ajax-тен өнімділігі жағынан жоғары[10] және қарапайымдылық.

Сервер жіберген оқиғалар

Сервер жіберген оқиғалар (SSEs) - бұл серверлер браузер клиенттеріне деректерді жіберуді бастайтын әдіс. Бастапқы байланыс орнатылғаннан кейін, оқиға ағыны клиент жабылғанға дейін ашық болып қалады. SSE-лер дәстүрлі HTTP арқылы жіберіледі және WebSockets жетіспейтін әртүрлі мүмкіндіктерге ие, мысалы, автоматты түрде қайта қосу, оқиға идентификаторлары және кездейсоқ оқиғаларды жіберу мүмкіндігі.[11]

Браузер плагиндері

Бұл әдіс ескірген болса да, серверге асинхронды қоңыраулар сияқты браузердің қосылатын модуль технологияларын қолдану арқылы қол жеткізуге болады. Күміс жарық, Жарқыл, немесе Java қосымшалары.

Деректерді тасымалдау (XML, JSON және Ajax)

Серверге сұраныстар әдетте бастапқы деректерге әкеледі (мысалы, XML немесе JSON ) немесе жаңа HTML қайтару. HTML серверге қайтарылған жағдайда, клиенттегі JavaScript DOM ішінара аймағын жаңартады (Құжат нысанының моделі ).[12] Шикі деректер қайтарылған кезде, көбінесе клиенттік JavaScript XML / (XSL ) процесс (және JSON жағдайында a шаблон ) бастапқы деректерді HTML-ге аудару үшін қолданылады, содан кейін DOM ішінара аймағын жаңарту үшін қолданылады.

Сервер архитектурасы

Жұқа серверлік архитектура

SPA логиканы серверден клиентке ауыстырады, бұл веб-сервер рөлі таза деректер API немесе веб-қызметке ауысады. Бұл архитектуралық ауысым кейбір шеңберлерде «Жіңішке сервер архитектурасы» ойлап табылған, бұл жүйенің күрделілігін төмендетеді деген аргументпен күрделіліктің серверден клиентке ауысқанын көрсетеді.

Сервердің қалың архитектурасы

Сервер парақтың клиенттік жадында қажетті күйді сақтайды. Осылайша, кез-келген сұраныс серверге түскенде (әдетте пайдаланушының әрекеті), сервер клиентті жаңа қажетті күйге келтіру үшін (әдетте, оның бөлігін қосу / жою / жаңарту үшін) тиісті HTML және / немесе JavaScript жібереді. клиенттік DOM). Сонымен бірге, сервердегі күй жаңартылады. Логиканың көп бөлігі серверде орындалады, ал HTML де серверде көрсетіледі. Қандай да бір жолмен, сервер веб-шолғышты имитациялайды, оқиғаларды қабылдайды және клиентке автоматты түрде таралатын сервер күйіндегі үшбұрышты өзгерістерді орындайды.

Бұл тәсіл сервер жадын және серверді өңдеуді көбірек қажет етеді, бірақ артықшылығы - жеңілдетілген даму моделі, өйткені а) қосымша серверде толығымен кодталады, ал б) сервердегі деректер мен интерфейс күйі бірдей жад кеңістігінде жоқ клиенттік / серверлік байланыс көпірлеріне қажеттілік.

Қалың азаматтығы жоқ архитектура

Бұл жағдайлы серверлік тәсілдің нұсқасы. Клиенттік парақ оның ағымдағы күйін білдіретін деректерді серверге әдетте Ajax сұраныстары арқылы жібереді. Осы деректерді пайдалана отырып, сервер өзгертілуі қажет беттің бір бөлігінің клиенттік күйін қалпына келтіре алады және қажетті деректерді немесе кодты жасай алады (мысалы, JSON немесе JavaScript сияқты), ол клиентке әкелу үшін қайтарылады оны сұранысқа түрткі болған клиенттің іс-әрекетіне сәйкес әдетте DOM парағының парағын өзгертетін жаңа күйге келтіреді.

Бұл тәсіл серверге көбірек мәліметтер жіберуді талап етеді және клиенттің бет күйін серверде ішінара немесе толықтай қайта құру үшін әр сұраныс үшін есептеу ресурстарының көбірек болуын талап етуі мүмкін. Сонымен қатар, бұл тәсілді масштабтауға болады, өйткені серверде клиенттің жеке бетінде мәліметтер сақталмайды, сондықтан Ajax сұраныстарын әр түрлі сервер түйіндеріне жіберуге болады, олар сеанстың деректерін бөлісуге немесе сервердің жақындығына мұқтаж емес.

Жергілікті жерде жүгіру

Кейбір SPA жергілікті файлдан орындалуы мүмкін файл URI схемасы. Бұл пайдаланушыларға серверден SPA-ны жүктеу және файлды жергілікті сақтау құрылғысынан сервер қосылымына байланысты емес іске қосу мүмкіндігін береді. Егер мұндай SPA деректерді сақтағысы және жаңартқысы келсе, ол шолғышқа негізделген қолдануы керек Веб-сақтау. Бұл қосымшалар қол жетімді аванстардың пайдасын алады HTML5.[13]

SPA үлгісіндегі қиындықтар

SPA - бұл бастапқыда браузерлер үшін жасалған азаматтығы жоқ бетті қайта өзгерту моделінен алшақтау эволюциясы болғандықтан, кейбір жаңа қиындықтар пайда болды. Мүмкін болатын шешімдерге (әртүрлі күрделілік, кешенділік және авторлық бақылау) мыналар жатады:[14]

  • Клиенттік JavaScript кітапханалары.
  • SPA моделіне мамандандырылған серверлік веб-құрылымдар.[15][16][17]
  • Браузерлердің эволюциясы және HTML5 спецификациясы,[18] SPA моделіне арналған.

Іздеу жүйесін оңтайландыру

Кейбір танымал кроллерлерде JavaScript орындалмағандықтан Веб-іздеу жүйелері,[19] SEO (Іздеу жүйесін оңтайландыру ) тарихи тұрғыдан SPA моделін қабылдағысы келетін көпшілікке арналған веб-сайттар үшін проблема ұсынды.[20]

2009-2015 жылдар аралығында, Google Webmaster Central «AJAX тексеріп шығу схемасын» ұсынды және ұсынды[21][22] күйді анықтау үшін фрагменттің идентификаторларында алғашқы леп белгісін қолдану AJAX беттер (#!). Іздеу жүйесінің тексергішімен тиісті метамәліметтерді шығаруға мүмкіндік беру үшін SPA сайты арнайы мінез-құлықты іске асыруы керек. Осы URL хэш-схемасын қолдамайтын іздеу жүйелері үшін SPA-ның кірген URL мекен-жайлары көрінбейді. Бұл «hash-bang» URI-ді W3C-да Джени Теннисон сияқты бірқатар жазушылар проблемалы деп санайды, өйткені олар парақтарды қол жетімді емес адамдар үшін қол жетімсіз етеді. JavaScript олардың шолғышында белсендірілген. Олар сондай-ақ бұзылады HTTP сілтемесі браузерлер ретінде тақырыптар сілтеме тақырыбында фрагмент идентификаторын жіберуге рұқсат етілмейді.[23] 2015 жылы Google олардың hash-bang AJAX тексеріп шығу туралы ұсынысын жоққа шығарды.[24]

Сонымен қатар, қосымшалар сервердегі бірінші парақты және клиенттің келесі бет жаңартуларын көрсете алады. Бұл дәстүрлі түрде қиын, себебі рендеринг кодын серверде және клиентте басқа тілде немесе құрылымда жазу қажет болуы мүмкін. Логикасыз шаблондарды пайдалану, бір тілден екінші тілге кросс-компиляция жасау немесе серверде және клиентте бір тілді пайдалану бөлісуге болатын кодтың мөлшерін көбейтуге көмектеседі.

СПА-да SEO үйлесімділігі маңызды емес болғандықтан, іздеу машиналарын индекстеу қажет немесе қажет болған жағдайда, SPA-лар әдетте пайдаланылмайтынын атап өткен жөн. Қолдану жағдайларына жеке деректердің артында жасырылған қосымшалар жатады аутентификация жүйе. Бұл қосымшалар тұтынушылық өнім болып табылатын жағдайларда, қосымшалардың кіру беті мен маркетингтік сайт үшін көбінесе классикалық «бетті қайта сызу» моделі қолданылады, бұл қолданбаның іздеу жүйесінде сұранысқа ие болуы үшін жеткілікті мета деректерді ұсынады. Блогтар, қолдау форумдары және басқа да дәстүрлі парақтарды қайта қарау суреттері іздеу жүйелерін тиісті шарттармен толықтыра алатын SPA-ның айналасында жиі кездеседі.

Java-ға негізделген серверге бағытталған веб-құрылымдар қолданатын тағы бір тәсіл Жоқ дегеніміз - серверде кез-келген гипермәтінді сол тіл мен темплирование технологиясын қолдану. Бұл тәсілде сервер клиенттегі DOM күйін дәл біледі, кез-келген үлкен немесе кіші бетті жаңарту серверде жасалады және Ajax арқылы жеткізіледі, дәл JavaScript коды клиент парағын DOM әдістерін орындайтын жаңа күйге жеткізеді. . Әзірлеушілер SEO үшін веб-өрмекшілер қай парақтың күйін тексеріп шығуы керек және жүктеу кезінде JavaScript орнына қарапайым HTML құра отырып, қажетті күйді жасай алады. ItsNat шеңберінде бұл автоматты, өйткені ItsNat клиенттің DOM ағашын серверде Java W3C DOM ағашы ретінде сақтайды; серверде осы DOM ағашының көрсетілуі жүктеу кезінде қарапайым HTML жасайды және Ajax сұраныстары үшін JavaScript DOM әрекеттері. Бұл қосарлық SEO үшін өте маңызды, себебі әзірлеушілер бірдей Java кодымен және HTML-ге негізделген серверде қалаған DOM күйін құра алады; парақты жүктеу кезінде әдеттегі HTML-ді ItsNat жасайды, бұл DOM күйін SEO-мен үйлесімді етеді.

1.3 нұсқасы бойынша,[25] ItsNat жаңа азаматтығы жоқ режимді ұсынады, ал DOM клиенті серверде сақталмайды, өйткені азаматтығы жоқ режим клиентінде DOM күйі серверде ішінара немесе толықтай қайта құрылады, бұл кез-келген Ajax сұранысын клиент жіберген қажетті мәліметтер негізінде клиент жіберген мәліметтер негізінде өңдейді. ағымдағы DOM күйінің сервері; азаматтығы жоқ режим де SEO-мен үйлесімді болуы мүмкін, себебі SEO үйлесімділігі күйдің немесе азаматтығы жоқ режимдерге әсер етпейтін бастапқы парақтың жүктелу кезінде болады. Басқа ықтимал таңдау - бұл PreRender, Puppeteer, Rendertron сияқты құрылымдар, олар кез-келген веб-сайтқа веб-сервердің конфигурациясы бар, веб-сервердің конфигурациясы бар, бот сұрауларын (google bot және басқаларын) орта бағдарламалық жасақтамамен қамтамасыз етуге мүмкіндік береді, ал боттардан тыс сұраныстар әдеттегідей қызмет етеді. . Бұл құрылымдар веб-сайттың тиісті беттерін мезгіл-мезгіл кэштейді, олар іздеу жүйелеріне соңғы нұсқаларын ұсынады. Бұл шеңберлерді google ресми түрде мақұлдады.[26]

Веб-сайтты қарап шығуға болатындай етіп жасау үшін бірнеше шешім бар. Екеуі де SPA мазмұнын бейнелейтін бөлек HTML парақтар құруды көздейді. Сервер сайттың HTML-ге негізделген нұсқасын жасап, оны тексеріп шығушыларға жеткізе алады, немесе басы жоқ шолғышты қолдануға болады. PhantomJS JavaScript қосымшасын іске қосу және алынған HTML-ді шығару.

Мұның екеуі де біраз күш жұмсауды қажет етеді және күрделі сайттар үшін техникалық қызмет көрсетудің бас ауруы болуы мүмкін. Сондай-ақ SEO-да ықтимал тұзақтар бар. Егер сервер жасаған HTML SPA мазмұнынан тым өзгеше деп есептелсе, онда сайт айыппұл төлейді. HTML-ді шығару үшін PhantomJS-ті іске қосу беттердің жауап беру жылдамдығын баяулатуы мүмкін, бұл іздеу жүйелері - әсіресе Google - рейтингті төмендетеді.[27]

Клиенттің / сервердің кодын бөлу

Серверлер мен клиенттер арасында бөлісуге болатын код санын көбейтудің бір әдісі - логикасыз шаблон тілін қолдану Мұрт немесе Тұтқалар. Мұндай шаблондарды әр түрлі хост тілдерінен беруге болады, мысалы Рубин серверде және JavaScript клиентте. Алайда, тек шаблондарды бөлісу үшін көбейту керек іскерлік логика шаблондарды дұрыс таңдау және оларды мәліметтермен толтыру үшін қолданылады. Үлгілерден ұсыну парақтың кішкене бөлігін ғана жаңартқанда, мысалы, үлкен шаблон ішіндегі мәтін енгізу мәні сияқты жағымсыз әсер етуі мүмкін. Толық шаблонды ауыстыру пайдаланушының таңдауын немесе курсордың орналасуын бұзуы мүмкін, тек өзгертілген мәнді жаңарту мүмкін емес. Бұл проблемаларды болдырмау үшін қосымшалар қолдана алады UI деректерін байланыстыру немесе түйіршікті DOM барлық шаблондарды қайта көрсетудің орнына беттің тиісті бөліктерін жаңарту үшін манипуляция.

Браузер тарихы

SPA-мен, анықтама бойынша, «бір парақ», модель «алға» немесе «артқа» батырмаларын пайдаланып беттер тарихын шарлау үшін браузердің дизайнын бұзады. Бұл пайдаланушы SPA ішіндегі алдыңғы экран күйін күте отырып, артқы батырманы басқанда, қол жетімділікке кедергі келтіреді, бірақ оның орнына қосымшаның жалғыз беті түсіріліп, шолғыштың тарихындағы алдыңғы бет ұсынылады.

СПА-ның дәстүрлі шешімі - шолушының URL мекенжайын өзгерту фрагмент идентификаторы ағымдағы экран күйіне сәйкес. Бұған JavaScript арқылы қол жеткізуге болады және URL тарихындағы оқиғалар браузерде жасалады. SPA URL хэшінде қамтылған ақпараттан бірдей экран күйін қалпына келтіруге қабілетті болған кезде, күткен артқы батырма әрекеті сақталады.

Бұл мәселені әрі қарай шешу үшін HTML5 спецификациясы енгізілді pushState және replaceState нақты URL және браузер тарихына бағдарламалық қол жеткізуді қамтамасыз ету.

Талдау

Сияқты талдау құралдары Google Analytics браузерде жүктелетін жаңа беттерге үлкен сенім артыңыз, оны жаңа парақ жүктеу бастайды. SPA осылайша жұмыс істемейді.

Бірінші парақ жүктелгеннен кейін, барлық келесі бет пен мазмұн өзгерістері қосымша арқылы өңделеді, бұл жай аналитикалық буманы жаңарту үшін функцияны шақыруы керек. Бұл функцияға қоңырау шала алмаса, браузер ешқашан жаңа парақ жүктемесін тудырмайды, браузер тарихына ештеңе қосылмайды және аналитика пакеті сайтта кім не істеп жатқанын білмейді.

SPA-ға бет жүктемелерін қосу

HTML5 history API көмегімен SPA-ға беттерді жүктеу оқиғаларын қосуға болады; бұл аналитиканы біріктіруге көмектеседі. Қиындықтар оны басқаруда және бәрінің дәл қадағалануын қамтамасыз етуде - бұл жетіспейтін есептер мен қос жазбалардың болуын тексеруді қамтиды, ал кейбір құрылымдар негізгі аналитикалық провайдерлердің көпшілігінде ашық бастапқы деректерді біріктіруді ұсынады. Әзірлеушілер оларды қосымшамен біріктіре алады және бәрі дұрыс жұмыс істейтіндігіне көз жеткізе алады, бірақ бәрін нөлден бастаудың қажеті жоқ.[27]

Бастапқы жүктеменің жылдамдығы

Бір парақты қосымшалар серверге негізделген қосымшаларға қарағанда бірінші парақтың жүктемесі баяу. Себебі бірінші жүктеме қажетті көріністі браузерде HTML ретінде көрсетпес бұрын фреймворк пен қолданба кодын түсіруі керек. Серверге негізделген бағдарлама тек қажет HTML-ді браузерге жіберіп, кідірісті және жүктеу уақытын азайтады.

Парақтың жүктелуін жылдамдату

SPA-ның бастапқы жүктемесін жылдамдатудың кейбір жолдары бар, мысалы, кэштеуге ауыр көзқарас және қажет болған кезде жалқау жүктеу модульдері. Бірақ оған фреймворкты, қолданба кодының ең болмағанда бір бөлігін жүктеп алу керек және браузерде бірдеңе көрсетпес бұрын, деректер үшін API-ді ұрып тастауы мүмкін екендігімен алысу мүмкін емес.[27] Бұл «қазір төле, не кейін төле» сценарийі. Өнімділік және күту уақыты туралы мәселе әзірлеуші ​​қабылдауы керек шешім болып қала береді.

Беттің өмірлік циклі

SPA бастапқы параққа толығымен жүктеледі, содан кейін бет аймақтары ауыстырылады немесе сұраныс бойынша серверден жүктелген жаңа парақ фрагменттерімен жаңартылады. Пайдаланылмаған функцияларды шамадан тыс жүктеуді болдырмау үшін, SPA көбінесе парақтың кішігірім бөліктерін немесе экранның толық модулін қажет ететін сайын қосымша функцияларды жүктеп алады.

Осылайша, SPA-дағы «күйлер» мен дәстүрлі веб-сайттағы «беттер» арасында ұқсастық бар. Бір парақтағы «мемлекеттік навигация» парақтағы навигацияға ұқсас болғандықтан, кез-келген параққа негізделген веб-сайт өзгертілген бөліктерді сол бетте ауыстыратын бір параққа ауыстырылуы мүмкін.

Интернеттегі SPA тәсілі ұқсас бір құжаттық интерфейс (SDI) презентация техникасы жергілікті жұмыс үстелінде танымал.

Әдебиеттер тізімі

  1. ^ а б Фланаган, Дэвид, «JavaScript - анықтамалық нұсқаулық «, 5-ші басылым, О'Рейли, Себастополь, Калифорния, 2006 ж, 497-бет
  2. ^ «Артқы түймешікті түзету:» Hash «пайдалану арқылы SPA әрекеті». Falafel бағдарламалық қамтамасыз ету блогы. Алынған 18 қаңтар, 2016.
  3. ^ «Ішкі шолу: шарлау парадигмасын веб-шолуды кеңейту». Алынған 3 ақпан, 2011.
  4. ^ «Slashdotslash.com: DHTML пайдаланатын дербес веб-сайт». Алынған 6 шілде, 2012.
  5. ^ «8,136,109 АҚШ патенті». Алынған 12 сәуір, 2002.
  6. ^ «Метеор жалыны». Meteor Blaze - қолданушы интерфейстерін жаңартуға арналған қуатты кітапхана. Блейз бұрыштық, магистралды, кәріптас, реактивті, полимерлік немесе нокаут сияқты мақсаттарды орындайды, бірақ оны қолдану әлдеқайда жеңіл. Біз оны басқа кітапханалар қолданушы интерфейсін бағдарламалауды қажетсіз қиын және түсініксіз етеді деп ойлағандықтан салдық.
  7. ^ DDP енгізу, 21 наурыз 2012 ж
  8. ^ «Метеорға арналған серверлерді көрсету». Архивтелген түпнұсқа 2015 жылғы 20 наурызда. Алынған 31 қаңтар, 2015.
  9. ^ «Бір беттен тұратын қосымшаларға қарсы бірнеше беттен тұратын қосымшалар: оң, теріс жақтары, қателіктері - BLAKIT - IT шешімдері». blak-it.com. BLAKIT - IT шешімдері. 2017 жылғы 17 қазан. Алынған 19 қазан, 2017.
  10. ^ «AJAX және WebSockets көмегімен нақты уақыт режиміндегі бақылау». www.computer.org. Алынған 1 маусым, 2016.
  11. ^ «Сервер жіберген оқиғалар». W3C. 2013 жылғы 17 шілде.
  12. ^ «InnerHTML пайдалану». www.webrocketx.com. Алынған 21 қаңтар, 2016.
  13. ^ «Орналастырылмаған веб-бағдарламалар».
  14. ^ «Интерфейстің жалғыз бет манифесті». Алынған 25 сәуір, 2014.
  15. ^ «Дерби». Алынған 11 желтоқсан, 2011.
  16. ^ «Sails.js». Алынған 20 ақпан, 2013.
  17. ^ «Оқулық: ItsNat бар бір парақтық интерфейс». Алынған 13 қаңтар, 2011.
  18. ^ HTML5
  19. ^ «Пайдаланушы не көреді, шынжыр табушы не көреді». Алынған 6 қаңтар, 2014. браузер JavaScript-ті орындай алады және жылдам мазмұнын шығара алады - тексеріп шығушы жасай алмайды
  20. ^ «Ajax қосымшаларын шолуға болатын ету». Алынған 6 қаңтар, 2014. Тарихи тұрғыдан Ajax қосымшалары іздеу жүйелері үшін қиынға соқты, себебі Ajax мазмұны шығарылды
  21. ^ «AJAX-ті тексеріп шығуға ұсыныс». Google. 2009 жылғы 7 қазан. Алынған 13 шілде, 2011.
  22. ^ «(Ерекшеліктер) AJAX қосымшаларын тексеруге жарамды ету». Google. Алынған 4 наурыз, 2013.
  23. ^ «Hash URIs». W3C блогы. 2011 жылғы 12 мамыр. Алынған 13 шілде, 2011.
  24. ^ «Біздің AJAX тексеріп шығу схемасының күшін жою». Google вебмастерінің ресми блогы. Алынған 23 ақпан, 2017.
  25. ^ «ItsNat v1.3 шығарылымы туралы ескертпелер». Алынған 9 маусым, 2013.
  26. ^ https://developers.google.com/search/docs/guides/dynamic-rendering
  27. ^ а б c Холмс, Симон (2015). Mongo, Express, Angular және Node көмегімен MEAN алу. Manning басылымдары. ISBN  978-1-6172-9203-3

Сыртқы сілтемелер