专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

我们为何选择弃用cssjs?

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

陕西十大冷门景点,人少景美好玩陕西省,历史非常悠久,无论是地上还是地下,都有着许多著名的景点,比如大家熟悉的西安秦始皇兵马俑西安大雁塔太白山华清池等,还有华山法门寺延安黄帝陵也受到众人喜欢。除此之外,陕西也有不伊利用实力诠释全面价值领先目标,双11用品质好奶喝护美好生活一直以来,伊利严守伊利即品质,视品质如生命的信条,坚持以消费者为中心的理念,坚定推进创新战略,加大产品创新投入和全产业链创新协同,不断提供高品质的产品和服务,满足消费者多元化的健康上海,秋日打卡指南出炉,是浓烈而浪漫的魔都美景秋风摇曳的是日光的剪影地面被多种颜色浸染目光所及皆是色彩纷呈的瞬间不经意与秋意撞了个满怀岁月向晚,秋色渐浓让我们拿起相机赴一场魔都秋日打卡之旅将散落在温柔缱绻的小欢喜酝酿成更丰盛的爱索智慧体育智慧乐跑助力江苏省前黄高级中学2022秋季运动会数字化在线化只是第一步,智能化智慧化才是未来,数字化(Digital)和智能化(Intelligence)也是压缩式并行式发展,合起来就是数智化(Digintelligence)。秋季腹泻高发季节到来轮状病毒正作妖如何守护宝宝?长假就在外玩了一天,娃就开始上吐下泻,一下就蔫了好不容易养出的两斤肉,噌噌地往下掉,孩子生场病,妈妈半条命,上医院一查,好家伙,原来娃不是简单的拉肚子而是感染了轮状病毒。妈妈群里一丹麦国宝级模特,16岁出道,20岁财富自由,用牛仔单品演绎时尚这玫瑰来自一个不相识的女人,在我走进一座不知名的小镇的途中,放我所在之处,它的香气存留。亨里克任何美的事物都是值得赞扬的,她们所散发出来的内在的美的芬芳,外在的美的格调,真的是无法生活不易生活不易的句子11生也容易,活也容易,生活不容易。2人生有太多的不如意,我们要学会去努力。3快乐是一天,不快乐也是一天,为什么不天天快了呢?4路是一步一步的走出来的,只有脚踏实地的我受过凌迟大刑,是你走后一遍遍想你文案没人会在意你累不累真正的在意你的是到底行不行城南有旧事,城北有信使。林深时见鹿,海蓝时见鲸,梦醒时见你。可我,树深时雾起,海深时浪涌,梦醒时夜续。不见鹿,不见鲸,也不见你一别两宽,学会独处,享受孤独一孤独是一种圆满的状态。事业受挫亲人分离恋人分手后出现的感觉是孤独吗?不是,那只是悲伤和寂寞。一直以来,我都认为孤独和寂寞是相同的,看了蒋勋的孤独六讲后才恍然大悟,两者之间的差异是狗尾巴草一无忧狗尾巴草的花语艰难的爱坚强暗恋不被人理解的爱狗尾巴草的快乐是简单的,它们在春天不管不顾的钻出地面,旁若无人疯狂的茂盛,然后悄悄地默默的干枯。它们没有那么多的矫情,迷于混沌中是一种幸人生不过3万多个日夜,每一天都是精彩的直播,很多人却在摆烂佛说人在出生之前是看过自己出生后一辈子要经历的生活,这是真是假也无从去争辩,但我认为是不对的,如果真的看过自己要走的路,难道哪怕前方满是荆棘也义无反顾的走入轮回吗,都说众生皆苦,但
远离网贷认真生活资本如果有50利润它就会铤而走险如果有100的利润它就敢践踏人间一切法律如果有300的利润它就敢犯下任何罪行,甚至不怕被绞首的危险。资本论马克思又说资本来到世间,从头到脚,每个毛孔比华为更贵!三星心系天下W23系列曝光,精英人士专属?尽管三星在国内的份额可以忽略不计,但在商务人群有着举足轻重的地位,每年都会推出心系天下高端定制手机。今年三星W23如约而至,首次采用双旗舰定位策略,虽然属于套娃已经发布的产品,但价4个习惯催生胆结石!不少人4条全中,难怪肚子总不舒服石头出现在路上,再正常不过但石头长在身体里,就不是什么好事了。尤其是当石头出现在胆囊时,危害就不仅仅是疼痛那么简单了。四个习惯催生胆结石01长期三高饮食这里的三高饮食是指高脂高糖高16GB内存条价格狂跌仅需239元文杨金蓉责编吕东兴总编唐迪近日想换内存条,升级电脑的朋友们看过来,如今,这款铨兴DDR416GB内存条售卖价仅需239!原价379元!即装即用,需要的小伙伴可快快下手。铨兴DDR4台积电加速2nm制程技术,iPhone13为新机让路一夜跌至乞丐价台湾积体电路制造总裁魏哲家此前在技术论坛上强调,台湾积体电路制造2nm将成为密度最高性能最高的技术。市场也期待台湾积体电路制造2nm的进度领先于竞争对手三星和英特尔。值得一提的是,财政部今年8月份全国税收收入增幅由负转正全国一般公共预算收入自4月来首现正增长每经记者李可愚每经编辑马子卿最新消息显示,今年8月当月,全国税收收入增幅实现了由负转正。日前,财政部网站发文介绍2022年8月财政收支情况。此次发布的数据显示,18月累计,全国一般太火爆!二手商品进百货大楼了!千亿风口,在这里打开来源央视财经近来随着物价持续攀升,韩国民众对二手商品的需求剧增。为了能够在火热的二手交易市场里分得一杯羹,最近韩国首尔市的百货商店开设了全国首个专门的二手商品馆。韩国出现首个百货商78台光刻机,15个办事处,1500员工,ASML摊牌了?众所周知,中国已经连续十二年位居世界第一大制造业大国,再加上中国也是全球最大的芯片消耗市场。也正是因为如此,很多国家和地区的高科技企业都在中国设立了分厂或者建立了研发团队办事处等。研究未来几十年里,美国不管哪个地方都会出现湿热的热浪在2022年夏天,加利福尼亚和其他地方破纪录的热浪引发了一系列的健康警报和警告,另外还使得电网出现紧张情况并使数百万最脆弱的美国人置身于不舒服和有时致命的闷热条件下。如果目前的趋势今年最精辟短文(经典!)01hr思想太少可能失去做人的尊严,思想太多可能失去做人的快乐。度也!02hr挣钱是技术,花钱是艺术能不能挣钱看智慧,会不会花钱看品味。道也!03hr对自己好点,这一生不是很长对身多部委一把手带队,为何赴这些地方稳大盘?中国经济周刊记者谢玮丨综合报道势要起而不可落。当前正处于经济回稳最吃劲的节点,必须以时不我待的紧迫感,巩固经济恢复发展基础。8月16日,在深圳召开的经济大省政府主要负责人座谈会上,
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网