范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

我们为何选择弃用cssjs?

  大家好,很高兴又见面了,我是" 前端进阶 ",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!
  CSS-in-js
  emotion 排名第二的维护者 Sam 所在公司弃用了 css-in-js 方案,引起了不小的讨论。 1.概述 & 精读
  原文很有条理,先从 css-in-js 优点说起,再转而谈到缺点,说明了 css-in-js 这个新事物拥有明显的优点与缺点;然后从性能问题作为切入点,说明自己所在的公司为什么不得不抛弃 css-in-js;最后告诉读者目前自己的解决方案是 css-modules。
  编译时 css-in-js 方案
  之后还有一点儿延展性思考,即目前还诞生了一批编译时 css-in-js 方案,但面对性能问题时依然徒劳。让我们花点儿时间了解下作者的具体思路吧。 2.css-in-js 的优缺点
  css-in-js 作为一个理念较新的开发思路,拥有如下几个明显的优缺点。 2.1 优点无全局样式冲突 :就像 js 文件天然支持模块化的好处一样,原生 css 因为没有模块化能力,天然容易导致全局样式污染,如果不是特意用 BEM 方式命名,想要避免冲突就只能借助 css-in-js 了。(css-modules 也一样能做到) 与 js 代码合在一起 :天然融合进 js 代码方便模块化管理,使 css 可以与某个局部模块绑定。(css-modules 也一样能做到,只是必须单独拆一个样式文件) 能将 js 变量应用到样式上 :虽然 css 变量也能解决这个问题,但不如 css-in-js 那么直观,inline-style 也能解决这个问题,但会产生大量重复的局部样式,且这个优势 css-modules 做不到。 2.2 缺点css-in-js 运行时解析的实现版本增加了运行时性能压力,尤其在 React18 调度机制模式下,存在无法解决的性能问题(运行时插入样式会导致 React 渲染暂停,浏览器解析一遍样式,渲染再继续,然后浏览器又解析一遍样式)。 增加了包体积。相比原生或者 css-modules 方案来说,增加了运行时框架代码 8kb 左右。 让 ReactDevTools 结构变得复杂,因为 css-in-js 会包裹额外的 React 组件层用来实现样式插入。
  除了上述缺点外,css-in-js 还有三点深度使用后才能察觉的坑: 多个不同(甚至是相同)版本的 css-in-js 库同时加载时可能导致错误 。笔者用 styled-components 就遇到了类似问题,甚至语法会产生不兼容的情况,虽然这些问题都可以被解决,但花费的额外时间需要计算一样,相比 css-in-js 得到的收益是否值得。 样式插入优先级无法自定义 :这就导致产生样式覆盖时,业务对样式覆盖的优先级无法产生稳定的预期。class 优先级由 header 定义顺序决定,而非 className 的字符顺序决定,而 header 定义顺序又由资源加载与 css-in-js 插入执行时机决定,导致业务几乎不可能有稳定的样式覆盖顺序。这里产生的问题就是业务代码不断增多的 !important 定义。 不同 React 版本的 SSR,css-in-js 需要适配不同的实现 ,这对框架作者不太友好。
  除了性能问题以外,其他问题都可以忍,但偏偏在性能问题上,css-in-js 遇到了无解的场景。3.无解的性能问题
  css-in-js无解的性能问题
  第一条缺点提到的运行时解析,是 css-in-js 方案永远跨不过去的困境,即便对于编译时 css-in-js 方案来说,也免不了在渲染时做额外的逻辑执行拖慢渲染速度: function App() {   return ;     // 就是这种代码导致了性能问题 }
  原因是当 React 重渲染组件时,需要 重新解析样式定义,并序列化 className ,当渲染非常频繁时会导致明显的性能瓶颈,而解决方法是把样式定义抽出来,但这样就损失了第三个优点,即无法读取 js 变量了: const myCss = css({   backgroundColor: "blue",   width: 100,   height: 100, });
  不得不说 React 的渲染机制实在是太有问题了,如果换成 SolidJS 这个问题就好办了,因为运行时的样式代码仅会运行一次,组件重渲染也不会导致这段解析代码被重复执行,此时 css-in-js 在样式变化时再做一次精确样式更新,性能问题就可以被解决了。 4.换成 css modules
  css modules
  css-modules 同时支持优点一和二,而优点三可以通过一些特定语法糖绕过:通过 :import :export 伪类做 css 变量的导入导出,用 webpack-loader 实现 js 中引用 css 变量,用 css variable 实现 css 引用 js 变量。
  所以当性能问题是绕不过去的话题,而 css-modules 在性能最优的情况下,有一些曲线方案可以同时支持 css-in-js 的优点,也就能理解为什么作者要弃用 css-in-js 了。 5.包体积真的变大了吗
  原文谈到的 css-in-js 增加了 8~16kb 其实是在强行堆缺点了,除非你的项目只有一行 css 定义。如果我们只考虑传输时的包体积与 HTML 中样式定义数量,而忽略运行时产生的性能负担,那么 css-in-js 在大型项目无疑是最优的。
  打包体积
  原因就是 css-in-js 样式是按需插入的,没有渲染的组件就不会插入样式。甚至渲染了的组件也不一定会插入样式,因为 css-in-js 可以对包含相同样式定义的场景做 className 合并,类似于 webpack 打包时,可以把不同模块公共代码抽到一个 chunk 里。 6.编译时 css-in-js 方案是出路吗
  理论上是出路,但限制了 css-in-js 的灵活性。从 vanilla-extract 等编译时 css-in-js 框架来看,确实解决了运行时 css-in-js 性能问题,但带来了更多语法限制,比如必须预先定义样式再使用: import { style } from "@vanilla-extract/css" const myStyle = style({   display: "flex",   paddingTop: "3px" }) const App = () =>
  编译时 css-in-js 想要做到通用性,只能提供一个 className,这样就不受任何框架和环境的限制了,但这样也限制了声明语法的灵活性,显然不可以用内联方式定义样式。
  而且这种编译时的方案本质上和 css-modules 是一样的,背后都是定义了一些静态样式名,只是说这些样式问题以 .sass 定义还是 .ts 定义,如果用 .ts 定义,配合编译工具可以使代码原生 import 的更加舒服。
  所以使用了编译时 css-in-js 方案,本质上还是抛弃了运行时 css-in-js,投向了变种的 css-modules 阵营。 7.总结
  css-in-js 本身方向是对的,即把 css 与 js 融合,但太过灵活的运行时 css-in-js 方案遇到了几乎不可解的性能问题,编译时的 css-in-js 方案可能是更好的出路。
  css-in-js 这个名字本身就表示它拥有 in js 的灵活性,而编译时 css-in-js 方案本质因为是 css-module,所以不可避免拥有一些比较奇怪的限制,如果 js 里的代码不能像真的 js 一样灵活,可能还不如回到 .scss 或者 .less 的后缀更好理解一些。 参考资料原文链接:https://github.com/ascoders/weekly
  原文作者:黄子毅

未来经济看亚洲,亚洲经济看中国!已占据亚洲GDP的半壁江山世界经济重心向亚太地区转移已经是不争的事实,而在这个过程中,中国扮演的角色也越发重要。经合组织(OECD)临时首席经济学家阿尔瓦罗不久前就曾表示在20232024年,亚洲将成为全球两次输给熊竞楠,对李胜珠来说,2023可能是最艰难的一年离开赛场两年后,2022年李胜珠(AngelaLee)以母亲身份重回圆笼。在回归战中,李胜珠扛住女子原子量级八人赛冠军斯坦普(StampFairtex)的爆肝拳后,第二回合裸绞降服基于铌酸锂芯片,南开大学硬核成果入选美国名单,全球仅30项!日前,美国光学学会(Optica,原OSA)会刊OpticsPhotonicsNews在2022年度光学进展(Opticsin2022)中报道了南开大学吴强教授陈志刚教授和许京军教又一国际荣誉揭晓!中国大陆6人上榜,中山大学教授位列其中!近日,2022年度ACM杰出会员(DistinguishedMember)名单公布。今年共有67名会员入选,有23位是华人(中国大陆6人),占总人数的34。中山大学郑子彬教授成功入河南大学在嵩县潭头(原来80年前的嵩县和潭头如此之美)(图文)注根据1941年学生之友第2卷第4期所载的文章摘录的,因文稿模糊,摘录的几处文字无法识别,以代替。老郑伏牛山的指,一枝一枝的,蜿蜒的自西而东的伸出,复而各枝互相逼近,但又慢慢的分开聊天机器人ChatGPT爆火背后专访任福继情感已成为人工智能发展瓶颈聚焦海科会封面新闻记者陈彦霏邹阿江罗田怡摄影报道鉴赏古诗写程序做策划打辩论做高考试卷这个AI似乎无所不能。近日,近日OpenAI发布的对话型人工智能ChatGPT迅速出圈,相比起网红前辈Al全国生物多样性科学与保护研讨会关注海洋土壤动植物生态状况第十四届全国生物多样性科学与保护研讨会近日举行。会议由中国科学院生物多样性委员会生态环境部自然生态保护司共同主办,中国科学院科技促进发展局国家林业和草原局自然保护地管理司指导,华东破解球王梅西点球骗守门员的技巧球迷们好,作为曾经的足球少年的我,不是没踢过足球,只是因为身高不够,后来眼睛也被应试教育搞来戴眼镜了,才没有进军足坛(说来汗颜,呵呵),不然以我的足球意识,还是有希望进队的。中国不2022中国区域创新能力评价报告发布,广东蝉联第一12月10日,中国区域创新能力评价报告2022以线上形式发布。2022年广东区域创新能力排名第一,北京江苏分列第2和第3位,与上年保持一致。浙江追赶速度加快,首次超越上海,排名第4因涉及到陕甘回乱叛军首领而被禁播的爱国题材历史剧大将西征左宗棠是中国近代史上最伟大的民族英雄,他平定陕甘回乱收复天山南北,为华夏大地保住了西北的大片国土,但是至今没有一部以左宗棠为第一主人公的历史剧播出。其实在1998年的时候就有一部以3款高性能电动车来了,造型漂亮,续航出色,雅迪E9pro在列!阅读前请点击上面的关注二字,后续会为您提供更多有价值的相关内容,感谢您的支持。什么样的电动车才能算优质的车型?我想很多车主都会有一致的认同,那就是外观漂亮性能出色品质可靠。可以提升
富满微第三季度扣非净利亏损超2900万元5G射频芯片前景遭质疑中国网科技10月26日讯(记者张润琪)日前,集成电路综合方案提供商富满微(300671。SZ)公布2022年第三季度报告,其第三季度实现营收1。51亿元,同比下降54。42归属于上扎克伯格的元宇宙VS库克的AR,国内创业者究竟该信奉谁?本文来自微信公众号壹娱观察(IDyiyuguancha),文大娱乐家。尽管苹果那款存在于传言中的AR大杀器迟迟没有发布,但作为苹果CEO的库克却早已在各种场合持续宣扬AR技术和设备联想推出小新Air142023笔记本电脑,配备2。8K120Hz显示屏联想宣布推出小新Air142023笔记本电脑,采用轻巧设计,2。8K屏幕和120Hz显示屏刷新率。新的联想笔记本电脑很薄,重量仅为1。34kg左右。它的厚度在14。9到15。9毫米研究大型蜂群能产生与风暴云一样多的电荷众所周知,昆虫可以感知和利用电场,但一项新研究表明,蜂群实际上可以产生大气电荷。通过测量这种影响的程度,科学家们发现大型蜂群可以产生与风暴云一样多的电荷。蜜蜂与电的关系比你想象的更世界技能大赛特别赛芬兰赛区中国代表团获两金一银世界技能大赛特别赛芬兰赛区中国代表团获两金一银新华网10月24日,在芬兰赫尔辛基,中国选手获奖后合影。10月23日,获花艺项目优胜奖的上海农林职业技术学院杨灵芝在芬兰首都赫尔辛基参14年前背着失智母亲上大学,如今成了二十大代表,刘秀祥背后的故事让人动容作者菊英编辑贾方方来源婚姻与家庭杂志近期,党的二十大胜利召开,人们热切关注着相关的新闻。在闭幕式的党代表通道采访中,我们发现了一个熟悉的面孔。他就是刘秀祥。14年前,他背着疯母上学被罢免省人大代表职务后,刘文新落马据贵州省纪委监委网站10月26日消息贵州省委政法委原副书记刘文新涉嫌严重违纪违法,目前正接受贵州省纪委监委纪律审查和监察调查。资料图公开报道显示,刘文新,男,1967年8月出生,曾长江边安营扎寨的武汉人市区内体验露营热,江边位置要靠抢10月23日迎来霜降节气,冷空气南下将更频繁,但当天武汉最高气温达到27。6。连日来武汉秋高气爽,气候舒适,市内多地成为网红露营地。九派新闻记者走访市区多处江滩发现,不少市民赶在降传统旅游企业转型中国旅游协会休闲度假分会会长魏小安旅游业,在将近三年的疫情磨难之下,刚刚燃起的希望又一次破灭。这个时候,呼吁政府重视,希望政策支持,是自然而然的事情。但是,哪个行业不困难,那个地方一纸婚约融入美丽乡村!从化区结婚登记户外颁证点挂牌10月1日,爱在乡村振兴共创美好未来户外婚姻颁证点挂牌揭幕仪式和户外集体颁证仪式在从化城郊街西和村宝趣玫瑰世界举行,这是从化区首个户外婚姻颁证点,八对新人现场参加集体颁证仪式。宝趣多条国际航线恢复,全球通行更畅通?盼望着,盼望着,国际航班的数量又增多了!近来,包括东航南航海航等多家航司纷纷宣布,未来将大幅增加国际航线数量。这意味着,跨国出行的脚步更加方便啦?国际航班,逐渐增多国际航线增多,对