{"id":102272,"date":"2021-11-12T09:36:39","date_gmt":"2021-11-12T07:36:39","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/web-frejmvork-pusa-perenosyashhij-logiku-javascript-frontenda-na-storonu-servera"},"modified":"2021-11-12T09:36:39","modified_gmt":"2021-11-12T07:36:39","slug":"web-frejmvork-pusa-perenosyashhij-logiku-javascript-frontenda-na-storonu-servera","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/news\/web-frejmvork-pusa-perenosyashhij-logiku-javascript-frontenda-na-storonu-servera","title":{"rendered":"Web-rammev\u00e6rk Pusa, der flytter logikken fra JavaScript-frontend til serversiden","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Web-frameworket Pusa er blevet offentliggjort med en implementering af konceptet, der flytter den frontend-logik, der udf\u00f8res i browseren ved hj\u00e6lp af JavaScript, til backend-siden \u2014 browserstyring og DOM-elementer, samt forretningslogik udf\u00f8res p\u00e5 backend. JavaScript-koden, der k\u00f8res i browseren, erstattes af et universelt lager, der kalder de h\u00e5ndtere, der findes p\u00e5 backend-siden. Der er ingen behov for udvikling med JavaScript til frontenden. Den referencerimplementering af Pusa er skrevet p\u00e5 PHP og distribueres under GPLv3-licensen. Udover PHP kan teknologien implementeres i ethvert andet sprog, herunder JavaScript\/Node.js, Java, Python, Go og Ruby.      <\/p>\n<p>Pusa definerer en kommunikationsprotokol baseret p\u00e5 et minimalistisk s\u00e6t kommandoer. N\u00e5r siden indl\u00e6ses, henter browseren det grundl\u00e6ggende DOM-indhold og JavaScript-kernen Pusa-Front. Pusa-Front sender via Ajax-anmodninger browserbegivenheder (s\u00e5som klik, blur, focus og keypress) og anmodningsparametre (det element, der udl\u00f8ste begivenheden, dets attributter, URL osv.) til serverbehandleren Pusa-Back. Baseret p\u00e5 de modtagne data bestemmer Pusa-Back controlleren, udf\u00f8rer nyttelasten og danner et svar s\u00e6t kommandoer. N\u00e5r Pusa-Front modtager svaret p\u00e5 anmodningen, udf\u00f8rer den kommandoerne, hvilket \u00e6ndrer DOM-indholdet og browserens milj\u00f8.       <\/p>\n<p>Frontendens tilstand dannes, men kontrolleres ikke af backend, hvilket g\u00f8r udviklingen for Pusa lignende koden til et grafikkort eller Canvas, hvor resultatet af udf\u00f8relsen ikke kontrolleres af udvikleren. For at skabe interaktive applikationer baseret p\u00e5 Canvas og onmousemove er det muligt at indl\u00e6se og bruge yderligere JavaScript-scripts p\u00e5 klientens side. Ulemperne ved metoden inkluderer ogs\u00e5 overf\u00f8rsel af en del af belastningen fra frontend til backend og en stigning i hyppigheden af datakommunikation. <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/da\/server\/dts-prohoster\/\"   title=\"serveren\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"3024\">serveren<\/a>.    <\/p>\n<p>Blandt fordelene er der: ingen n\u00f8dvendighed for frontend JavaScript-udviklere, stabil og kompakt klientkode (11kb), hovedkoden er utilg\u00e6ngelig fra frontend, ingen behov for at serialisere REST og midler som gRPC, og der undg\u00e5s problemer med rutejustering af anmodninger mellem frontend og backend.<br \/>\n<br \/>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=56140\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d web-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a Pusa \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438, \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044f\u0449\u0435\u0439 \u043b\u043e\u0433\u0438\u043a\u0443 \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u0443\u044e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 JavaScript, \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0431\u044d\u043a\u0435\u043d\u0434\u0430 &#8212; \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c \u0438 DOM \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0438\u0437\u043d\u0435\u0441\u043b\u043e\u0433\u0438\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u0431\u044d\u043a\u0435\u043d\u0434\u0435. \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 JavaScript \u043a\u043e\u0434 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0443, \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0435\u0441\u044f \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0431\u044d\u043a\u0435\u043d\u0434\u0430. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c JavaScript \u0434\u043b\u044f \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442. \u042d\u0442\u0430\u043b\u043e\u043d\u043d\u0430\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-102272","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d web-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a Pusa \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438, \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044f\u0449\u0435\u0439 \u043b\u043e\u0433\u0438\u043a\u0443 \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u0443\u044e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 JavaScript, \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0431\u044d\u043a\u0435\u043d\u0434\u0430 - \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c \u0438 DOM \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0438\u0437\u043d\u0435\u0441\u043b\u043e\u0433\u0438\u043a\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/da\/blog\/news\/web-frejmvork-pusa-perenosyashhij-logiku-javascript-frontenda-na-storonu-servera\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Web-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a Pusa, \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044f\u0449\u0438\u0439 \u043b\u043e\u0433\u0438\u043a\u0443 JavaScript-\u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u0430 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d web-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a Pusa \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438, \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044f\u0449\u0435\u0439 \u043b\u043e\u0433\u0438\u043a\u0443 \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u0443\u044e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 JavaScript, \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0431\u044d\u043a\u0435\u043d\u0434\u0430 - \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c \u0438 DOM \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0438\u0437\u043d\u0435\u0441\u043b\u043e\u0433\u0438\u043a\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/news\/web-frejmvork-pusa-perenosyashhij-logiku-javascript-frontenda-na-storonu-servera\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2021-11-12T07:36:39+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2021-11-12T07:36:39+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Webframeworket Pusa, der flytter JavaScript-frontendl\u00f8sningen til serversiden | ProHoster","description":"Webframeworket Pusa er offentliggjort med en implementering af et koncept, der flytter frontend-logik, der udf\u00f8res i browseren ved hj\u00e6lp af JavaScript, til backend-siden - styring af browseren og DOM-elementer samt forretningslogik.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/news\/web-frejmvork-pusa-perenosyashhij-logiku-javascript-frontenda-na-storonu-servera","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Web-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a Pusa, \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044f\u0449\u0438\u0439 \u043b\u043e\u0433\u0438\u043a\u0443 JavaScript-\u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u0430 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 | ProHoster","og:description":"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d web-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a Pusa \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438, \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044f\u0449\u0435\u0439 \u043b\u043e\u0433\u0438\u043a\u0443 \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u0443\u044e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 JavaScript, \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0431\u044d\u043a\u0435\u043d\u0434\u0430 - \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c \u0438 DOM \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0438\u0437\u043d\u0435\u0441\u043b\u043e\u0433\u0438\u043a\u0430.","og:url":"https:\/\/prohoster.info\/da\/blog\/news\/web-frejmvork-pusa-perenosyashhij-logiku-javascript-frontenda-na-storonu-servera","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2021-11-12T07:36:39+00:00","article:modified_time":"2021-11-12T07:36:39+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"102272","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-11-12 07:37:12","updated":"2026-02-09 21:46:41","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/102272","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=102272"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/102272\/revisions"}],"predecessor-version":[{"id":160305,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/102272\/revisions\/160305"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=102272"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=102272"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=102272"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}