在这篇文章中,我们仔细研究了前台开发中的一项前沿技术:在JavaScript文件中用CSS。
JS中的CSS是一种相对较新的技术,它允许开发人员直接在JavaScript代码中编写CSS代码,而不是用单独的CSS文件。
主要好处是:
在JS中用CSS显然不是处理所有性可以问题的方法,并且有许多开发人员严厉批评了它背后的概念,例如,像这样的帖子 。还有几种处理方案能通过简单的CSS代码实现重要的性可以优势,例如 CSS板块。与往常一样,作为开发人员,我们只要选择最适合产品要求和团队偏好的工具和技术。
在本文中,我们将演示如何在React应使用程序中用JS接受CSS。
JS工具中有几个开源CSS。看着像一个非穷尽示例列表 这个 有二十多个选项。
所有的工具提供的功可以差不多,大部分时间都是框架不可知的,所以选择真的取决于你。
在我们的例子中,我们希望选择易于在堆栈中引入的工具,而不需要太复杂。因而,所有用 高阶组件 (HOC)方法的工具都被排除在外。
HOC用开发人员将组件传递给添加新功可以的功可以的想法。而后用结果代替原始组件。
同样,我们希望取得的好处之一是静态类型分析,因而也会排除用ES6模板文字编写CSS的工具。只有将CSS接受为Javascript对象的工具才被考虑列入。
在JS工具的所有现有CSS中,我们选择 TypeStyle 的起因如下:
TypeStyle还允许您用自己设置选择器定义规则。这些规则会立即应使用于文档,并且不会生成类名称。
假设我们想要在页面的中心显示我们的微调。我们利使用 CSS Flexbox 板块,这个任务很简单。
typestyle.cssRule('html, body', {
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
minHeight: percent(100),
fontSize: '10pt' // This sets 1rem = 10px
})
回到媒体查询,在与他们合作时需要考虑少量事情。尽管CSS应使用于顶部,但TypeStyle规则不是。无碰撞类名通常确保这不是问题,但针对相同类的媒体查询可可以会显示少量意外行为。
以这个样式表为例:
div {
color: black;
}
@media (max-width: 600px) {
div {
color: red;
}
}
@media (max-width: 400px) {
div {
color: yellow;
}
}
将其应使用于文档时,媒体查询将自上而下执行,因而,当窗口大小低于400像素时,div文本颜色为黄色。
用TypeStyle时,通常将上面的样式表转换为以下定义:
const divClassName = style(
{
color: 'black'
},
media({maxWidth: 600}, {
color: 'red'
}),
media({maxWidth: 400}, {
color: 'yellow'
})
)
TypeStyle不保证类的生成顺序(尤其是由于这依赖于JS引擎),所以我们需要调整媒体查询以避免产生歧义。
上面的代码能这样修复:
const divClassName = style(
{
color: 'black'
},
media({maxWidth: 600, minWidth: 401}, {
color: 'red'
}),
media({maxWidth: 400}, {
color: 'yellow'
})
)
TypeStyle使服务器端渲染(SSR)非常简单。核心思想是,一旦您在某个变量中准备好了服务器生成的HTML,即可以调使用该getStyle函数以刷新所有已用的样式。
这也有利于确保在响应中只发送用的CSS规则 - 这就是所谓的 关键CSS。
以下是如何在服务器上用React和TypeStyle生成完整HTML页面的简单示例:
app.get('/', function (req, res) {
const body = ReactDOMServer.renderToStaticMarkup(
) const html = ReactDOMServer.renderToStaticMarkup(
SSR )
res.send(html);
});
在代码中嵌入TypeStyle当然有其缺点。特别是,这两个新库的添加使PWA应使用代码大小添加了大约15KB。
好消息是,当这些额外的数据加载时,应使用程序和使用户交互根本没有被阻止。该应使用程序已经在服务器上呈现,并且所有需要的CSS已经在具备HTML页面的设施上着陆; 因而浏览器拥有呈现网页所需的一切。
此外,关于添加 - 在快速网络环境中,这些额外数据几乎不可感知,在慢速或者不可靠网络上,它会在第一次渲染时间上取得巨大收益。
这是用纯CSS的原始分支上的页面加载的原始性可以。
通过用TypeStyle,我们几乎能将慢速3G网络上的初次渲染时间缩短50%。
要概述TypeStyle如何在有限的情况下提供帮助,我们用webpagetest用的配置文件设置,在不同的移动网络条件下运行相同的比较 :
正如您从下面的图表中看到的,在每个网络请求非常昂贵的较慢网络中,这些好处更加显著。即便在大多数高性可以网络中,在JS技术中用CSS进行嵌入,第一次渲染时间也会缩短100ms。
在所有情况下,JS中的CSS最多添加100ms第一个互动。如前所述,假如我们查看使用户转换率的增长,初次呈现时间的减少使其能接受。
PWA的引入彻底改变了我们开发应使用程序的方式。移动设施现在可以够以几年前甚至无法想象的方式离线存储信息。
PWA详情了在无情的网络环境中提供内容服务的各种新方法。我们不可以不记得,首先需要一个网络来加载缓存。每个应使用程序都是不同的,引入服务工作者能让开发人员提供能更好地适应特定使用例的自己设置缓存策略。
在这篇文章中,我们概述了如何在JS中用CSS能帮助减少应使用程序大小以及初次加载它所需的网络请求数量。尽管这种技术不是所有现代Web应使用程序性可以问题的灵丹妙药,但它会导致第一次渲染时间的显着缩短。
建材类营销型网站织梦模板
学校教育培训机构官网站PHP源码模板系统带后端带手机版网页正规
整套大厂成熟无刷电机FOC控制器解决方案教程实例源码学习资料
包你说小程序经营版赶紧来啦
【毕设】jsp793网络相册sqlserver毕业设计
淘客程序全自动采集版源码 v2017.3.11淘客程序全自动采集版源码
WordPress博客主题:Yusi1.0(扁平化+响应式)主题分享
【包更+包安装】Thinkphp大型游戏APP应用下载网 APP游戏推广平台 游戏攻略
asp.net c# 进销存管理系统源码 B/S 进销存源码,高端进销存源码
玻璃制品公司源码模板cms整站