博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于 emotion 初步使用的笔记
阅读量:7043 次
发布时间:2019-06-28

本文共 1078 字,大约阅读时间需要 3 分钟。

群里听达峰大大讲 Strikingly 用的是 emotion 的方案, 留了个心眼.

之前查看过一些 CSS in JS 方案, 大致看过 emotion, 不知道哪个比较好:
但是既然 Strikingly 有实践经验, 而且当时也是我看中的几个之一, 觉得比较安全.

从写法上看, 侵入性比较小, 直接就是 className:

import styled, { css } from 'react-emotion';const Container = styled('div')`  background: #333;`const myStyle = css`  color: rebeccapurple;`const app = () => (

Hello World

);

然后生成的 CSS 是基于 hash 的 className 包裹的, 插入在 <head/> 当中的.

这样运行时甚至热替换时没有什么问题的.

另一个关注的方面是打包, 也就是将 CSS 从 js 种抽出来重新变成 CSS 文件.

emotion 给出的方案是用 babel plugin 强行生成文件, 然后配合 Webpack 打包:
没有看具体的细节, 从原理上是行得通的.

最近整理了一个 demo 出来, 完成了基本的开发和打包功能:

有些坑吧, 比如打包过程生成的 CSS 文件是写在 src/ 当中的, 和源码在一起,

有点脏, 我后面写了 xarg 的命令行强行在打包结束给删除掉了.

关于编辑器的支持, 目前我用的是 VS Code, 需要语法高亮和自动提示,

注意后面这个 plugin 需要本地安装 TypeScript 并且切换版本到 2.6.1+, 我配置成功了.
另外由于前面搭配了 Prettier, 自动格式化也是搞定的.

另一个担心的问题是对 CSS 某些兄弟元素/父子元素的选择关系,

还没有足够深入去挖这些问题. 大致上觉得是可以可靠的方案. 后面要等 Strikingly 分享...

CSS 抽取问题

相关的内容在 上询问了作者, 关于 emotion 抽取成独立文件的细节.

使用当中发现一个问题, 就是有些样式在抽象之后丢失了.
代码时存在的, 问题在于代码 className 的顺序不再影响样式了,
动态运行的 emotion 会根据 className 顺序来处理样式的合并, 抽取后没法生效.
维护团队给出的方案是不抽取... 性能可以接受的情况下我觉得还好...
但是总归是一个坑.

转载地址:http://qxhal.baihongyu.com/

你可能感兴趣的文章
用C++写程序的一些感悟
查看>>
SVN可视化管理工具——Subversion Edge使用
查看>>
第七日
查看>>
xpath路径表达式笔记
查看>>
poj 1564 && zoj 1711 Sum It Up (dfs)
查看>>
rxjs 常用的静态操作符
查看>>
linux下的音量控制器alsamixer 桌面v7
查看>>
获取显卡硬件信息lspci -vnn | grep VGA -A 12
查看>>
eclpse安装jetty插件
查看>>
LSA/PLSA
查看>>
Qt坐标转换
查看>>
拷贝某文件至某位置
查看>>
堆栈以及对象的引用
查看>>
K-means文本聚类系列(已经完成)
查看>>
WCF RIA Service错误处理
查看>>
如何学好VC和MFC(各前辈学习方法及感受整理)(五)
查看>>
Windows消息常量(2)
查看>>
Spring中bean配置的继承
查看>>
DataGridView设置行高
查看>>
数据恢复:模拟2个逻辑坏块
查看>>