Table des matières
Présentation du module
Composition du module (de base, maîtrise)
ngModule explication de l'attribut (compréhension)
Explication détaillée des attributs" >Explication détaillée des attributs
Modules couramment utilisés (de base, maîtrise)
如何创建一个模块(基础,掌握)(未完待续)
angualr模块和js模块有什么区别?(了解)
模块懒加载
创建order和user两个模块,list一个组件
模块共享
Maison interface Web js tutoriel Comprenez les concepts liés aux modules angulaires10 et lancez-vous rapidement !

Comprenez les concepts liés aux modules angulaires10 et lancez-vous rapidement !

Aug 02, 2021 pm 06:59 PM
angular 模块

Cet article vous donnera une introduction aux modules de angular10. Il présentera la composition des modules, les attributs de ngModule, les modules couramment utilisés, la différence entre les modules anguar et les modules js et le chargement paresseux des modules. ensemble.

Comprenez les concepts liés aux modules angulaires10 et lancez-vous rapidement !

Présentation du module

Le module NgModule est un point important dans Angular, car l'élément de base d'Angular est NgModule. NgModule collectera les codes associés (composants, instructions, services) dans certains ensembles fonctionnels pour former des unités fonctionnelles. On peut dire que les modules fournissent un contexte de compilation pour les composants, les instructions et les services. [Recommandation de didacticiel connexe : "Tutoriel angulaire"]

Lors de l'utilisation de la commande Angular CL pour créer un nouveau projet, un module racine sera généré pour nous, nommé AppModule. Le module racine a un composant racine AppComponent pour guider cela. module racine L'application peut être lancée. Les applications angulaires sont modulaires. Au cours du développement, nous construirons divers modules, grands et petits, en fonction de leurs fonctions, fonctions et caractéristiques pour les intégrer dans une application. Tout module peut contenir un certain nombre d'autres composants.

Composition du module (de base, maîtrise)

Le module angulaire est une classe avec le décorateur @ngModule(), et le décorateur @ngModule accepte un objet de métadonnées. Les propriétés de cet objet sont utilisées pour décrire le module.

  • declarations : déclarer des composants, des directives, des pipelines
  • imports : introduire des dépendances
  • exports : exporter des modules
  • providers : enregistrement de service
  • bootstrap : spécifier les composants hôtes
import { BrowserModule } from '@angular/platform-browser';
//从主模块中引入NgModule(模块装饰器或模块注解)
import { NgModule } from '@angular/core';
//引入组件,因为模块为组件提供编译的上下文环境
import { AppComponent } from './app.component';
// 引入路由模块
import { AppRoutingModule } from './app-routing.module';

//装饰器以json的形式声明元数据
@NgModule({
   //组合模块的组件和管道
  declarations: [ AppComponent ],
  //模块依赖项
  imports: [ BrowserModule,AppRoutingModule ],
  //子模块可以输入导出的模块
  imports: [],
  //模块提供的服务
  providers: [],
  //指定宿主组件,只在根模块中出现
  bootstrap: [AppComponent]
})
export class AppModule { }
Copier après la connexion

ngModule explication de l'attribut (compréhension)

Cliquez sur la classe décoratrice @NgModule() et nous pouvons voir qu'elle possède les attributs suivants et l'explication officielle de ses attributs.

export declare interface NgModule {
    providers?: Provider[];// 本模块向全局服务中贡献的那些服务的创建器。 这些服务能被本应用中的任何部分使用。(你也可以在组件级别指定服务提供商,这通常是首选方式。)
    declarations?: Array<Type<any> | any[]>;// 那些属于本 NgModule 的组件、指令、管道
    imports?: Array<Type<any> | ModuleWithProviders<{}> | any[]>;// 那些导出了本模块中的组件模板所需的类的其它模块
    exports?: Array<Type<any> | any[]>;//那些能在其它模块的组件模板中使用的可声明对象的子集
    entryComponents?: Array<Type<any> | any[]>;
    bootstrap?: Array<Type<any> | any[]>;
    schemas?: Array<SchemaMetadata | any[]>;
}
Copier après la connexion

Explication détaillée des attributs

fournisseurs : Définissez à l'avance tous les services injectés dans les composants de ce module, sinon il y aura un message d'erreur lors de l'utilisation de ce service dans ce module.

declaration : déclaration signifie déclaration en anglais. Déclarez ici certains composants, instructions, tuyaux, etc. à utiliser dans certains modules.

importations : Importez certains modules. Par exemple, si je combine toutes les instructions dans un module, lorsque j'utilise certaines instructions, je peux choisir d'importer l'intégralité du module d'instructions. Vous pouvez également importer certains modules installés via npm install avant de pouvoir les utiliser.

exports : Exportez des composants ou des pipelines d'instructions, etc., afin que les modules qui référencent ce module puissent utiliser les composants ou les pipelines d'instructions de ce module.

exporyComponents : le composant d'entrée représente le composant d'entrée d'angular. Le composant bootable est un composant d'entrée, et Angular le chargera dans le DOM pendant le processus de démarrage. D'autres composants d'entrée sont chargés dynamiquement à d'autres moments. Sens littéral, mais quand l'utiliser, par exemple, si je veux faire apparaître un composant, alors ce composant doit être chargé dynamiquement dans le DOM. À ce stade, je dois écrire ce composant xxxComponent.

bootstrap : Le composant qui doit être démarré au démarrage de ce module. À partir du code ci-dessus, vous pouvez voir qu'AppModule est le composant de démarrage du module racine.

schemas : Les éléments ou attributs qui n'appartiennent pas aux composants ou directives angulaires doivent être déclarés ici.

Modules couramment utilisés (de base, maîtrise)

NgModuleImportUtilisation
BrowserModule@angular/platform-browser Lorsque vous souhaitez exécuter l'application dans le navigateur
CommonModule@angular/commonLorsque vous souhaitez utiliser NgIf et NgFor
FormsModule@angular/formsLorsque vous souhaitez créer des formulaires pilotés par modèles (il contient NgModel)
ReactiveFormsModule@angular/formsLorsque vous souhaitez créer un formulaire réactif
RouterModule@angular/routerPour utiliser la fonction de routage, vous devez utiliser RouterLink, .forRoot() et .forChild() Quand
HttpClientModule@angular/common/httpQuand vous souhaitez parler au serveur

如何创建一个模块(基础,掌握)(未完待续)

ng generate module <module-name> //创建一个模块

ng g m <module-name> // 缩写

ng g m order // 创建订单模块

ng g m order --routing // 创建带路由订单模块
Copier après la connexion

angualr模块和js模块有什么区别?(了解)

js模块(ES6 中的模块)

模块功能主要由两个命令构成:export和import,export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能

一般来说,一个模块就是一个独立的文件,该文件内部的所有变量,外部无法获取,如果你希望外部能够读取模块内部的某个变量,就必须使用export关键字输出该变量

// profile.js
export var firstName = &#39;Michael&#39;;
export var lastName = &#39;Jackson&#39;;
export var year = 1958;

// 优先考虑下面写法
var firstName = &#39;Michael&#39;;
var lastName = &#39;Jackson&#39;;
var year = 1958;

export {firstName,lastName, year}
Copier après la connexion

export 命令除了可以导出变量,还可以导出函数和类(class)

function a () {...}
function b () {...}

export {
    a,
    b as b_ // 通过as关键字重命名对外接口
}
Copier après la connexion

使用export命令定义了模块的对外接口后,其他js文件就可以通过import命令来加载这个模块了。

// main.js
import {firstName, lastName, year} from &#39;./profile.js&#39;;

function setName(element) {
  element.textContent = firstName + &#39; &#39; + lastName;
}
Copier après la connexion

import命令接受一对大括号,里面指定要从其他模块导入的变量名。大括号里面的变量名,必须与被导入模块(profile.js)对外接口的名称相同

我们也可以对加载的模块进行重命名

import { lastName as surname } from &#39;./profile.js&#39;;
Copier après la connexion

除了指定加载某个输出值,还可以使用整体加载,即用星号(*)指定一个对象,所有输出值都加载在这个对象上面

// circle.js
export function area(radius) {
  return Math.PI * radius * radius;
}

export function circumference(radius) {
  return 2 * Math.PI * radius;
}

// 使用
import * as circle from &#39;./circle&#39;;

console.log(&#39;圆面积:&#39; + circle.area(4));
console.log(&#39;圆周长:&#39; + circle.circumference(14))
Copier après la connexion

这里有一个地方需要注意,模块整体加载所在的那个对象(上例是circle),应该是可以静态分析的,所以不允许运行时改变,下面的写法都是不允许的

import * as circle from &#39;./circle&#39;;

// 下面两行都是不允许的
circle.foo = &#39;hello&#39;;
circle.area = function () {};
Copier après la connexion

angualr模块

angualr模块在文章开头有作介绍(angualr模块概述和angualr模块构成)

NgModule 类 与 JavaScript 模块有下列关键性的不同:

  • NgModule 只绑定了可声明的类,这些可声明的类只是供 Angular 编译器用的。
  • NgModule 与 JavaScript 类把它所有的成员类都放在一个巨型文件中不同,只要把该模块的类列在它的 @NgModule.declarations 列表中。
  • NgModule 只能导出可声明的类。这可能是它自己拥有的也可能是从其它模块中导入的。它不会声明或导出任何其它类型的类。
  • 与 JavaScript 模块不同,NgModule 可以通过把服务提供商加到 @NgModule.providers 列表中,来用服务扩展整个应用。

相比之下我们可以看出,NgModule模块更灵活,扩展性强,更具优势。

模块懒加载

如果我们将所有的模块都导入根模块,那么应用在初始化加载的时候就会非常慢。这时候我们应该考虑使用惰性加载。根据需求加载相应都模块,减少应用初始化包的大小以及减少加载的时间,提高用户体验性。

惰性加载的模块特点是该模块拥有路由模块。因此 接着上面我们创建了一个订单模块 我们给订单模块加上路由。并再创建一个user.module以及user.module模块下的list组件。

ng g m user --routing //创建user模块
ng g c user/list --skip-tests //在user模块里面创建组件list
Copier après la connexion

创建order和user两个模块,list一个组件

<!--order.module 订单模块-->
import { NgModule } from &#39;@angular/core&#39;;
import { CommonModule } from &#39;@angular/common&#39;; //为一些结构性指令提供支持

import { OrderRoutingModule } from &#39;./order-routing.module&#39;; //模块具有自己的路由
import { ListComponent } from &#39;./list/list.component&#39;; //引入list组件

@NgModule({
  declarations: [ListComponent],
  imports: [
    CommonModule,
    OrderRoutingModule
  ]
})
export class OrderModule { }
Copier après la connexion

配置子路由

<!--order-routing.module 订单模块对应的路由模块-->
import { NgModule } from &#39;@angular/core&#39;;
import { Routes, RouterModule } from &#39;@angular/router&#39;;
import { ListComponent } from &#39;./list/list.component&#39;;


const routes: Routes = [ //子路由的组件配置
  {
    path: &#39;list&#39;,
    component: ListComponent
  },
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class OrderRoutingModule { }
Copier après la connexion

user模块如此类推

配置总路由(重点,掌握)

<!--AppRoutingModule 根路由模块-->
import { NgModule } from &#39;@angular/core&#39;;
import { Routes, RouterModule } from &#39;@angular/router&#39;;

const routes: Routes = [ //根路由的配置
  {
    path: &#39;orders&#39;,
    loadChildren: &#39;./order/order.module#OrderModule&#39; // 配置订单子模块
  },
  {
    path: &#39;users&#39;,
    loadChildren: &#39;./user/user.module#UserModule&#39; // 配置用户子模块
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }
Copier après la connexion

我们给app.component.html新增两个button

<!--The content below is only a placeholder and can be replaced.-->
<div style="text-align:center">
  <h2>
    Welcome to {{ title }}!
  </h2>
</div>


<button routerLink="/user/list">user</button> //路由跳转
<button routerLink="/order/list">order</button> 

<router-outlet></router-outlet>
Copier après la connexion

惰性加载模块有什么好处呢?

在大型项目中往往有许多个模块,而且大很大。如果一个模块1m,如果我们在浏览器输入地址打开这个应用,瞬间要加载100m 是非常慢的,而且我们并非要是用到着这100个模块。

将系统业务拆分为各个模块,划分好界限。按需加载,我点击了user 就加载user 模块,页面出现user 列表,对user进行操作。当我需要使用时才加载,极大的减少了页面初始加载的时间以及减少了资源的消耗

模块共享

共享模块顾名思义,就是共享于所有的模块中。首先得定义好这个模块的具体功能特性,比如指令、管道和组件等分别封装成一个个模块,哪些业务模块需要使用到其里面的功能便导入其模块中便可。 这极大的规范了系统的统一性和降低了以后的维护成本

如果你引入了第三方UI,就不要把UI引入共享模块中导出,这样你的共享模块越来越庞大。别人UI框架设计的初衷就是按需加载。你把UI组件放到共享模块,加载那些无关的的UI组件,会浪费掉大量的性能。

Pour plus de connaissances sur la programmation, veuillez visiter : Vidéos de programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le module d'extension WLAN s'est arrêté [correctif] Le module d'extension WLAN s'est arrêté [correctif] Feb 19, 2024 pm 02:18 PM

S'il y a un problème avec le module d'extension WLAN sur votre ordinateur Windows, cela peut entraîner une déconnexion d'Internet. Cette situation est souvent frustrante, mais heureusement, cet article propose quelques suggestions simples qui peuvent vous aider à résoudre ce problème et à rétablir le bon fonctionnement de votre connexion sans fil. Réparer le module d'extensibilité WLAN s'est arrêté Si le module d'extensibilité WLAN a cessé de fonctionner sur votre ordinateur Windows, suivez ces suggestions pour le réparer : Exécutez l'utilitaire de résolution des problèmes réseau et Internet pour désactiver et réactiver les connexions réseau sans fil Redémarrez le service de configuration automatique WLAN Modifier les options d'alimentation Modifier Paramètres d'alimentation avancés Réinstaller le pilote de la carte réseau Exécuter certaines commandes réseau Examinons-le maintenant en détail

Le module d'extensibilité WLAN ne peut pas démarrer Le module d'extensibilité WLAN ne peut pas démarrer Feb 19, 2024 pm 05:09 PM

Cet article détaille les méthodes permettant de résoudre l'événement ID10000, qui indique que le module d'extension LAN sans fil ne peut pas démarrer. Cette erreur peut apparaître dans le journal des événements du PC Windows 11/10. Le module d'extensibilité WLAN est un composant de Windows qui permet aux fournisseurs de matériel indépendants (IHV) et aux fournisseurs de logiciels indépendants (ISV) de fournir aux utilisateurs des fonctionnalités de réseau sans fil personnalisées. Il étend les fonctionnalités des composants réseau Windows natifs en ajoutant la fonctionnalité par défaut de Windows. Le module d'extensibilité WLAN est démarré dans le cadre de l'initialisation lorsque le système d'exploitation charge les composants réseau. Si le module d'extension LAN sans fil rencontre un problème et ne peut pas démarrer, vous pouvez voir un message d'erreur dans le journal de l'Observateur d'événements.

Comment installer Angular sur Ubuntu 24.04 Comment installer Angular sur Ubuntu 24.04 Mar 23, 2024 pm 12:20 PM

Angular.js est une plateforme JavaScript librement accessible pour créer des applications dynamiques. Il vous permet d'exprimer rapidement et clairement divers aspects de votre application en étendant la syntaxe HTML en tant que langage de modèle. Angular.js fournit une gamme d'outils pour vous aider à écrire, mettre à jour et tester votre code. De plus, il offre de nombreuses fonctionnalités telles que le routage et la gestion des formulaires. Ce guide expliquera comment installer Angular sur Ubuntu24. Tout d’abord, vous devez installer Node.js. Node.js est un environnement d'exécution JavaScript basé sur le moteur ChromeV8 qui vous permet d'exécuter du code JavaScript côté serveur. Être à Ub

Une brève analyse de la façon d'utiliser monaco-editor en angulaire Une brève analyse de la façon d'utiliser monaco-editor en angulaire Oct 17, 2022 pm 08:04 PM

Comment utiliser monaco-editor en angulaire ? L'article suivant enregistre l'utilisation de monaco-editor dans angulaire qui a été utilisé dans une entreprise récente. J'espère qu'il sera utile à tout le monde !

Un article explorant le rendu côté serveur (SSR) dans Angular Un article explorant le rendu côté serveur (SSR) dans Angular Dec 27, 2022 pm 07:24 PM

Connaissez-vous Angular Universel ? Cela peut aider le site Web à fournir un meilleur support SEO !

Python bibliothèques standard couramment utilisées et bibliothèques tierces module 2-sys Python bibliothèques standard couramment utilisées et bibliothèques tierces module 2-sys Apr 10, 2023 pm 02:56 PM

1. Introduction au module sys Le module os présenté précédemment est principalement destiné au système d'exploitation, tandis que le module sys de cet article est principalement destiné à l'interpréteur Python. Le module sys est un module fourni avec Python. C'est une interface permettant d'interagir avec l'interpréteur Python. Le module sys fournit de nombreuses fonctions et variables pour gérer différentes parties de l'environnement d'exécution Python. 2. Méthodes couramment utilisées du module sys Vous pouvez vérifier quelles méthodes sont incluses dans le module sys via la méthode dir() : import sys print(dir(sys))1.sys.argv-get les paramètres de ligne de commande sys. argv est utilisé pour implémenter la commande depuis l'extérieur du programme. Le programme reçoit des paramètres et il est capable d'obtenir la colonne des paramètres de la ligne de commande.

Comment utiliser PHP et Angular pour le développement front-end Comment utiliser PHP et Angular pour le développement front-end May 11, 2023 pm 04:04 PM

Avec le développement rapide d'Internet, la technologie de développement front-end s'améliore et se répète constamment. PHP et Angular sont deux technologies largement utilisées dans le développement front-end. PHP est un langage de script côté serveur capable de gérer des tâches telles que le traitement des formulaires, la génération de pages dynamiques et la gestion des autorisations d'accès. Angular est un framework JavaScript qui peut être utilisé pour développer des applications monopage et créer des applications Web composées de composants. Cet article explique comment utiliser PHP et Angular pour le développement front-end et comment les combiner.

Programmation Python : explication détaillée des points clés de l'utilisation de tuples nommés Programmation Python : explication détaillée des points clés de l'utilisation de tuples nommés Apr 11, 2023 pm 09:22 PM

Préface Cet article continue de présenter le module de collection Python. Cette fois, il y introduit principalement les tuples nommés, c'est-à-dire l'utilisation de nommétuple. Sans plus tarder, commençons – n'oubliez pas d'aimer, de suivre et de transmettre ~ ^_^Création de tuples nommés La classe de tuple nommé nomméeTuples dans la collection Python donne un sens à chaque position dans le tuple et améliore la lisibilité du code sexuel et descriptif. Ils peuvent être utilisés partout où des tuples réguliers sont utilisés et ajoutent la possibilité d'accéder aux champs par nom plutôt que par index de position. Il provient des collections de modules intégrés Python. La syntaxe générale utilisée est : importer des collections XxNamedT

See all articles