首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于现代浏览器的 back-and-forward 缓存机制

如果单击浏览器的后退按钮不是应用程序的后退按钮,应用程序也会将我们返回到 hero list. Angular 应用程序导航会像普通 Web 导航一样更新浏览器历史记录。...无论是在同一个站点内进行跳转,还是跨域跳转,浏览器都会将页面冻结。 这包括拍摄页面快照以及其他元数据。...此外,该页面上的所有工作,包括任何延迟的任务, setTimeout 都将停止,直到通过 bfcache 再次到达该页面时才会恢复。...当用户使用后退或前进按钮导航回到堆栈中的某个项目时,浏览器会将它从 cache 中取下来,并呈现给用户刷新内容。 这包括所有可能处于变化中的输入元素状态。 换句话说,这是一种有状态浏览。...然而,它对于延迟加载的 DOM 元素和内容繁多的大型文档也很棘手。 当然,导航之前页面的冻结状态将有助于所有 SPA 恢复上次滚动的位置。

2.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

Angular的12个经典问题,看看你能答对几个?(文末附带Angular测试)

它是如何在Angular 2中工作的? Angular 2不具有双向digest cycle,这是与Angular 1不同的。...如何在Angular 2应用程序中使用codelyzer? 所有企业应用程序都会遵循一组编码惯例和准则,以更好的方式维护代码。...什么是延迟加载?如何在Angular 2中启用延迟加载? 大多数企业应用程序包含用各式各样的用于特定业务案例的模块。捆绑整个应用程序代码并完成加载,会在初始调用时,产生巨大的性能开销。...延迟加载使我们只加载用户正在交互的模块,而其余的模块会在运行时按需加载。 延迟加载通过将代码拆分成多个包并以按需加载的方式,来加速应用程序初始加载过程。...如果应用程序较大时,我会考虑延迟加载不是完全捆绑的应用程序

17.3K80

Angular Provider 作用域

Services 是每个 Angular 应用程序的基本块之一。Service 是一个普通的 TypeScript 类,它也可以没有使用 @Injectable 装饰器。...6 之后,我们也可以利用 @Injectable 的元数据来配置服务类,: import { Injectable } from '@angular/core'; @Injectable({...当你注册根级别的服务时,Angular 会创建一个单独的共享服务实例。如果在 @Injectable 元数据中注册服务,Angular 会在构建阶段自动剔除无用的服务,进而优化我们的应用程序。...因此当我们在跟模块中配置某个服务后,这个服务将在整个应用程序中可用。需要注意的是在非懒加载的特性模块中,如果我们也注册了同一个服务。在根模块和特性模块中是使用同一个服务实例,即服务是单例的。...实例,不会使用全局的 UserService 实例。

1.8K20

【笔记】AngularJs学习笔记【实践回顾与知识点归纳】

是一种“脚本跨应用缓存”,即当用户有多个使用angularjs的应用时,ng只下载一次,不会再次加载CDN。)...(2)使用ng-app告知angular管理那一部分的DOM; 注释:如果在现有的一个应用中,希望使某部分用angularjs来管理,就在该部分的元素上加上ng-app,<...; angualr加载到页面,等待页面完全加载完成,然后寻找ng-app定义模板的边界; angular经过模板寻找标识符和捆绑,监听器和DOM操作完成了注册。...如此下来,用angular结构化应用,将应用程序的模板和填充它们的数据分离啦爽吧~ 这样一来,模板可缓存,在第一次加载后只有新数据加载到浏览器,提升了浏览器的性能。...安杰只做到了前两部,波登做到了,这就是波登最终活下来的原因吧。

19630

何在 ASP.NET MVC 中集成 AngularJS(1)

由于 Angular 视图是 HTML 文件, Angular 控制器是 JavaScript 文件,从 Views 文件夹到浏览器,ASP.NET MVC 必须被配置为允许 HTML 文件和 JavaScript...> 当视图加载时,索引 Angular 视图将会通过 ng-init 指令来执行索引控制器的初始化功能。...你当然会遇到这个错误,因为/View/Customers/CustomerInquiry的路由是个 Angular 路由,不是 MVC 路由。MVC 并不知道这个路由。...当示例应用程序启动时,该应用程序将会预加载应用程序的核心控制器和服务。...如前所述,此应用程序具有三个功能模块:基本的关于、联系我们和主页的模块、一个客户模块和产品模块。 由于此应用程序可随时间增长,我希望该在应用程序的配置和引导阶段中,预加载所有的功能模块。

7.5K60

【笔记】AngularJs学习笔记【实践回顾与知识点归纳】

是一种“脚本跨应用缓存”,即当用户有多个使用angularjs的应用时,ng只下载一次,不会再次加载CDN。)...(2)使用ng-app告知angular管理那一部分的DOM; 注释:如果在现有的一个应用中,希望使某部分用angularjs来管理,就在该部分的元素上加上ng-app,<...; angualr加载到页面,等待页面完全加载完成,然后寻找ng-app定义模板的边界; angular经过模板寻找标识符和捆绑,监听器和DOM操作完成了注册。...如此下来,用angular结构化应用,将应用程序的模板和填充它们的数据分离啦爽吧~ 这样一来,模板可缓存,在第一次加载后只有新数据加载到浏览器,提升了浏览器的性能。...安杰只做到了前两部,波登做到了,这就是波登最终活下来的原因吧。

23440

Angular 应用里的摇树优化 - tree shaking

为什么过去版本的 Angular 中,服务已经不能被摇树优化?这其实又回到了我们如何在 Angular 的早期版本中注册 Service 的问题。...让我们看一个示例,说明我们如何在以前的 Angular 版本中注册一个用于依赖注入的服务。...有了这个属性,我们可以告诉 Angular 将我们的服务注册到哪个模块,不必导入模块并将其注册到 NgModule 的提供者。...,我们有三个组件; 两个是延迟加载的模块,一个是我们的着陆主页组件。...即使没有组件使用它,import 语句也会导致构建系统包含并加载此代码。 在这三个服务之间,我们可以看到摇树系统如何在我们的应用程序中包含或删除代码的特征。

7.6K20

Angular和Vue.js 深度对比

跨浏览器兼容 Angular 的一个有趣功能是,框架中编写的应用程序多个浏览器都能运行良好。Angular 可以自动处理每个浏览器所需的代码。 5....Deep Linking 由于 Angular 主要用于制作单页应用程序,因此必须利用 Deep Linking 功能才能在同一页面上加载子模板。...Vue 则更加宽泛,Vue 为创建应用程序提供了模块化,灵活的解决方案。 很多时候,Vue 被认为是一个库不是框架。默认情况下,Vue 包含路由器,HTTP 请求服务等。...何时选择 Angular? 如果你需要构建大型复杂的应用程序,那么应该选择 Angular,因为 Angular 为客户端应用程序开发提供了一个完整全面的解决方案。...对于开发人员创建具有多个组件和复杂需求的 Web 应用程序Angular 也同样适用。当你选择Angular 时,本地开发人员会发现更容易理解应用程序功能和编码结构。

5.3K30

Angular和Vue.js 深度对比

跨浏览器兼容 Angular 的一个有趣功能是,框架中编写的应用程序多个浏览器都能运行良好。Angular 可以自动处理每个浏览器所需的代码。 5....Deep Linking 由于 Angular 主要用于制作单页应用程序,因此必须利用 Deep Linking 功能才能在同一页面上加载子模板。...Vue 则更加宽泛,Vue 为创建应用程序提供了模块化,灵活的解决方案。 很多时候,Vue 被认为是一个库不是框架。默认情况下,Vue 包含路由器,HTTP 请求服务等。...何时选择 Angular? 如果你需要构建大型复杂的应用程序,那么应该选择 Angular,因为 Angular 为客户端应用程序开发提供了一个完整全面的解决方案。...对于开发人员创建具有多个组件和复杂需求的 Web 应用程序Angular 也同样适用。当你选择Angular 时,本地开发人员会发现更容易理解应用程序功能和编码结构。

3.7K10

构建具有用户身份认证的 Ionic 应用

Cordova 和 PhoneGap 允许你使用一套代码开发多个平台的应用 (比如 Android 和 iOS) 。除此之外,应用程序和原生程序相差无尽并且和原生体验一样好。...你可以使用 Chrome 的设备模式查看应用程序在 iPhone 6 中的效果。 ? 使用 Ionic serve 命令的特点是它会在浏览器中显示编译错误,不是(有时会隐藏)在开发控制台。...另外,关于如何在后端的 Auth 服务中验证用户身份的文档也不多。...app 加载时会有以下报错: No provider for Http! 出现这个错误是因为 OAuthService 需要依赖 Angular 的 Http 模块,但是还没有将该模块导入到项目中。...PWA 是可以安装在系统中的 web 应用程序。它可以在离线情况下工作,使用的是你最后一次与 app 交互的数据缓存。添加 PWA 功能可以让 app 加载更快,提供更好的用户体验。

23.2K50

构建具有用户身份认证的 Ionic 应用

Cordova 和 PhoneGap 允许你使用一套代码开发多个平台的应用 (比如 Android 和 iOS) 。除此之外,应用程序和原生程序相差无尽并且和原生体验一样好。...你可以使用 Chrome 的设备模式查看应用程序在 iPhone 6 中的效果。 ? 使用 Ionic serve 命令的特点是它会在浏览器中显示编译错误,不是(有时会隐藏)在开发控制台。...另外,关于如何在后端的 Auth 服务中验证用户身份的文档也不多。...app 加载时会有以下报错: No provider for Http! 出现这个错误是因为 OAuthService 需要依赖 Angular 的 Http 模块,但是还没有将该模块导入到项目中。...PWA 是可以安装在系统中的 web 应用程序。它可以在离线情况下工作,使用的是你最后一次与 app 交互的数据缓存。添加 PWA 功能可以让 app 加载更快,提供更好的用户体验。

23.8K00

前端 Vue 全家桶使用详解

项目构建工具也就是所谓的 CLI - Command Line Interface,像笔者之前使用的 SAP UI5 和 Angular,CLI 工具分别是 SAP UI5 Tooling 和 Angular...下面是一个简单的例子,展示了如何在 Vue 应用中使用 router-link: Home</router-link...当用户点击了任意一个 router-link,Vue Router 会根据指定的路径进行路由的跳转,不会触发整个页面的重新加载。这样就可以实现在单页应用中的页面导航,同时保持应用的流畅性和响应速度。...vuexVuex 是一个专为 Vue.js 应用程序开发的状态管理模式,用过 Angular 的开发朋友们,可以把它类比成 Angular 应用里的 NgRx,它允许 Vue 开发人员在应用程序中的所有组件之间共享和管理状态...vuex 适用于以下场合:当应用程序的状态变得复杂并且需要在多个组件之间共享时,使用 vuex 可以更好地组织和管理这些状态。

11310

你要的 React 面试知识点,都在这了

Props 和 State 什么是 PropTypes 如何更新状态和更新状态 组件生命周期方法 超越继承的组合 如何在React中应用样式 什么是Redux及其工作原理 什么是React路由器及其工作原理...Angular遵循两个方向的数据流,React遵循从上到下的单向数据流。React在开发特性时给了开发人员很大的自由,例如,调用API的方式、路由等等。...如何在重新加载页面时保留数据 单页应用程序首先在DOM中加载index.html,然后在用户浏览页面时加载内容,或者从同一index.html中的后端API获取任何数据。...如果通过点击浏览器中的重新加载按钮重新加载页面index.html,整个React应用程序将重新加载,我们将丢失应用程序的状态。 如何保留应用状态?...每当重新加载应用程序时,我们使用浏览器localstorage来保存应用程序的状态。

18.4K20

【Web技术】850- 深入了解页面生命周期API

因此,打开多个浏览器标签页是很常见的,因为这有助于并行完成事情。但同时,每一个标签页都会消耗系统资源,比如内存和CPU。...Chrome浏览器资源消耗 当我查看电脑上Chrome浏览器的资源消耗时,我观察到两个活动标签页分别消耗了14.7%和11%的CPU,冻结的标签页消耗了近0%的CPU。...如果用户再次访问被丢弃的页面,浏览器会重新加载页面,回到活动状态。 值得注意的是,用户一般会在资源受限的设备中体验到丢弃状态。 除了以上两种状态外,API中还引入了其他四种状态,分别是:。...Discarded状态 - 这个状态是应用程序无法观察到的。因此,任何可能的丢弃的准备工作都应该在隐藏或冻结状态下进行。...然而,你可以在页面加载时通过检查document.wasDiscarded来对页面的任何恢复做出反应。 好了,现在我们知道在每个状态下要做什么了,让我们看看如何在我们的应用程序中捕获每个状态。

1.3K20

何在 ASP.NET MVC 中集成 AngularJS(2)

在如何在 ASP.NET MVC 中集成 AngularJS(1)中,我们介绍了 ASP.NET MVC 捆绑和压缩、应用程序版本自动刷新和工程构建等内容。...捆绑可以很容易地将多个文件合并或捆绑到一个文件中。您可以创建 CSS,JavaScript 和其他包。压缩可以优化脚本和 CSS 代码,去除不必要的空格和注释,缩短变量名到一个字符。...当应用程序以调试模式执行或者 EnableOptimizations 被指为 false 时,渲染的方法将会在每一次捆绑中生成多个脚本。...对于标准的渲染脚本标签格式包含追加版本号来说,这也算是个小弥补。 从 Visual Studio 中启动应用程序时,您可能会遇到浏览器缓存的问题。...下面的示例应用程序的路由表只需要分析出三条路线: 一个用于根路径'/' 一个标准路由路径,'/:section/:tree' 包含路由参数的路由,'/:section/:tree/:id' 我决定从

8.3K100

一个Angular 5教程:一步一步指导实现你的第一个Angular 5应用程序

Angular CLI运行webpack dev服务器,该服务器将我们的应用呈现在下一个空闲端口上(以便您可以在同一台机器上运行多个应用),并进行实时重新加载。...但AppComponent将在应用程序中的其他任何内容之前加载,因此我们必须认为它是整洁小巧的。我们最好再创建一个组件来照顾存储卡片列表并将其显示在我们的页面上。...随着我们的应用程序的增长,我们可能会开始考虑优化。例如,如果我们想要将关于组件加载为默认组件,并且只在用户通过单击卡片链接隐式请求后才加载附加组件,该怎么办。为此,我们可以使用延迟加载模块。...我们用它来开发丰富的接口客户端应用程序单页应用程序和移动应用程序Angular的主要优势在于获得一个完全集成的Web框架,该框架为构建组件,路由和使用远程API提供了自己的框内解决方案。...这使我们可以为我们的应用程序构建多个独立模块,并为模块使用延迟加载。模块的目的是声明本模块中使用的所有内容,并允许Angular对其进行提前编译。 是基于角度MVC的?

42.4K10
领券