Hướng dẫn css modules vs styled component - mô-đun css so với thành phần được tạo kiểu
Show
Theo ý kiến cá nhân của tôi, vấn đề xếp tầng CSS được đánh giá quá cao. Nếu chúng tôi đang phát triển một ứng dụng hoặc trang web nhỏ, với một nhóm, thì chúng tôi không có khả năng gặp phải một vụ va chạm tên hoặc khó khăn trong việc tái sử dụng các thành phần. Nếu bạn phải đối mặt với vấn đề này, tôi khuyên bạn nên xem xét các mô -đun CSS, vì theo tôi, đây là một giải pháp tối ưu hơn cho các yếu tố trên. Trong mọi trường hợp, bất cứ điều gì bạn chọn, hãy viết mã có ý nghĩa và không bị lừa bởi sự cường điệu. Hype sẽ vượt qua, và tất cả chúng ta phải sống với nó. Có các dự án tuyệt vời và thú vị, độc giả thân mến!Những mô -đun CSS tốt hơn hoặc kiểu dángstyled-components as the most popular solution) and CSS Modules. In this article, we will try to answer the question: which is better CSS-in-JS or CSS Modules? Trong thử nghiệm tổng hợp này, các mô -đun CSS tiếp cận chiến thắng, vì hệ thống xây dựng không thêm một cái gì đó để thực hiện nó, ngoại trừ tên lớp đã thay đổi. Thành phần kiểu dáng do thực hiện kỹ thuật, thêm sự phụ thuộc cũng như mã để xử lý thời gian chạy và kiểu dáng. Thời gian trôi qua, web ngày càng trở nên phức tạp hơn và chúng tôi đang phải đối mặt với thực tế là các tầng kiểu biến thành một vấn đề đối với chúng tôi. Các nhóm phân tán, làm việc trên các bộ phận của họ, kết hợp chúng thành các mô -đun có thể tái sử dụng, lắp ráp một ứng dụng từ các mảnh, như Tiến sĩ Frankenstein, khâu các kiểu thành một bức tranh lớn, có thể nhận được kết quả đột ngột ... do Cascade, phong cách của mô -đun 1 có thể ảnh hưởng đến màn hình của mô -đun 3 và mô -đun 4 có thể thay đổi các kiểu toàn cầu và thay đổi toàn bộ màn hình của ứng dụng nói chung. Các nhà phát triển đã bắt đầu nghĩ đến việc giải quyết vấn đề này. Các quy ước đặt tên kiểu được tạo ra để tránh sự chồng chéo, chẳng hạn như BEM hoặc CSS nguyên tử của Yandex. Ý tưởng rất rõ ràng, chúng tôi hoạt động với các tên để có thể dự đoán được, nhưng đồng thời để ngăn chặn sự lặp lại. Những cách tiếp cận này đã bị sụp đổ các tảng đá của yếu tố con người. Dù sao, chúng tôi không có gì đảm bảo rằng nhà phát triển từ Team A sẽ không sử dụng tên từ Team C. Vấn đề đặt tên chỉ có thể được giải quyết bằng cách gán một tên ngẫu nhiên cho lớp CSS. Do đó, chúng tôi nhận được một bộ kiểu CSS hoàn toàn độc lập sẽ được áp dụng cho một khối HTML cụ thể và chúng tôi hiểu chắc chắn rằng phần còn lại của hệ thống sẽ không bị ảnh hưởng dưới bất kỳ hình thức nào. Và sau đó, 2 cách tiếp cận đã lên sân khấu để tổ chức các mô-đun CSS: CSS và CSS-in-JS của chúng tôi. Dưới mui xe, có một triển khai kỹ thuật khác nhau và trên thực tế giải quyết vấn đề về tính nguyên tử, khả năng tái sử dụng và tránh các tác dụng phụ khi viết CSS. Về mặt kỹ thuật, các mô-đun CSS biến đổi tên kiểu bằng cách sử dụng một băm dựa trên tên tệp, đường dẫn, tên kiểu. Thành phần kiểu dáng xử lý các kiểu trong thời gian chạy của JS, thêm chúng khi chúng đi đến phần HTML đầu ().head HTML section ( ).Phương pháp tổng quanHãy xem cách tiếp cận nào là tối ưu hơn để viết một ứng dụng web hiện đại! Hãy tưởng tượng chúng ta có một ứng dụng phản ứng cơ bản:
Nhập chế độ FullScreenen EXIT Mode FullScreen Kiểu CSS của ứng dụng này:
Nhập chế độ FullScreenen EXIT Mode FullScreen Kiểu CSS của ứng dụng này:16.14, react-dom 16.14 Các phụ thuộc là phản ứng 16,14, React-DOM 16,14 Chúng ta hãy cố gắng xây dựng ứng dụng này bằng cách sử dụng trang web bằng tất cả các tối ưu hóa sản xuất. chúng tôi đã có129kb JS UGLEND
Nhập chế độ FullScreenen EXIT Mode FullScreen Kiểu CSS của ứng dụng này:129kb Các phụ thuộc là phản ứng 16,14, React-DOM 16,14 Chúng ta hãy cố gắng xây dựng ứng dụng này bằng cách sử dụng trang web bằng tất cả các tối ưu hóa sản xuất.
Nhập chế độ FullScreenen EXIT Mode FullScreen Kiểu CSS của ứng dụng này:163kb Các phụ thuộc là phản ứng 16,14, React-DOM 16,1430kb difference between CSS Modules and CSS-in-JS (styled-components) is due to styled-components adding extra code to add styles to the part of the HTML document.Chúng ta hãy cố gắng xây dựng ứng dụng này bằng cách sử dụng trang web bằng tất cả các tối ưu hóa sản xuất. chúng tôi đã có JS UGLENDMã tương tự trong các mô -đun CSS sẽ trông như thế này:JS UGLEND
Bây giờ chúng ta hãy xem nhanh các ưu và nhược điểm của các mô-đun CSS-in-JS / CSS.
Nhập chế độ FullScreenen EXIT Mode FullScreen
Chúng ta hãy cố gắng xây dựng ứng dụng này bằng cách sử dụng trang web bằng tất cả các tối ưu hóa sản xuất.JS UGLEND
Nhập chế độ FullScreenen EXIT Mode FullScreen
@teamsupercell/typings-for-css-modules-loader Ưu điểm
Sự kết luậnVì vậy, vấn đề cơ bản với phương pháp CSS-in-JS là nó không phải là CSS! Loại mã này khó duy trì hơn nếu bạn có một người xác định trong nhóm của bạn làm việc trên Markup. Mã đó sẽ chậm hơn, do thực tế là CSS được hiển thị vào tệp được xử lý song song và CSS-in-JS không thể được chuyển thành một tệp CSS riêng biệt. Và lỗ hổng cơ bản cuối cùng là không có khả năng sử dụng các phương pháp và tiện ích làm sẵn, chẳng hạn như SCSS, ít và bút stylelint, v.v. Mặt khác, cách tiếp cận CSS-in-JS có thể là một giải pháp tốt cho nhóm Frontend, người đối phó với cả đánh dấu và JS, và phát triển tất cả các thành phần từ đầu. Ngoài ra, CSS-in-JS sẽ hữu ích cho các mô-đun tích hợp vào các ứng dụng khác. Theo ý kiến cá nhân của tôi, vấn đề xếp tầng CSS được đánh giá quá cao. Nếu chúng tôi đang phát triển một ứng dụng hoặc trang web nhỏ, với một nhóm, thì chúng tôi không có khả năng gặp phải một vụ va chạm tên hoặc khó khăn trong việc tái sử dụng các thành phần. Nếu bạn phải đối mặt với vấn đề này, tôi khuyên bạn nên xem xét các mô -đun CSS, vì theo tôi, đây là một giải pháp tối ưu hơn cho các yếu tố trên. Trong mọi trường hợp, bất cứ điều gì bạn chọn, hãy viết mã có ý nghĩa và không bị lừa bởi sự cường điệu. Hype sẽ vượt qua, và tất cả chúng ta phải sống với nó. Có các dự án tuyệt vời và thú vị, độc giả thân mến! Những mô -đun CSS tốt hơn hoặc kiểu dángTrong thử nghiệm tổng hợp này, các mô -đun CSS tiếp cận chiến thắng, vì hệ thống xây dựng không thêm một cái gì đó để thực hiện nó, ngoại trừ tên lớp đã thay đổi. Thành phần kiểu dáng do thực hiện kỹ thuật, thêm sự phụ thuộc cũng như mã để xử lý thời gian chạy và kiểu dáng.CSS Modules approach wins, since the build system doesn't add something extra to implement it, except for the changed class name. Styled-components due to technical implementation, adds dependency as well as code for runtime handling and styling of .
Các mô -đun CSS có tốt hơn không?Các mô -đun CSS cho phép bạn viết các kiểu trong các tệp CSS nhưng tiêu thụ chúng dưới dạng các đối tượng JavaScript để xử lý và an toàn bổ sung. Các mô -đun CSS rất phổ biến vì chúng tự động làm cho tên lớp và hoạt hình trở nên độc đáo để bạn không phải lo lắng về va chạm tên chọn.CSS Modules are very popular because they automatically make class and animation names unique so you don't have to worry about selector name collisions.
Tôi có nên sử dụng các mô -đun CSS với React không?Các mô -đun CSS phổ biến trong React vì những lý do sau: Các mô -đun CSS: CSS được phân chia khi bạn sử dụng chúng đúng cách.Có khả năng kết hợp cao: Bạn có thể soạn các phong cách khác nhau theo nhiều cách.Tree Shakable: Các kiểu bạn không sử dụng được loại bỏ, giống như công cụ JS hiện đại.Scoped: CSS Modules are scoped when you use them the right way. Highly composable: You can compose different styles in a lot of ways. Tree shakable: Styles you don't use are removed, just like modern JS tooling.
Là mô -đun CSS A CSSCác mô -đun CSS Nó giống như cấu trúc mã CSS và tất cả.Sự khác biệt chính là các phương thức gọi là quá khác nhau.Các mô -đun CSS cung cấp một số mô -đun JS biểu diễn những gì chứa các liên kết đến các lớp CSS.Và các tên lớp của chúng tôi sẽ trông giống nhưCSS Modules provide some JS Modules representation what contain links to CSS classes. And our classNames will be looks like
|