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其它相關文章!