龙眼什么时候成熟| 去除扁平疣用什么药膏| 白醋和陈醋有什么区别| 什么是人| 一个月不来月经是什么原因| 淡盐水有什么作用和功效| 处女膜在什么位置| 蝎子吃什么东西| 孙思邈发明了什么| 2月4号是什么星座| 竹子开花意味着什么| 08是什么生肖| 先父遗传是什么意思| 儿童肚子疼吃什么药| 美尼尔氏综合症是什么病| 冬天可以干什么| 梦遗是什么意思| 北极贝长什么样| 什么是清淡饮食| 杧果是什么| 单宁是什么| 立牌坊是什么意思| 属鼠的和什么属相不合| 四战之地的生肖是什么| 肌酸有什么用| 真菌感染脚气用什么药| 身上没力气没劲是什么原因| cafe是什么意思| 吃什么降尿酸| 命途多舛是什么意思| 鸡鸡长什么样| 右眼跳是什么意思| 舌苔白有齿痕吃什么药| 咸湿佬是什么意思| 羊水透声欠佳什么意思| 芹菜炒什么配菜好吃| 杏色配什么颜色最洋气| 阴湿是什么病| 年轻人白头发是什么原因引起的| 38岁属什么| 长期贫血对身体有什么危害| 产物是什么意思| 须眉是什么意思| 吃什么最养胃| 九品芝麻官是什么级别| 结晶高是什么原因| 奇葩是什么意思| 假酒喝了有什么症状| 双克是什么药| 例假量多是什么原因| 肌电图主要检查什么病| 微白蛋白高是什么情况| 肉是什么意思| 少一个睾丸有什么影响| 尿液泡沫多是什么原因| 小金鱼吃什么| 漫谈是什么意思| 小孩肚脐眼上面疼是什么原因| 小便少是什么原因| 皮肤瘙痒吃什么药| 半盏流年是什么意思| 五行缺水戴什么| 烧心胃酸吃什么药| 双侧基底节区腔隙灶是什么意思| 心肌是什么意思| 凤毛麟角是什么意思| 遗精是什么症状| 结售汇是什么意思| cd代表什么意思| 飞机上不能带什么| 大雄宝殿供奉的是什么佛| 得莫利是什么意思| 阴道感染用什么药| 文胸是什么| 鳄鱼为什么会流泪| 湿疹有什么忌口的食物| 女生喜欢什么姿势| 甘油三酯高吃什么食物降得快| 三月五号是什么星座| 三点水一个分读什么| 睾酮低有什么影响| 乳腺增生吃什么食物好| 北京市市长是什么级别| 绿色蛇是什么蛇| 来例假吃什么水果好| 血痣是什么原因引起的| 结婚有什么好处| 四月二十四是什么星座| 血氧低有什么症状| 吃什么可以缓解痛经| 青鸾是什么意思| 挂急诊和门诊有什么区别| 梦见男朋友是什么意思| 男生学什么技术吃香| 湖蓝色是什么颜色| 月经淋漓不尽是什么原因| 小孩出冷汗是什么原因| apm是什么| 哈喇味是什么味道| 内在美是什么意思| 脂肪瘤应该挂什么科| 内痔吃什么药| 屁股两边疼是什么原因| 新疆以前叫什么| 血干了是什么颜色| 红军为什么要长征| 女人喝什么茶叶最好| 中药和中成药有什么区别| 牙周炎挂什么科| 流感为什么晚上会比白天严重| 洋盘是什么意思| 挂急诊和门诊有什么区别| 什么叫npc| 什么牌子空调好| 121什么意思| 学位证书有什么用| 坐骨神经痛吃什么药好得快| 痛风忌口不能吃什么东西| 今天的日子适合做什么| 随诊复查是什么意思| 1964年属什么的| 肝胃不和是什么意思| 憨厚是什么意思| 胖大海配什么喝治咽炎| 地图舌吃什么药| 牙膏属于什么类商品| 公安和警察有什么区别| 假性近视是什么意思| replay是什么牌子| 射进去什么感觉| 矫正视力是指什么| m代表什么| 看病人送什么花合适| 肾虚什么意思| 为什么经常打嗝| 三伏贴什么时候贴最好| 吃什么对肺最好| 孤辰寡宿是什么意思| 孕期心情不好对胎儿有什么影响| 反映是什么意思| 难缠是什么意思| 什么水果利尿效果最好| 什么东西能补肾壮阳| 单抗是什么药| ct平扫能检查出什么| 什么是辛辣刺激性食物| 朱砂有什么功效| 86年属什么的生肖| 头发出汗多是什么原因| 木耳菜又叫什么菜| ojbk 是什么意思| 为什么不建议儿童做胃镜| 什么东西养胃又治胃病| 莲花代表什么象征意义| 梦到钓鱼是什么征兆| 红枣和什么不能一起吃| rm是什么意思| 小拇指和无名指发麻是什么原因| 金字旁和什么有关| 水肿是什么| 月亮星座是什么| 134是什么意思| 老炮儿是什么意思啊| 除了胃镜还有什么检查胃的方法吗| 十里八乡什么意思| 没经验的人开什么店好| reed是什么意思| 光敏树脂是什么材料| 腰疼吃什么药好| 亲子是什么意思| 女人吃什么排湿气最快| 加味逍遥丸和逍遥丸有什么区别| 流浪猫吃什么| 左腹下方隐痛什么原因| 虎皮鹦鹉吃什么| 空姐在飞机上干什么| 甲沟炎是什么症状| 新生儿缺氧会有什么后遗症| 他是什么意思| 美仑美奂什么意思| 骨刺是什么原因引起的| 海参什么季节吃好| 肝火旺盛吃什么食物| 宫颈筛查hpv阳性是什么意思| 小鸡吃什么| 真狗是什么意思| 疤痕痒是什么原因| 移植后宫缩是什么感觉| outlets是什么意思| 什么的去路| 情绪不稳定是什么原因| 妈妈像什么| 镁是什么| 法警是干什么的| 5.29什么星座| 总lge是什么| 什么药补血最快| 大暑什么时候| 草头是什么菜| congee是什么意思| 出生医学证明有什么用| 县副局长是什么级别| 3月23日是什么星座| 懿字五行属什么| 潜能什么意思| 氢化植物油是什么| 正佳广场有什么好玩的| 生辰八字是指什么| 备孕检查挂什么科| 反流性食管炎不能吃什么食物| 喝酒脸红是缺少什么酶| 头孢什么样子图片| 发动机抖动是什么原因| 常熟有什么好玩的地方| 祸从口出什么意思| 搬家有什么讲究| 孜然是什么| 肠痉挛吃什么药| launch什么意思| fr是什么| 吃什么补硒| 香槟是什么| 缺铁性贫血严重会导致什么后果| 娇兰属于什么档次| mid什么意思| 什么蛇没毒| 团购什么意思| psd是什么意思| 演唱会安可是什么意思| 颈椎退行性病变是什么意思| 什么血型生出o型血| 纪是什么意思| yuki是什么意思| 夏枯草有什么功效| 羊水污染是什么原因造成的| 房东是什么意思| 面粉是什么粉| 淋巴结挂什么科| 巾帼不让须眉什么意思| 10086查话费发什么短信| 黑色鸟是什么鸟| 天伦之乐是什么意思啊| 异位妊娠是什么意思| 1987年五行属什么| mmi是什么药| 惊弓之鸟告诉我们什么道理| 射精快是什么原因| 虫草花有什么功效和作用| 雪青色是什么颜色| 明前茶什么意思| 超现实主义是什么意思| 全血铅测定是什么意思| 备孕需要检查什么| 天井是什么意思| 九月八号什么星座| 报工伤需要什么材料| 殁送是什么意思| 小肚子大是什么原因| 安是什么生肖| 南瓜子吃多了有什么副作用| 莴苣是什么| 什么泡水喝治口臭| 叶黄素对眼睛有什么功效| 为什么会中暑| 百度Jump to content

广州基层学习十八届六中全会精神 理论宣传变生动说唱

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Azarboon (talk | contribs) at 05:32, 22 January 2025. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
百度 而在已占领地域建立控制权、维持公共秩序、修复必要的基础设施都属于关键性问题,可能会影响作战。

A single-page application (SPA) is a web application or website that interacts with the user by dynamically rewriting the current web page with new data from the web server, instead of the default method of loading entire new pages. The goal is faster transitions that make the website feel more like a native app.

In a SPA, a page refresh never occurs; instead, all necessary HTML, JavaScript, and CSS code is either retrieved by the browser with a single page load,[1] or the appropriate resources are dynamically loaded and added to the page as necessary, usually in response to user actions.

History

The origins of the term single-page application are unclear, though the concept was discussed at least as early as 2003 by technology evangelists from Netscape.[2] Stuart Morris, a programming student at Cardiff University, Wales, wrote the self-contained website at slashdotslash.com with the same goals and functions in April 2002,[3] and later the same year Lucas Birdeau, Kevin Hakman, Michael Peachey and Clifford Yeh described a single-page application implementation in US patent 8,136,109.[4] Earlier forms were called rich web applications.

JavaScript can be used in a web browser to display the user interface (UI), run application logic, and communicate with a web server. Mature free libraries are available that support the building of a SPA, reducing the amount of JavaScript code developers have to write.

Technical approaches

There are various techniques available that enable the browser to retain a single page even when the application requires server communication.

Document hashes

HTML authors can leverage element IDs to show or hide different sections of the HTML document. Then, using CSS, authors can use the :target pseudo-class selector to only show the section of the page which the browser navigated to.

JavaScript frameworks

Web browser JavaScript frameworks and libraries, such as AngularJS, Ember.js, ExtJS, Knockout.js, Meteor.js, React, Vue.js, and Svelte have adopted SPA principles. Aside from ExtJS, all of these are free.

  • AngularJS is a fully client-side framework. AngularJS's templating is based on bidirectional UI data binding. Data-binding is an automatic way of updating the view whenever the model changes, as well as updating the model whenever the view changes. The HTML template is compiled in the browser. The compilation step creates pure HTML, which the browser re-renders into the live view. The step is repeated for subsequent page views. In traditional server-side HTML programming, concepts such as controller and model interact within a server process to produce new HTML views. In the AngularJS framework, the controller and model states are maintained within the client browser. Therefore, new pages are capable of being generated without any interaction with a server.
  • Angular 2+ is a SPA Framework developed by Google after AngularJS. It is several steps ahead of Angular and there is a strong community of developers using this framework. The framework is updated twice every year. The current version is Angular 18.0.3 (As of June 2024) and new features and fixes are frequently added in this framework.
  • Ember.js is a client-side JavaScript web application framework based on the model–view–controller (MVC) software architectural pattern. It allows developers to create scalable single-page applications by incorporating common idioms and best practices into a framework that provides a rich object model, declarative two-way data binding, computed properties, automatically updating templates powered by Handlebars.js, and a router for managing application state.
  • ExtJS is also a client side framework that allows creating MVC applications. It has its own event system, window and layout management, state management (stores) and various UI components (grids, dialog windows, form elements etc.). It has its own class system with either dynamic or static loader. The application built with ExtJS can either exist on its own (with state in the browser) or with the server (e.g. with REST API that is used to fill its internal stores). ExtJS has only built in capabilities to use localStorage so larger applications need a server to store state.
  • Knockout.js is a client side framework which uses templates based on the Model-View-ViewModel pattern.
  • Meteor.js is a full-stack (client-server) JavaScript framework designed exclusively for SPAs. It features simpler data binding than Angular, Ember or ReactJS,[5] and uses the Distributed Data Protocol[6] and a publish–subscribe pattern to automatically propagate data changes to clients in real-time without requiring the developer to write any synchronization code. Full stack reactivity ensures that all layers, from the database to the templates, update themselves automatically when necessary. Ecosystem packages such as Server Side Rendering[7] address the problem of search engine optimization.
  • React is a JavaScript library for building user interfaces. It is maintained by Facebook, Instagram and a community of individual developers and corporations. React uses a syntax extension for JavaScript, named JSX, which is a mix of JS and HTML (a subset of HTML). Several companies use React with Redux (JavaScript library) which adds state management capabilities, which (with several other libraries) lets developers create complex applications.[8]
  • Vue.js is a JavaScript framework for building user interfaces. Vue developers also provide Pinia for state management.
  • Svelte is a framework for building user interfaces that compiles Svelte code to JavaScript DOM (Document Object Model) manipulations, avoiding the need to bundle a framework to the client, and allowing for simpler application development syntax.

Capabilities and Trade-offs in Modern Frameworks

JavaScript-based web application frameworks, such as React and Vue, provide extensive capabilities but come with associated trade-offs. These frameworks often extend or enhance features available through native web technologies, such as routing, component-based development, and state management. While native web standards, including Web Components, modern JavaScript APIs like Fetch and ES Modules, and browser capabilities like Shadow DOM, have advanced significantly, frameworks remain widely used for their ability to enhance developer productivity, offer structured patterns for large-scale applications, simplify handling edge cases, and provide tools for performance optimization. [9][10][11]

Frameworks can introduce abstraction layers that may contribute to performance overhead, larger bundle sizes, and increased complexity. Modern frameworks, such as React 18 and Vue 3, address these challenges with features like concurrent rendering, tree-shaking, and selective hydration. While these advancements improve rendering efficiency and resource management, their benefits depend on the specific application and implementation context. Lightweight frameworks, such as Svelte and Preact, take different architectural approaches, with Svelte eliminating the virtual DOM entirely in favor of compiling components to efficient JavaScript code, and Preact offering a minimal, compatible alternative to React. Framework choice depends on an application’s requirements, including the team’s expertise, performance goals, and development priorities. [9][10][11]

A newer category of web frameworks, including enhance.dev, Astro, and Fresh, leverages native web standards while minimizing abstractions and development tooling. [12][13][14] These solutions emphasize progressive enhancement, server-side rendering, and optimizing performance. Astro renders static HTML by default while hydrating only interactive parts. Fresh focuses on server-side rendering with zero runtime overhead. Enhance.dev prioritizes progressive enhancement patterns using Web Components. While these tools reduce reliance on client-side JavaScript by shifting logic to build-time or server-side execution, they still use JavaScript where necessary for interactivity. This approach makes them particularly suitable for performance-critical and content-focused applications. [9][10][11]

The following frameworks utilize WebAssembly or can build single-page applications (SPAs) with WebAssembly as a core technology or support mechanism. These frameworks enable high-performance and interactive client-side development, extending the SPA paradigm across languages and ecosystems.

  • Avalonia is primarily a cross-platform desktop UI framework, but experimental support for WebAssembly allows it to be used for SPA development. It has an XAML-based UI design and native-style application features.
  • Blazor WebAssembly is a .NET-based framework that allows developers to build SPAs using C# and Razor syntax. It runs .NET code in the browser via WebAssembly, enabling a full-stack .NET development experience without relying on JavaScript.
  • Flutter on the Web extends Flutter’s cross-platform development capabilities to web-based SPAs. Using Dart and its Skia graphics engine, Flutter allows developers to create visually rich SPAs that run in the browser.
  • OpenSilver is another open-source reimplementation of Silverlight but targeted toward SPAs developed with C# and XAML. It uses WebAssembly to run the .NET code in the browser, so it's fitted for highly interactive client-side applications.
  • Uno Platform is a cross-platform framework that supports SPA development through WebAssembly. It allows developers to use XAML and C# to build applications that run on the Web, mobile, and desktop platforms, with UI components rendered directly in the browser.

Ajax

As of 2006, the most prominent technique used was Ajax.[1] Ajax involves using asynchronous requests to a server for XML or JSON data, such as with JavaScript's XMLHttpRequest or more modern fetch() (since 2017), or the deprecated ActiveX Object. In contrast to the declarative approach of most SPA frameworks, with Ajax the website directly uses JavaScript or a JavaScript library such as jQuery to manipulate the DOM and edit HTML elements. Ajax has further been popularized by libraries like jQuery, which provides a simpler syntax and normalizes Ajax behavior across different browsers which historically had varying behavior.

WebSockets

WebSockets are a bidirectional real-time client-server communication technology that are part of the HTML specification. For real-time communication, their use is superior to Ajax in terms of performance[15] and simplicity.

Server-sent events

Server-sent events (SSEs) is a technique whereby servers can initiate data transmission to browser clients. Once an initial connection has been established, an event stream remains open until closed by the client. SSEs are sent over traditional HTTP and have a variety of features that WebSockets lack by design such as automatic reconnection, event IDs, and the ability to send arbitrary events.[16]

Browser plugins

Although this method is outdated, asynchronous calls to the server may also be achieved using browser plug-in technologies such as Silverlight, Flash, or Java applets.

Data transport (XML, JSON and Ajax)

Requests to the server typically result in either raw data (e.g., XML or JSON), or new HTML being returned. In the case where HTML is returned by the server, JavaScript on the client updates a partial area of the DOM (Document Object Model). When raw data is returned, often a client-side JavaScript XML / (XSL) process (and in the case of JSON a template) is used to translate the raw data into HTML, which is then used to update a partial area of the DOM.

Server architecture

Thin server architecture

A SPA moves logic from the server to the client, with the role of the web server evolving into a pure data API or web service. This architectural shift has, in some circles, been coined "Thin Server Architecture" to highlight that complexity has been moved from the server to the client, with the argument that this ultimately reduces overall complexity of the system.

Thick stateful server architecture

The server keeps the necessary state in memory of the client state of the page. In this way, when any request hits the server (usually user actions), the server sends the appropriate HTML and/or JavaScript with the concrete changes to bring the client to the new desired state (usually adding/deleting/updating a part of the client DOM). At the same time, the state in server is updated. Most of the logic is executed on the server, and HTML is usually also rendered on the server. In some ways, the server simulates a web browser, receiving events and performing delta changes in server state which are automatically propagated to client.

This approach needs more server memory and server processing, but the advantage is a simplified development model because a) the application is usually fully coded in the server, and b) data and UI state in the server are shared in the same memory space with no need for custom client/server communication bridges.

Thick stateless server architecture

This is a variant of the stateful server approach. The client page sends data representing its current state to the server, usually through Ajax requests. Using this data, the server is able to reconstruct the client state of the part of the page which needs to be modified and can generate the necessary data or code (for instance, as JSON or JavaScript), which is returned to the client to bring it to a new state, usually modifying the page DOM tree according to the client action that motivated the request.

This approach requires that more data be sent to the server and may require more computational resources per request to partially or fully reconstruct the client page state in the server. At the same time, this approach is more easily scalable because there is no per-client page data kept in the server and, therefore, Ajax requests can be dispatched to different server nodes with no need for session data sharing or server affinity.

Running locally

Some SPAs may be executed from a local file using the file URI scheme. This gives users the ability to download the SPA from a server and run the file from a local storage device, without depending on server connectivity. If such a SPA wants to store and update data, it must use browser-based Web Storage. These applications benefit from advances available with HTML.[17]

Challenges with the SPA model

Because the SPA is an evolution away from the stateless page-redraw model that browsers were originally designed for, some new challenges have emerged. Possible solutions (of varying complexity, comprehensiveness, and author control) include:[18]

  • client-side JavaScript libraries
  • server-side web frameworks that specialize in the SPA model[19][20][21]
  • the evolution of browsers and the HTML specification,[22] designed for the SPA model

Search-engine optimization

Because of the lack of JavaScript execution on crawlers of some popular Web search engines,[23] SEO (search engine optimization) has historically presented a problem for public facing websites wishing to adopt the SPA model.[24]

Between 2009 and 2015, Google Webmaster Central proposed and then recommended an "AJAX crawling scheme"[25][26] using an initial exclamation mark in fragment identifiers for stateful AJAX pages (#!). Special behavior must be implemented by the SPA site to allow extraction of relevant metadata by the search engine's crawler. For search engines that do not support this URL hash scheme, the hashed URLs of the SPA remain invisible. These "hash-bang" URIs have been considered problematic by a number of writers including Jeni Tennison at the W3C because they make pages inaccessible to those who do not have JavaScript activated in their browser. They also break HTTP referer headers as browsers are not allowed to send the fragment identifier in the Referer header.[27] In 2015, Google deprecated their hash-bang AJAX crawling proposal.[28]

Alternatively, applications may render the first page load on the server and subsequent page updates on the client. This is traditionally difficult, because the rendering code might need to be written in a different language or framework on the server and in the client. Using logic-less templates, cross-compiling from one language to another, or using the same language on the server and the client may help to increase the amount of code that can be shared.

In 2018, Google introduced dynamic rendering as another option for sites wishing to offer crawlers a non-JavaScript heavy version of a page for indexing purposes.[29] Dynamic rendering switches between a version of a page that is rendered client-side and a pre-rendered version for specific user agents. This approach involves your web server detecting crawlers (via the user agent) and routing them to a renderer, from which they are then served a simpler version of HTML content. As of 2024, Google no longer recommends dynamic rendering,[30] suggesting "server-side rendering, static rendering, or hydration" instead.

Because SEO compatibility is not trivial in SPAs, SPAs are commonly not used in a context where search engine indexing is either a requirement, or desirable. Use cases include applications that surface private data hidden behind an authentication system. In the cases where these applications are consumer products, often a classic "page redraw" model is used for the applications landing page and marketing site, which provides enough meta data for the application to appear as a hit in a search engine query. Blogs, support forums, and other traditional page redraw artifacts often sit around the SPA that can seed search engines with relevant terms.

As of 2021 and Google specifically, SEO compatibility for a plain SPA is straightforward and requires just a few simple conditions to be met.[31]

One way to increase the amount of code that can be shared between servers and clients is to use a logic-less template language like Mustache or Handlebars. Such templates can be rendered from different host languages, such as Ruby on the server and JavaScript in the client. However, merely sharing templates typically requires duplication of business logic used to choose the correct templates and populate them with data. Rendering from templates may have negative performance effects when only updating a small portion of the page—such as the value of a text input within a large template. Replacing an entire template might also disturb a user's selection or cursor position, where updating only the changed value might not. To avoid these problems, applications can use UI data bindings or granular DOM manipulation to only update the appropriate parts of the page instead of re-rendering entire templates.[32]

Browser history

With a SPA being, by definition, "a single page", the model breaks the browser's design for page history navigation using the "forward" or "back" buttons. This presents a usability impediment when a user presses the back button, expecting the previous screen state within the SPA, but instead, the application's single page unloads and the previous page in the browser's history is presented.

The traditional solution for SPAs has been to change the browser URL's hash fragment identifier in accord with the current screen state. This can be achieved with JavaScript, and causes URL history events to be built up within the browser. As long as the SPA is capable of resurrecting the same screen state from information contained within the URL hash, the expected back-button behavior is retained.

To further address this issue, the HTML specification has introduced pushState and replaceState providing programmatic access to the actual URL and browser history.

Analytics

Analytics tools such as Google Analytics rely heavily upon entire new pages loading in the browser, initiated by a new page load. SPAs do not work this way.

After the first page load, all subsequent page and content changes are handled internally by the application, which should simply call a function to update the analytics package. Failing to call such a function, the browser never triggers a new page load, nothing gets added to the browser history, and the analytics package has no idea who is doing what on the site.

Security scanning

Similarly to the problems encountered with search engine crawlers, DAST tools may struggle with these JavaScript-rich applications. Problems can include the lack of hypertext links, memory usage concerns and resources loaded by the SPA typically being made available by an Application Programming Interface or API. Single-page applications are still subject to the same security risks as traditional web pages such as Cross-Site Scripting (XSS), but also a host of other unique vulnerabilities such as data exposure via API and client-side logic and client-side enforcement of server-side security.[33] In order to effectively scan a single-page application, a DAST scanner must be able to navigate the client-side application in a reliable and repeatable manner to allow discovery of all areas of the application and interception of all requests that the application sends to remote servers (e.g. API requests).

Adding page loads to a SPA

It is possible to add page load events to a SPA using the HTML History API; this will help integrate analytics. The difficulty comes in managing this and ensuring that everything is being tracked accurately – this involves checking for missing reports and double entries. Some frameworks provide free analytics integrations addressing most of the major analytics providers. Developers can integrate them into the application and make sure that everything is working correctly, but there is no need to do everything from scratch.[32]

Speeding up the page load

There are some ways of speeding up the initial load of a SPA, such as selective prerendering of the SPA landing/index page, caching and various code splitting techniques including lazy-loading modules when needed. But it's not possible to get away from the fact that it needs to download the framework, at least some of the application code; and will hit an API for data if the page is dynamic.[32] This is a "pay me now, or pay me later" trade-off scenario. The question of performance and wait-times remains a decision that the developer must make.

Page lifecycle

A SPA is fully loaded in the initial page load and then page regions are replaced or updated with new page fragments loaded from the server on demand. To avoid excessive downloading of unused features, a SPA will often progressively download more features as they become required, either small fragments of the page, or complete screen modules.

In this way an analogy exists between "states" in a SPA and "pages" in a traditional website. Because "state navigation" in the same page is analogous to page navigation, in theory, any page-based web site could be converted to single-page replacing in the same page only the changed parts.

The SPA approach on the web is similar to the single-document interface (SDI) presentation technique popular in native desktop applications.

See also

References

  1. ^ a b Flanagan, David, "JavaScript - The Definitive Guide", 5th ed., O'Reilly, Sebastopol, CA, 2006, p.497
  2. ^ "Inner-Browsing: Extending Web Browsing the Navigation Paradigm". Archived from the original on August 10, 2003. Retrieved May 16, 2003.
  3. ^ "Slashdotslash.com: A self contained website using DHTML". Retrieved July 6, 2012.
  4. ^ "US patent 8,136,109". Retrieved April 12, 2002.
  5. ^ "Meteor Blaze". GitHub. 6 May 2022. Blaze is a powerful library for creating user interfaces by writing reactive HTML templates.
  6. ^ Introducing DDP, March 21, 2012
  7. ^ "Server Side Rendering for Meteor". Archived from the original on March 20, 2015. Retrieved January 31, 2015.
  8. ^ "Single-page applications vs. multiple-page applications: pros, cons, pitfalls - BLAKIT - IT Solutions". blak-it.com. BLAKIT - IT Solutions. October 17, 2017. Retrieved October 19, 2017.
  9. ^ a b c JavaScript Frameworks for Modern Web Development: The Essential Frameworks, Libraries, and Tools to Learn Right Now. ISBN 978-1484249949.
  10. ^ a b c Building Native Web Components: Front-End Development with Polymer and Vue.js. ISBN 978-1484259047.
  11. ^ a b c Hands-On JavaScript High Performance: Build faster web apps using Node.js, Svelte.js, and WebAssembly. ISBN 978-1838821098.
  12. ^ "Enhance".{{cite web}}: CS1 maint: url-status (link)
  13. ^ "Astro framework".{{cite web}}: CS1 maint: url-status (link)
  14. ^ "Fresh".{{cite web}}: CS1 maint: url-status (link)
  15. ^ "Real-Time Monitoring using AJAX and WebSockets". www.computer.org. Retrieved June 1, 2016.
  16. ^ "Server-Sent Events". W3C. July 17, 2013.
  17. ^ "Unhosted web apps".
  18. ^ "The Single Page Interface Manifesto". Retrieved April 25, 2014.
  19. ^ "Derby". Retrieved December 11, 2011.
  20. ^ "Sails.js". GitHub. Retrieved February 20, 2013.
  21. ^ "Tutorial: Single Page Interface Web Site With ItsNat". Retrieved January 13, 2011.
  22. ^ HTML5
  23. ^ "What the user sees, what the crawler sees". Retrieved January 6, 2014. the browser can execute JavaScript and produce content on the fly - the crawler cannot
  24. ^ "Making Ajax Applications Crawlable". Retrieved January 6, 2014. Historically, Ajax applications have been difficult for search engines to process because Ajax content is produced
  25. ^ "Proposal for making AJAX crawlable". Google. October 7, 2009. Retrieved July 13, 2011.
  26. ^ "(Specifications) Making AJAX Applications Crawlable". Google Inc. Retrieved March 4, 2013.
  27. ^ "Hash URIs". W3C Blog. May 12, 2011. Retrieved July 13, 2011.
  28. ^ "Deprecating our AJAX crawling scheme". Official Google Webmaster Central Blog. Retrieved February 23, 2017.
  29. ^ "Implement dynamic rendering". Google Search Central. October 13, 2018. Retrieved January 7, 2021.
  30. ^ "Dynamic rendering as a workaround". Google Search Central. March 18, 2024. Retrieved July 2, 2024.
  31. ^ "Fix a single-page app for Google Search". Google Codelabs. Retrieved 2025-08-07.
  32. ^ a b c Holmes, Simone (2015). Getting MEAN with Mongo, Express, Angular, and Node. Manning Publications. ISBN 978-1-6172-9203-3
  33. ^ "Single Page Applications (SPA)". Appcheck Ltd.
榴莲有什么好处 对方忙线中什么意思 结石是什么原因造成的 30年的婚姻是什么婚 低血糖有什么危险
放屁是什么意思 胃烧灼感是什么原因引起的 双离合什么意思 梅毒是什么症状图片 中午吃什么饭
钙果是什么水果 失眠看什么科最好 喜金是什么意思 古代女子成年行什么礼 先天性心脏病有什么症状
猪八戒叫什么名字 属兔带什么招财 太妹是什么意思 啮齿是什么意思 晏字五行属什么
什么争鸣成语hcv9jop5ns9r.cn 经期洗头有什么危害hcv7jop9ns1r.cn 贫血喝什么口服液hcv9jop7ns4r.cn tg是什么意思hcv9jop0ns0r.cn dvt是什么意思hcv9jop1ns4r.cn
甲硝唑是什么药hcv8jop7ns5r.cn 合胞病毒吃什么药hcv8jop4ns9r.cn 黑曜石五行属什么hcv8jop4ns3r.cn 什么洗面奶祛痘hcv8jop6ns4r.cn 口腔医学和口腔医学技术有什么区别bfb118.com
百白破是预防什么的hcv8jop0ns3r.cn 穷极一生是什么意思hcv7jop5ns1r.cn 入驻是什么意思jiuxinfghf.com 碘吃多了有什么危害hcv8jop5ns8r.cn 女生腋毛多是什么原因hcv8jop1ns8r.cn
结婚14年是什么婚hcv8jop1ns1r.cn 薛之谦的真名叫什么hcv8jop2ns3r.cn 鹦鹉鱼吃什么beikeqingting.com 疣体是什么病hcv8jop1ns8r.cn 乳腺导管扩张是什么意思严重吗hcv9jop1ns0r.cn
百度