Desde que mencionamos CSS em JS como uma técnica emergente em 2017, ela se tornou muito mais popular, e é uma tendência que também vemos em nosso trabalho. Com uma sólida experiência em produção, podemos agora recomendar CSS em JS como uma técnica a ser testada. Um bom ponto de partida é o framework de componentes com estilo, mencionado em nosso último Radar. Além de todos os aspectos positivos, porém, geralmente há uma desvantagem ao usar CSS em JS: o cálculo de estilos em tempo de execução pode causar um atraso perceptível para usuários finais. Com Linaria, agora estamos vendo uma nova classe de frameworks criados com esse problema em mente. Linaria emprega várias técnicas para mudar a maior parte da sobrecarga de desempenho para ganhar tempo. Infelizmente, isso vem com seu próprio conjunto de poréns, principalmente a falta de suporte a estilo dinâmico no IE11.
CSS in JS is a technique of writing CSS styling in the JavaScript programming language. This encourages a common pattern of writing the styling with the JavaScript component it applies to, co-locating presentational and logical concerns. The new players — including JSS, emotion and styled-components — rely on the tooling to translate the CSS-in-JS code to separate CSS stylesheets, to make them suitable for browser consumption. This is the second-generation approach to writing CSS in JavaScript and unlike the previous approaches doesn’t rely on in-line styles. That means it provides the benefit of supporting all CSS features, sharing of CSS using the npm ecosystem and utilization of components across multiple platforms. Our teams have found styled-components working well with component-based frameworks, such as React, and unit testing of CSS with jest-styled-components. This space is new and rapidly changing; the approach requires some effort for manual debugging of the generated class names in the browser, and it may not apply to some projects where the front-end architecture does not support reusing components and requires global styling.