Angular 自定义模块以及配置路由实现模块懒加载

项目目录

创建模块

ng g module module/user --routing
ng g module module/article --routing
ng g module module/product --routing

创建组件

ng g component module/user
ng g component module/user/components/profile
ng g component module/user/components/order
ng g component module/article
ng g component module/article/components/articlelist
ng g component module/article/components/info
ng g component module/product
ng g component module/product/components/plist
ng g component module/product/components/pinfo

1.app.module.ts

import { BrowserModule } from ‘@angular/platform-browser‘;
import { NgModule } from ‘@angular/core‘;

import { AppRoutingModule } from ‘./app-routing.module‘;
import { AppComponent } from ‘./app.component‘;

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

app.component.html

<header>
  <a [routerLink]="[‘/user‘]">用户模块</a>
  <a [routerLink]="[‘/article‘]">文章模块</a>
  <a [routerLink]="[‘/product‘]">商品模块</a>
</header>
<router-outlet></router-outlet>

app-routing.module.ts

import { NgModule } from ‘@angular/core‘;
import { Routes, RouterModule } from ‘@angular/router‘;

const routes: Routes = [
  {

    path:‘user‘,loadChildren:‘./module/user/user.module#UserModule‘
  },
  {

    path:‘article‘,loadChildren:‘./module/article/article.module#ArticleModule‘
  },
  {

    path:‘product‘,loadChildren:‘./module/product/product.module#ProductModule‘
  },

  {

    path:‘**‘,redirectTo:‘user‘
  }

];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

用户模块user.module.ts

import { NgModule } from ‘@angular/core‘;
import { CommonModule } from ‘@angular/common‘;

import { UserRoutingModule } from ‘./user-routing.module‘;
import { UserComponent } from ‘./user.component‘;
import { ProfileComponent } from ‘./components/profile/profile.component‘;
import { AddressComponent } from ‘./components/address/address.component‘;

@NgModule({
  declarations: [UserComponent, ProfileComponent, AddressComponent],
  imports: [
    CommonModule,
    UserRoutingModule
  ]
})
export class UserModule { }

 user-routing-module.ts

import { NgModule } from ‘@angular/core‘;
import { Routes, RouterModule } from ‘@angular/router‘;

import { UserComponent } from ‘./user.component‘;

import { ProfileComponent } from ‘./components/profile/profile.component‘;
import { AddressComponent } from ‘./components/address/address.component‘;

const routes: Routes = [
  {
    path:‘‘,component:UserComponent
  },
  {
    path:‘profile‘,component:ProfileComponent
  },
  {
    path:‘address‘,component:AddressComponent
  }
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class UserRoutingModule { }

其他模块类似配置

自定义模块的父子路由

import { NgModule } from ‘@angular/core‘;
import { Routes, RouterModule } from ‘@angular/router‘;

import { ProductComponent } from ‘./product.component‘;

import { PlistComponent } from ‘./components/plist/plist.component‘;
import { CartComponent } from ‘./components/cart/cart.component‘;
import { PcontentComponent } from ‘./components/pcontent/pcontent.component‘;

const routes: Routes = [

  {

    path:‘‘,component:ProductComponent,
    children:[
      {path:‘cart‘,component:CartComponent},
      {path:‘pcontent‘,component:PcontentComponent}
    ]

  },

  {path:‘plist‘,component:PlistComponent}
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class ProductRoutingModule { }

原文地址:https://www.cnblogs.com/loaderman/p/10917687.html

时间: 2024-10-14 02:37:31

Angular 自定义模块以及配置路由实现模块懒加载的相关文章

vue路由懒加载

当打包构建应用时,javascript包会变得非常大,影响页面加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了. 结合Vue的异步组件和webpack的code splitting feature,轻松实现路由组件的懒加载. 我们要做的就是把路由对应的组件定义成异步组件: const Foo = resolve => { // require.ensure 是webpack的特殊语法,用来设置code-split point // 代

vue+webpack2实现路由的懒加载

当打包构建应用时,Javascript 包会变得非常大,影响页面加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了. 结合 Vue 的异步组件和 Webpack 的代码分割功能,轻松实现路由组件的懒加载. 首先,可以将异步组件定义为返回一个 Promise 的工厂函数 (该函数返回的 Promise 应该 resolve 组件本身): const Foo = () => Promise.resolve({ /* 组件定义对象 */ })

vue2.x 路由懒加载 优化打包体积

当打包构建应用时,Javascript 包会变得非常大,影响页面加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了. 结合 Vue 的异步组件和 Webpack 的代码分割功能,轻松实现路由组件的懒加载. 首先,可以将异步组件定义为返回一个 Promise 的工厂函数 (该函数返回的 Promise 应该 resolve 组件本身): const Foo = () => Promise.resolve({ /* 组件定义对象 */ })

路由懒加载

//结合 Vue 的 异步组件 和 Webpack 的 code splitting feature, 轻松实现路由组件的懒加载. //我们要做的就是把路由对应的组件定义成异步组件 const Foo = resolve => require(['./Foo.vue'], resolve) const router = new VueRouter({ routes: [ { path: '/foo', component: Foo } ] }) 原文地址:https://www.cnblogs.

前端性能优化方案-路由懒加载实现

组件懒加载也叫按需加载: 当打包构建应用时,JavaScript 包会变得非常大,影响页面加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了. 打包 build 后的 dist 中 js 包文件太大,影响页面加载速度,使用 vue 的异步组件和 webpack 的代码分割功能,实现路由组件的懒加载: 下面通过 vue 的异步加载和 webpack 来实现组件懒加载: 先看例子不使用路由懒加载的情况: import Vue from 'v

Angular23 loading组件、路由配置、子路由配置、路由懒加载配置

1 需求 由于Angular是单页面的应用,所以在进行数据刷新是进行的局部刷新:在进行数据刷新时从浏览器发出请求到后台响应数据是有时间延迟的,所以在这段时间就需要进行遮罩处理来提示用户系统正在请求数据. 2 loading组件简介 loading组件就是专门负责遮罩处理的,可以自定一个loading组件,也可以使用别人创建号的loading模块:loading组件生效后的效果如下: 参考资料:点击前往 3 编程步骤 3.1 创建一个angular项目 技巧01:版本必须是angular4及以上

ionic 懒加载页面模块合并

ionic3 懒加载 ionic3 默认使用了懒加载技术,相较以前预加载的版本,ionic3构建的app在首页加载时间上有较大的优化,但是,ionic3默认每个页面都会对应一个模块,对于页面较多,但是每个模块都很小的应用可能并不怎么合理.于是,尝试将几个小模块合并为几个大的模块. 1. 一个模块对应一个页面: 默认状态下每个页面都会对应一个模块,如果项目之中的页面比较多那么最后构建的项目中的将会看到有很多的 js . 原setting.module.ts 1 import { NgModule

系统管理模块_部门管理_设计(映射)本模块中的所有实体并总结设计实体的技巧_懒加载异常问题_树状结构

系统管理模块_部门管理_设计本模块中的所有实体并总结设计实体的技巧 设计实体流程 1,有几个实体? 一般是一组增删改查对应一个实体. 2,实体之间有什么关系? 一般是页面引用了其他的实体时,就表示与这个实体有关联关系. 3,每个实体中都有什么属性? 1,主键.推荐使用代理主键 2,关联关系属性.在类图中,关联关系是一条线,有两端,每一端对应一个表达此关联关系的属性.有几个端指向本类,本类中就有几个关联关系属性. 3,一般属性.分析所有有关的页面,找出表单中要填写的或是在显示页面中要显示的信息等.

angular路由懒加载

创建模块的方法 ng generate module 模块名称 --routing 例如: ng generate module admin --routing ng generate module auth --routing 使用懒加载的方法 1.在app.module.ts中调用懒加载 // 懒加载模块 { path:"login", loadChildren:()=>import('./auth/auth.module').then(mod=>mod.AuthMod