1. Giới thiệu Nếu đã từng làm việc với Angular phiên bản cũ, bạn có thể quen thuộc với việc phải tạo một NgModule để khai báo các component, directive và pipe trước khi sử dụng chúng. Ví dụ, khi tạo một component mới, chúng ta thường phải khai báo nó trong declarations của một NgModule. Đây là cách tổ chức ứng dụng Angular truyền thống. Tuy nhiên, từ Angular 14, Angular đã giới thiệu một cách tiếp cận mới mang tên Standalone Components . Standalone giúp component có thể tự quản lý các dependency cần thiết cho template của mình mà không cần phải khai báo trong một NgModule. Đến Angular 19, Standalone đã trở thành mặc định. Vì vậy, khi tạo một project mới bằng Angular 22, chúng ta có thể phát triển ứng dụng mà không cần tự tạo AppModule như trước đây. Trong bài viết này, chúng ta sẽ tìm hiểu: Standalone Components là gì? Vì sao Angular chuyển sang Standalone? Tạo project Angular 22. Xây dựng một Homepage sử dụng Standalone Components. Tạo một component theo cách truyề...
Nếu dùng Playwright một thời gian, kiểu gì cũng có ngày bạn nhìn lại ổ C rồi giật mình: thư mục AppData phình to bất thường. Thủ phạm quen thuộc chính là Playwright. Mặc định nó sẽ tải toàn bộ Chromium, Firefox và WebKit về đường dẫn: C:\Users\<username>\AppData\Local\ms-playwright Mỗi lần nâng cấp thư viện, Playwright lại kéo thêm một dàn browser binaries mới. Vài ba dự án cùng chạy là ổ C dễ dàng "bốc hơi" từ 5 đến 10 GB. Để dứt điểm vấn đề này, bạn chỉ cần chuyển toàn bộ browser sang ổ D qua các bước dưới đây. Cơ chế hoạt động flowchart TD A[Mặc định: Ổ C] -->|Chiếm 5-10 GB AppData| B[C:\Users\...\ms-playwright] C[Biến môi trường: PLAYWRIGHT_BROWSERS_PATH] -->|Trỏ sang Ổ D| D[D:\PlaywrightBrowsers] D --> E[chromium-xxxx] D --> F[firefox-xxxx] D --> G[webkit-xxxx] Bước 1: Tạo thư mục lưu trữ trên ổ D Tạo sẵn một thư mục riêng để chứa toàn bộ browser binaries, ví dụ: D...