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

Angular Lazyload routes生成带有前缀default~pages的额外块文件

基础概念

Angular Lazy Loading 是一种优化网页加载性能的技术,它允许你按需加载模块,而不是一次性加载整个应用。当用户导航到某个路由时,对应的模块才会被加载。这样可以显著减少初始加载时间,提高用户体验。

相关优势

  1. 性能提升:减少初始加载时间,因为只有需要的模块会被加载。
  2. 代码分割:将应用分割成多个小块,便于管理和维护。
  3. 按需加载:用户只加载他们需要的功能,减少不必要的资源消耗。

类型

Angular Lazy Loading 主要涉及以下几种类型:

  1. 路由懒加载:按需加载路由对应的模块。
  2. 组件懒加载:按需加载组件。

应用场景

  1. 大型应用:对于大型应用,懒加载可以显著提升性能。
  2. 功能模块:对于一些不常用的功能模块,可以通过懒加载来减少初始加载时间。

生成带有前缀 default~pages 的额外块文件的原因及解决方法

原因

当你使用 Angular 的 ng build --prod 命令进行生产构建时,Angular CLI 会使用 Webpack 进行代码分割和优化。Webpack 会将每个懒加载模块打包成一个单独的文件,并且会生成一些额外的文件来管理这些模块。

default~pages 前缀的文件通常是 Webpack 生成的用于代码分割的文件。这些文件包含了懒加载模块的代码和其他必要的元数据。

解决方法

  1. 检查 Webpack 配置: 如果你希望自定义这些文件的命名或生成方式,可以修改 Angular CLI 的 Webpack 配置。你可以在项目根目录下创建一个 angular.json 文件,并在 architect -> build -> options -> webpackConfig 中添加自定义配置。
  2. 检查 Webpack 配置: 如果你希望自定义这些文件的命名或生成方式,可以修改 Angular CLI 的 Webpack 配置。你可以在项目根目录下创建一个 angular.json 文件,并在 architect -> build -> options -> webpackConfig 中添加自定义配置。
  3. 使用 Angular CLI 的默认配置: 如果你不需要自定义这些文件的命名或生成方式,可以继续使用 Angular CLI 的默认配置。Angular CLI 已经为你优化了这些文件的生成方式,通常不需要额外的配置。
  4. 检查依赖版本: 确保你使用的 Angular CLI 和相关依赖版本是最新的,因为新版本可能会修复一些已知的问题。

示例代码

以下是一个简单的 Angular 路由懒加载示例:

代码语言:txt
复制
// app-routing.module.ts
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';

const routes: Routes = [
  {
    path: 'lazy',
    loadChildren: () => import('./lazy/lazy.module').then(m => m.LazyModule)
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }
代码语言:txt
复制
// lazy/lazy.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { LazyComponent } from './lazy.component';

@NgModule({
  declarations: [LazyComponent],
  imports: [
    CommonModule
  ]
})
export class LazyModule { }

参考链接

希望这些信息对你有所帮助!如果你有更多问题,欢迎继续提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【架构拾集】 微前端:微应用化

如下是一个 Lazyload 的路由示例: export const ROUTES: Routes = [ { path: '', pathMatch: 'full', redirectTo: 'dashboard...只需要在使用的时候,Angular 构建的时候会将 module 独立构建成 *.chunk.js。...测试策略 考虑到微前端架构在实施上的一些特殊性,我们有必要在传统的测试金字塔的基础上添加一些额外的测试: 依赖一致检测测试 功能模块生成测试 依赖一致性测试 由于不同的功能模块,需要保持一致的依赖版本。...功能模块生成测试 由于项目加载模块的方式,是通过前端框架自带的的 Lazyload 功能来实现的。理论上,我们就不需要测试 lazyload 的功能是否正确。...如下是一个生成的 Lazyload 模块示例,正常情况下每个 chunk.js 文件应该是要大于空白的模块的大小: Date: 2018-08-05T06:31:39.188Z Hash: c1e57b16329e1ec9bb5e

69230
  • Angular性能优化实践——巧用第三方组件和懒加载技术

    划分业务模块 要懒加载Angular模块,需要在AppRoutingModule routes中使用loadchildren替代component进行配置。 ?...我们到lazy-webexcel.module.ts文件看下,导入了lazy-webexcel-routing.module.ts和lazy-webexcel.component.ts文件。...点击Designer Component LazyLoad,可以看到下图的文件出现,表示准备就绪,特性模块被惰性加载成功。 ? 总结 经过优化,首屏加载时间能得到有效的降低。...CLI会把RouterModule.forRoot(routes)添加到AppRoutingModule的imports 数组中。...CLI 还会把 RouterModule.forChild(routes) 添加到各个特性模块中。这种方式下 Angular 就会知道这个路由列表只负责提供额外的路由并且其设计意图是作为特性模块使用。

    4.1K20

    umi 常用配置

    config/config.ts 需要自己创建,如果项目复杂的话,把项目配置写到 config/config.ts 中 对配置进行拆分【比如路由配置】 hash 让生成的文件包含hash后缀,适用于增量发布和避免浏览器加缓存...打包后的文件会增加哈希 如: umi.df723s.js 添加 hash:true import { defineConfig } from 'umi'; export default defineConfig...({ nodeModulesTransform: { type: 'none', }, routes: [ { path: '/', component: '@/pages/...index' }, ], fastRefresh: {}, hash:true }); 再执行打包(因为此处用的包管理是yarn) yarn bulid 可以发现 生成的dist打包文件夹下的文件都加上了生成的...base 路由前缀,默认是 / ,首先,你有两个路由 / 和 /user 如果设置了base为/foo/,那么就可以通过 /foo/ 和 /foo/user/访问到之前的两个路由。

    1.4K40

    开学第一课:如何在vite中打造一个基于文件结构的路由系统

    通常来说,较好的约定就是文件目录结构就是路由,路由的权限以及额外配置在一个单独的文件中,next 框架就很好的实现了这一方式,他们就是采取的文件路由的方式,又或者 umi 框架,也有约定式路由的配置...文件路径可以获取,那如何避免 components 这种文件夹?同时又能够额外的增加一些配置属性呢?...default 的值 console.log('pages', pages) 没加 import: 'default' 的效果 加了 import: 'default' 的效果 属性名是 page.js.../pages/**/page.js', { eager: true, import: 'default' }) const routes: RouteRecordRaw[] = Object.entries.../pages/**/index.vue', { eager: true, import: 'default' }) const routes: RouteRecordRaw[] = Object.entries

    69930

    偷师 Next.js:我学到的 6 个设计技巧

    Module 只组织代码,将变量、函数等语法元素圈在一起,而不像 Class 会强加实例状态、成员方法等额外概念 例如,Next.js 的 Page 定义就只是个文件模块: // pages/about.js...Blog 对比 Class 形式的 API 设计,这种Module 式 API 设计更加纯粹,不强加额外语法元素(尤其是 Class 这种根基庞大的语法元素,带来一众super()、bind(this...API 因为根本没有 API,路由采用的是文件路径约定: // 静态路由 pages/index.js → / pages/blog/index.js → /blog pages/blog/first-post.js...(/foo/settings) pages/post/[...all].js → /post/* (/post/2020/id/title) 也就是说,通过源码所在文件路径来标识路由,甚至还能支持通配符...Static Regeneration):增量静态再生成,运行时定期重新生成静态 HTML SSG 降级 SSR:未命中预先生成的静态 HTML 时,立即进行 SSR SSR 带静态缓存:SSR 完成之后

    2.4K10

    Angular路由实现原理

    因为浏览器会向服务器 “http://127.0.0.1:5500/about” 这个地址发送 GET 请求, 希望请求到一个单独的 index.html 文件, 而实际上这个文件我们服务器上是不存在的...总结基于Hash优势:浏览器不会将 URL.path 中 # hash 后面的部分视作一个分页,因此默认的就不会触发页面的重载。在前端定义带有 hash 的链接总是安全的,因为它不会触发页面的重载。...服务端不需要额外配置。实现起来更加简单。劣势:SEO 并不友好用户体验不好基于History API优势:URL 看起来和普通的url 一样, 更加美观简洁。...通常为了让服务器区分这些 “路由形式的URL”, 所以通常需要用一些前缀以区分和普通 请求的区别,如 /api/*通过这种方式实现时,定义路由的时候需要特别注意, 因为不当的链接跳转可能会导致全页面重载...Angular路由实现已经了解了基本原理,那么Angular的路由又是怎么实现的呢。我到github上下载了angular路由实现的源码。

    81810

    Angular SSR 探究

    这给了用户一个非常好的极速加载的体验。为项目增加 SSRAngular CLI 可以帮助我们非常便捷的将一个普通的 Angular 项目转变为一个带有 SSR 的项目。...或 prerender 后的网页;build:ssr 构建 SSR 版本的网页;prerender 构建预渲染后的网页,与 build 不同,这里会根据提供的 routes 生成这些页面的 HTML...比如我们做企业官网,只有几个页面,那么我们可以使用预渲染技术生成这几个页面的静态 HTML 文件,避免在运行时动态生成,从而进一步提升网页的访问速度和用户体验。...products/555然后在命令行参数指定该文件: ng run :prerender --routes-file routes.txt在项目的 angular.json 文件配置需要的路径...同时也生成了相应的路径目录以及各个目录下的 index.html 子页面文件。

    10.3K51

    react全家桶包括哪些_react 自定义组件

    一、create-react-app 脚手架 对于现在比较流行的三大框架都有属于自己的脚手架(目前这些脚手架都是使用node编写的,并且都是基于webpack的): Vue的脚手架:vue-cli Angular...的脚手架:angular-cli React的脚手架:create-react-app 它们的作用都是帮助我们生成一个通用的目录结构,并且已经将我们所需的工程环境配置好。...只负责 UI 的呈现,不带有任何业务逻辑 b. 通过 props 接收数据(一般数据和函数) c. 不使用任何 Redux 的 API d....这个映射关系就是在pages中配置相关的组件都会自动生成对应的路径 默认page/index.js是页面的默认路径 页面跳转 5.4 样式 方式一:全局样式引入 方式二:module.css.../create-umi-app # 2.安装依赖 npm install # 3.启动项目 npm start 6.2 路由 umi 会根据 pages 目录自动生成路由配置。

    5.9K20

    我是如何在React-Router 6.10最新版本实现约定式路由的

    Soga,我们可以通过requireContext("pages/index.tsx").default得到我们文件的导出。 那么如果我们想做的是动态加载呢?即支持React.lazy的异步组件。...我查阅了相关文档,发现虽然import不能传递变量,但是可以传递多个参数,我们只需要先传递固定的前缀,之后再传递变量即可: const a = "index.tsx"; import("pages/",...目前的规则是,导入pages文件夹下所有不包含component或者hook的文件,同时,去除所有的相对路径导入。注意,结合我的项目都具体情况,页面的定义是某个文件夹下的index.tsx文件。...由于source.tsx文件和页面文件index.tsx同级,只有文件名差异,所以我们生成一个映射,方便后边直接通过文件名索引到source数据。...所以加一些额外的处理。 5.1 transformRouter 这份代码,补充了一些额外约定,比如我们可以通过直接定义redirect=“/user/base”自动生成重定向需要的代码。

    4.4K20

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

    此外,设置基本 URL 时,要确保基本 URL 以“/”为结尾,因为基本 URL 将是所有地址的前缀。 的其余部分将包括 AngularJS 视图和控制器。 对于示例应用程序,我在视图文件夹下创建了两个额外的文件夹,一个客户的子文件夹,一个产品的子文件夹。...所有的客户的 Angular 视图和控件器将驻留在客户子文件夹中,所有的产品的 Angular 视图和控件器将驻留在产品子文件夹中 。...每次应用程序运行的时候,我想获得最新版本的应用程序和使用的版本号,以实现最新的 HTML 文件和 JavaScript 文件生成时,帮助浏览器从缓存中,获取最新的文件来替换那些旧文件。...就 Angular 和单页面如何运行而言,当你点击 F5 时,基本上就是重启了 AngularJS 应用。 有了这些额外的路由,现在就可以直接执行 AngularJS 路由了。

    7.6K60

    Next.jsNuxt.jsNest.jsFastify

    Node框架,深受Angular的启发。...相同的是两者都遵循文件即路由的设计。默认以 pages 文件夹为入口,生成对应的路由结构,文件夹内的所有文件都会被当做路由入口文件,支持多层级,会根据层级生成路由地址。...同时如果文件名为 index 则会被省略,即 /pages/users 和 /pages/users/index 文件对应的访问地址都是 users。...不同的是,根据依赖的前端框架的不同,生成的路由配置和实现不同:api 路由:Next.js:在 9.x 版本之后添加了此功能的支持,在 pages/api/ 文件夹下(为什么放在pages文件夹下有设计上的历史包袱...那么引申而言,只要能够知道数据的结构和类型,我们都可以将这套优化逻辑复制过去。find-my-way:将注册的路由生成了压缩前缀树的结构,根据基准测试的数据显示是速度最快的路由库中功能最全的。

    3.2K10

    React 项目路径添加指定的访问前缀 - SPA

    ---- 前言 之前我们讨论了怎么在 Angular 项目路径添加指定的访问前缀,该项目针对 SPA 应用;当然,我们也讨论了 Next 项目路径添加指定的访问前缀,该项目是使用 React 框架完成的...本文,我们讨论 React 的 SPA 应用,怎么为该应用添加指定的访问前缀呢? 项目开发准备 这里我们使用了 creat-react-app 进行创建。...react 版本 ^18.2.0 我们将使用到其默认的命令行进行项目打包: "build": "react-scripts build" 但是,我们更改下,打包到自定义的文件夹,名为 jimmy:...> ); } export default App; BrowserRouter 指的就是 history 模式。...更改项目构建前缀 构建项目,我们对前缀的添加有如下的方法: 1.

    2.4K10
    领券