Hướng dẫn css-in-js typescript - bảng chữ css-in-js
DigitalOcean cung cấp các sản phẩm đám mây cho mọi giai đoạn của hành trình của bạn. Bắt đầu với $ 200 trong tín dụng miễn phí! Vanilla-Extract là một thư viện CSS-in-Typescript mới của khung. Nó là một cách nhẹ, mạnh mẽ và trực quan để viết phong cách của bạn. Vanilla-Extract không phải là một khung CSS theo quy định, nhưng là một phần công cụ phát triển linh hoạt. Công cụ CSS là một không gian tương đối ổn định trong vài năm qua với các mô-đun Postcss, SASS, CSS và các thành phần kiểu dáng được sắp ra mắt trước năm 2017 (một số từ lâu trước đó) và chúng vẫn còn phổ biến ngày hôm nay. Tailwind là một trong một vài công cụ đã làm mọi thứ rung động trong công cụ CSS trong vài năm qua. Vanilla-Extract nhằm mục đích làm rung chuyển mọi thứ một lần nữa. Nó đã được phát hành trong năm nay và có lợi ích là có thể tận dụng một số xu hướng gần đây, bao gồm:
Có một loạt các đổi mới thông minh trong Vanilla-Extract mà tôi nghĩ làm cho nó trở thành một vấn đề lớn. Không chạy bằng khôngCác thư viện CSS-in-JS thường đưa các kiểu vào tài liệu vào thời gian chạy. Điều này có lợi ích, bao gồm trích xuất CSS quan trọng và kiểu dáng năng động. Nhưng như một nguyên tắc chung, một tệp CSS riêng biệt sẽ có hiệu suất hơn. Điều đó bởi vì mã JavaScript cần phải thông qua phân tích/biên dịch đắt tiền hơn, trong khi một tệp CSS riêng biệt có thể được lưu trữ trong khi giao thức HTTP2 làm giảm chi phí của yêu cầu thêm. Ngoài ra, các thuộc tính tùy chỉnh hiện có thể cung cấp rất nhiều kiểu dáng năng động miễn phí. Vì vậy, thay vì tiêm các kiểu vào thời gian chạy, Vanilla-Extract nhận được sau Linaria và Astroturf. Các thư viện này cho phép bạn các kiểu tác giả sử dụng các chức năng JavaScript bị xé toạc vào thời điểm xây dựng và được sử dụng để xây dựng tệp CSS. Mặc dù bạn viết Vanilla-Extract trong TypeScript, nhưng nó không ảnh hưởng đến kích thước tổng thể của gói JavaScript sản xuất của bạn. TYPEXTRIPTMột đề xuất giá trị chiết xuất vani lớn là bạn nhận được gõ. Nếu nó đủ quan trọng để giữ phần còn lại của loại mã hóa an toàn, thì tại sao không làm điều tương tự với kiểu của bạn? TypeScript cung cấp một số lợi ích. Đầu tiên, có tự động hoàn thành. Nếu bạn gõ vào FO FO thì trong một trình soạn thảo thân thiện với TypeScript, bạn sẽ nhận được một danh sách các tùy chọn phông chữ trong một lần thả xuống- 1, 2, 3 hoặc bất cứ điều gì khác phù hợp-để chọn. Điều này làm cho các thuộc tính CSS có thể phát hiện được từ sự thoải mái của biên tập viên của bạn. Nếu bạn có thể nhớ tên của 4 nhưng hãy biết nó sẽ bắt đầu với từ ngữ phông chữ, bạn sẽ nhập nó và cuộn qua các tùy chọn. Trong mã VS, bạn không cần tải xuống bất kỳ công cụ bổ sung nào để điều này xảy ra.Điều này thực sự làm tăng tốc độ tác giả của Styles: Điều đó cũng có nghĩa là biên tập viên của bạn đang theo dõi vai của bạn để đảm bảo rằng bạn không mắc phải bất kỳ lỗi chính tả nào có thể gây ra lỗi gây khó chịu. Các loại Vanilla-Extract cũng cung cấp một lời giải thích về cú pháp trong định nghĩa loại của chúng và liên kết đến tài liệu MDN cho thuộc tính CSS mà bạn chỉnh sửa. Điều này loại bỏ một bước điên cuồng googling khi các kiểu hành xử bất ngờ. Viết bằng TypeScript có nghĩa là bạn sử dụng tên trường hợp lạc đà cho các thuộc tính CSS, như 5. Đây có thể là một chút thay đổi cho các nhà phát triển được sử dụng cú pháp CSS thông thường, như 6.Tích hợpVanilla-Extract cung cấp các tích hợp hạng nhất cho tất cả các gói mới nhất. Tại đây, một danh sách đầy đủ các tích hợp mà nó hiện đang hỗ trợ:
Nó cũng hoàn toàn không phải là khuôn khổ. Tất cả những gì bạn cần làm là nhập tên lớp từ Vanilla-Extract, được chuyển đổi thành một chuỗi vào thời điểm xây dựng. Cách sử dụngĐể sử dụng Vanilla-Extract, bạn viết một tệp 7 mà các thành phần của bạn có thể nhập. Các cuộc gọi đến các chức năng này được chuyển đổi thành chuỗi tên lớp băm và phạm vi trong bước xây dựng. Điều này nghe có vẻ tương tự như các mô-đun CSS, và đây không phải là sự trùng hợp: một trong những người tạo ra Vanilla-Extract, Mark Dalgleish, cũng là người đồng sáng tạo các mô-đun CSS.
// title.css.ts
backgroundColor: "hsl(210deg,30%,90%)",
fontFamily: "helvetica, Sans-Serif",
color: "hsl(210deg,60%,25%)",
padding: 30,
borderRadius: 20,
"@media": {
"screen and (max-width: 700px)": {
padding: 10
}
},
":hover":{
backgroundColor: "hsl(210deg,70%,80%)"
} |