Angular學習之聊聊獨立元件(Standalone Component)

2022-12-19 22:00:33
本篇文章帶大家繼續angular的學習,簡單瞭解一下中的獨立元件(Standalone Component),希望對大家有所幫助!

Angular 14一項令人興奮的特性就是Angular的獨立元件(Standalone Component)終於來了。【相關教學推薦:《》】

在Angular 14中, 開發者可以嘗試使用獨立元件開發各種元件,但是值得注意的是Angular獨立元件的API仍然沒有穩定下,將來可能存在一些破壞性更新,所以不推薦在生產環境中使用。

基本使用

standalone 是 Angular14 推出的新特性。

它可以讓你的 根模組 AppModule 不至於那麼臃腫

所有的 component / pipe / directive 都在被使用的時候 在對應的元件引入就好了

舉個例子 這是之前的寫法 我們宣告一個 Footer 元件

然後在使用的 Module 中匯入這個元件

import { Component } from '@angular/core';

@Component({
  selector: 'app-footer',
  template: ` <footer class="dark:bg-gray-800 dark:text-gray-50">Footer</footer> `,
})
export class FooterComponent {}
登入後複製
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FooterComponent } from './footer.component';

@NgModule({
  declarations: [HomeComponent, FooterComponent],
  exports: [],
  imports: [CommonModule],
})
export class AppModuleModule {}
登入後複製

這種寫法導致我們始終無法擺脫 NgModule

但其實我們的意圖就是在 AppComponent 中使用 FooterComponent

換成 React 中的寫法 其實會更便於管理和理解

用上我們的新特性 standalone

Footer 元件就改造成這樣

import { Component } from '@angular/core';

@Component({
  selector: 'app-footer',
  // 將該元件宣告成獨立元件
  standalone: true,
  template: ` <footer class="dark:bg-gray-800 dark:text-gray-50">Footer</footer> `,
})
export class FooterComponent {}
登入後複製

然後比如在 Home 頁面 我們就可以這樣使用

import { Component } from '@angular/core';

import { FooterComponent } from '@components/footer/footer.component';

@Component({
  selector: 'app-home',
  standalone: true,
  // 宣告需要使用的 component / pipe / directive 但是它們也必須都是獨立元件
  imports: [FooterComponent],
  template: `<app-footer></app-footer>`,
})
export class WelcomeComponent {}
登入後複製

獨立元件可以直接用於懶載入 本來我們必須藉助 NgModule 來實現

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

import { CustomPreloadingStrategy } from '@views/basic-syntax/router/customPreloadingStrategy';

const routes: Routes = [
  {
    path: 'home',
    // 之前想要實現懶載入 這裡必須是一個NgModule 現在使用獨立元件也可以 並且更加簡潔
    loadComponent: () => import('@views/home/home.component').then((mod) => mod.HomeComponent),
  },
];

@NgModule({
  imports: [RouterModule.forRoot(routes, { preloadingStrategy: CustomPreloadingStrategy })],
  exports: [RouterModule],
})
export class AppRoutingModule {}
登入後複製

更多程式設計相關知識,請存取:!!

以上就是Angular學習之聊聊獨立元件(Standalone Component)的詳細內容,更多請關注TW511.COM其它相關文章!