[译] styled-components v3.1.0

[译] styled-components v3.1.0,第1张

一种新的 CSS 注入机制意味着在生产环境中更快的客户端渲染,同时流式服务器端渲染使得首字节时间(TTFB)更快。

CSS注入早就不是什么新鲜事了。早在一年半以前,Sunil Pai就发现了一个鲜为人知的DOM API: insertRule 。它使我们能用JS的方式把CSS快速注入到DOM当中。唯一的缺点是这些样式不能在浏览器的开发者工具中编辑。

当 Glen 和 Max 第一次写出styled-components的时候,他们完全是从开发者的体验出发的。对于小型应用来说性能问题还不明显,所以他们决定不再使用 insertRule 。但是当越来越多的人开始使用,并且使用在大型应用程序中时,样式注入就成了瓶颈,特别对于一些高度动态的案例来说。

多亏了 Reddit 的前端工程师 Ryan Schwers,styled-components 310版本在生产环境中默认使用 insertRule 。

我们将该版本与之前的版本(302)做了些对比,结果远超预期:

Mount的时间减少了将近10倍,而重新渲染的时间减少了将近20倍!

注意,这样的比较是基于压力测试,不一定适用于真实应用。可能你的应用渲染速度不一定能提升10倍,但是在我们的一个应用中,首次渲染时间减少了好几百毫秒。

下图是styled-components与其它一些主流的React CSS-in-JS框架的比较(淡红色是302版本,深红色是310版本):

尽管目前styled-components还不是最快的,但比最快的也慢不了多少,至少之前的瓶颈也已经不复存在了。这样的结果实在是鼓舞人心,我们也非常希望得到各位用户的反馈。

流式服务器端渲染的概念实在React V16中引进的。它允许React还在渲染的时候,服务端仍然能发送HTML,这使得首字节时间更快,并且Node服务器能更容易的处理背压(Back-pressure)。

这与 CSS-in-JS 不太搭:
通常,我们在React完成渲染后,将所有组件的样式放在 <style> 标签中,然后插入到 <head> 里面。而在流式情况下,在任何组件都没被渲染的时候, <head> 已经发送给用户了,这时候我们就无法插入任何东西了。

解决方案就是在渲染组件的时候,把HTML和样式混在一起,而不是等到最后,一次性的插入所有的组件。但是这样会使HTML和 style 标签都糅杂在一起,所以我们最后还是要在重注入(rehydration)之前把所有的 style 都合并到 head 里面。

我们已经实现了这一点,你现在可以同时使用流式服务器端渲染和styled-components。就像这样:

然后在客户端,我们必须调用 consolidateStreamedStyles() API来为React的重注入(rehydration)做准备:

waiting时间就是处理数据的时间 请求到达服务器 服务器根据请求内容去执行程序 神马引入文件 载入类什么的 都在这段时间内执行 得出结果后 反馈回来 尼玛~~~怪不得时间这么长 框架复杂度问题 越复杂的框架 请求时间越长 ZF、drupal惹的祸呀, 缓

前端开发最爽的地方就在于,一个编辑器,一个浏览器就足矣走天下。

编辑器——VSCode

前端开发利器,超级好用的编辑器,对于大前端来说更是不可多得。由微软出品,跨平台支持,颜值高,易上手,丰富的插件支持。下面推荐几个前端常用插件。

调试工具: 前端性能优化工具:

Yellow Lab Tools :一款Web性能及前端质量测试工具。与其他工具不同的是,它有一些在其他工具上无法看到的独特功能,例如页面加载时 JavaScript 与 DOM 互动和其他程序代码验证问题。

DOM monster :你只需要添加到你的浏览器书签中,在任何需要调试的页面点击这个书签,它就能够帮助你列出目前页面出现的性能问题。

前端开发是目前一个非常火的行业,就业前景和薪资水平都非常不错,至于开发工具的话,那就非常多了,大部分代码编辑器、IDE环境都支持,下面我简单介绍4个非常不错的前端开发工具,感兴趣的朋友可以尝试一下:

01 代码编辑器

这是目前前端开发一个非常流行的开发工具,在业界非常受欢迎,免费、开源、跨平台,由微软自主研发,可以说是良心产品,常见的智能补全、代码高亮、语法提示等功能这个软件都能很好支持,除此之外,插件扩展非常丰富,可以很好的进行代码编辑和调试,轻巧灵活,运行速度快,对于前端开发来说,是一个非常不错的选择:

这也是一个比较轻巧灵活的代码编辑器,文本编辑功能强大,完美支持3大 *** 作平台,但原则上不免费,和VS Code类似,Sublime Text也支持自动补全、语法提示、代码高亮等常见功能,除此之外,针对前段开发也提供了非常多的插件,不管是编辑还是调试代码来说,都非常方便,对于前端开发来说,也是一个不错的选择:

02 IDE环境

这是一个纯粹的国产Web IDE开发工具,目前在前端开发中也有着较高的使用率,常见的自动补全、代码高亮、语法提示、错误检查等功能这个软件都能很好兼容,除此之外,界面柔绿、清爽护眼,针对Vue专门打造了插件扩展,可以很好的提高开发效率,还支持安卓、iOS打包,对于前端开发来说,也是一个非常不错的工具:

这是一个非常专业的Web IDE开发工具,Jetbrains公司的产品,被誉为“Web前端开发神器”、“最智能的JavaScript IDE”,除了基本的智能补全、代码高亮、语法提示等常见功能,这个软件还支持代码分析与重构、 联想查询、 单元测试等高级功能,因此在开发效率上更高,也更适合大型项目,对于多人协作的前端开发来说,是一个非常不错的选择:

WebStorm

和idea同属于jetbrains公司开发的,它是旗下一款JavaScript开发工具,被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。

早起作为一个插件可以集成与Eclipse中来开发前端,现在已经独立出来,也是我最早接触js所使用的一款开发工具,如果熟悉了Eclipse快捷键的童鞋可以快速上手。


一款代码编辑器,借助丰富的插件资源,可以扩展成强大的前端开发工具,和IDE相比,属于一款轻量级的,启动特别快。


Atom

作为开源老大哥GitHub出的一款代码编辑器,和上面那个比较而言,插件略少,但和GitHub无缝结合,尤其是markdown编写,界面也很漂亮。

TextMate是Mac下的著名的文本编辑器软件,与BBedit一起并称苹果机上的emacs和vim。尤其适合程序员使用,可以定制许多贴心使用的功能。



Emacs即Editor MACroS(宏编辑器),是一种强大的文本编辑器。Emacs使用了Emacs Lisp这种有着极强扩展性的编程语言(它的核心是一个Emacs Lisp解释器),并实现了文本编辑支持等的扩展。

Notepad++是 Windows *** 作系统下的一套文本编辑器(软件版权许可证: GPL),有完整的中文化接口及支持多国语言编写的功能(UTF8 技术)。

VSC-VSCode

轻量快速,高颜值,社区开源,丰富扩展,微软支持

还有超好用的远程开发(vscode remote)和协作(live share)支持

HTML通常会和JavaScript、CSS同时出现。三者均是前端开发最常用到的。目前最常用到的HTML其实就是HTML5。常用的前端编程软件有HBuilder、Sublime Text等等。

HBuilder是一款免费的国产前端开发工具,编者用的就是HBuilder,对于小白和英语不太好的前端开发者这是一款难得的IDE。对代码自动补全方面简直是强大到没朋友。强力推荐。

Sublime Text是一个轻量级的编辑器,不端支持前端的html,js,css。还支持觉得多数的后端语言,比如C语言、java、python等。sublime text的强大之处是支持各种插件而且快捷键非常好用,可以极大的提高开发效率。缺点是代码提示方面不如Hbuilder。

很高兴能回答你的问题,作为一个后端开发,也曾经开发过前端,也用过很多前端开发工具。

1sublime text用着确实不错,但是代码开发提示不强,平时用着文本编辑器还是可以的。

2hbuild+用了一段时间各种不适用,最后就卸载了。

3vs code用着一段时间写vue,需要安装插件,而且提交代码用感觉不方便,把不想提交的最后提交了,导致代码冲突,也许是因为自己用不熟。

4webstorm 推荐使用,代码智能提示,而且提交代码方便。

无论是Python、Java、javascript,当我们选择一款开发工具时,很多人都会首先想到jetbrain全家桶,Webstorm、IDEA、Pycharm不得不说,jetbrain在开发工具方面真的是颇有心得、炉火纯青。

但是,如果做前端开发,我认为除了jetbrain的webstorm,还有很多选择,而其中我最为推荐的当属VS Code,下面就来介绍一下。

VS Code

微软在开发工具领域已经有了多年积淀,而VS Code有时微软结合了visual studio和其他开发工具,不断改进、优化推出的一款免费开发工具。

可以说VS Code是当下最为热门的开发工具之一,对比于eclipse、IDEA这些老牌开发工具,微软对于VS Code的改变更为大胆创新,已经处于领头羊的地位。每年微软开发者大会,都会对 VS Code进行大幅度的创新,经过多年的优化,VS Code已经让很多开发者爱不释手。

首先说一下它几个为人熟知的优点,

首先说一下轻量化,我觉得仅凭这一点,就足以让jetbrain全家桶汗颜。无论是webstorm、还是IDEA,最令人痛苦的就是打开过程,臃肿、漫长,加载工程项目和配置项需要多大几分钟,令人无法忍受。而VS Code则不同,它更像一个编辑器,能够秒级打开,速度堪比UE、notepad++这些文本编辑器。

其次说一下丰富插件,丰富的插件造就了VS Code完整的生态,“你想要的,这里都有”,无论是标签样式还是DEBUG或者功能增强,VS Code都有非常多热门的插件,使得你的开发效率大大提升,当然,前端需要的那些优质插件这里都有。

其实,让我转向VS Code并非上述这两点,而是 远程开发 。

我觉得这是微软大胆创新和引领者角色必然的产物,让很多其他开发工具很难望其项背。

有了VS Code远程开发功能,我们可以实时同步本地和服务器代码,不需要再去复杂的配置远程服务器,对于项目管理也非常方便。

WebStorm和PS

尤其PS,平时生活中也需要用到,挺方便的

喜欢用webstorm,atom和vs code,sublimetext都装了,几乎只用webstorm,atom界面是漂亮,也是我第一个下载安装的,装了各种插件,那时初学,感觉提示不全,还有就是插件安装了几个后开机明显变好慢,无奈下了webstorm,感觉很爽

Google PageSpeed Insights 可以为网站生成性能报告,它在移动设备和桌面设备上都是免费的。并且还给出了影响页面加载速度的原因,并为这些问题提供了解决方案。网站速度按照 100 分进行划分,其中:

2 Pingdom Website Speed Test

Pingdom Website Speed Test 可以全面分析影响页面Web速度的因素。此外,还可以查看网站在亚洲、欧洲等多个不同的地理位置的性能信息。

3 WebPagetest

WebPagetest是 AOL 开发的一款在线的免费性能评测网站,从全球多个地点运行免费网站速度测试。可以运行简单的测试或执行高级测试,包括多步骤事务、视频捕获、内容阻塞等等。还将依据测试结果提供丰富的诊断信息,包括资源加载瀑布图,页面速度优化检查和改进建议,会给每一项内容一个最终的评级。

4 GTmetrix

GTmetrix 是一个类似于 pingdom 的工具,可以快速轻松地测试网站速度。它主要有PageSpeed和YSlow两部分组成,并提供相应的得分数据,能够真实的反应出网站的性能,并且会提供可行性建议来帮助改善网站性能。

5 Keycdn Tool

Keycdn Tool 是一个在全球 10 不同地点的网站速度测试工具。它允许测试任何页面的性能。返回的结果将提供请求、内容大小和加载时间等详细信息。此外,还有一个完整的瀑布图,详细说明了每个资源的加载时间和 >

动态URL对搜索引擎的影响

现在的网站不同于以前,内容和数据量上相比大了许多,如果把大量的数据放在HTML页面去处理,是非常影响加载速度的,所以现在的网站大多都采用了数据库驱动生成的动态页面,服务器通过接收用户的请求,对数据进行整理,再交由程序进行页面的生成,而生成的这个页面并不是一直存在于服务器上的,只是实时生成的内容。因此,动态页面所对应的URL也称为动态URL,一般由各种参数和符号组成,包含等号、问号及相关参数,如下:

>

这是一段动态URL除了>

搜索引擎在早期鼓励站长使用静态URL,主要是因为当时的搜索引擎算法还不够精细,爬虫爬行也没有完全智能化,一段充满参数和符号的动态URL很容易让搜索引擎爬虫陷入无限循环,造成大量资源上的浪费。最常见的就是以前站长都喜欢在自己的网站上放上万年历,搜索引擎在碰到万年历之后,如果一直跟踪链接,不断点击下一个月,下一年,下一日,将会陷入无穷无尽的死循环中。虽然作为用户一眼就能看出来这是个万年历,但是作为搜索引擎,看到的只是一串代码,并不能判断出这段代码真实的用途和性质。

其次,从SEO角度而言,动态URL中的参数搭配很容易产生大量重复页面,如下:

>

>

>

这三个URL所展示的页面是完全相同的,区别无非是猫叫咪,咪叫猫。比如第一个URL是42码的鞋子白色,第二个是鞋子42码的白色,第三个是白色42码的鞋子,本身展示的内容是一样的,但是因为后面的参数顺序发生了变化,这就导致产生了三个不同的URL,至少对搜索引擎而言是不同的。

如果参数再多一些,那这样的参数组合还能有上万上千种,但是对于搜索引擎和用户而言,它只是一个页面,所以是没有价值的,因为担心资源的浪费,搜索引擎对动态URL是抱有敬而远之的态度的。

百度SEO建议要想让网站得到搜索引擎的青睐,页面得到收录,之前我们说过,首先要做的就是对搜索引擎好一点,不要给它制造任何阻碍,最好可以夹道欢迎?开个玩笑。

URL静态化

怎样静态化URL

URL的静态化现在已经被大多数CMS系统和服务器所重视,一般在服务器端做URL静态化,是通过LAMP服务器的mod_rewrite模块或者Windows服务器的ISAPI REWRITE模块。(具体方法我就不细说了,各位可以自行百度一下,我个人是使用的WP系统里的固定链接和Custom Permalinks插件,所以对怎样做静态化URL没有做深入的研究)

使用这种方法做的静态URL,严格来说应该称为“伪静态”,服务器本身是不存在HTML文件的,还是在用户访问时动态生成了页面,唯一不同的就是对布满参数和符号的URL做了“伪装”。(现在也有CMS系统可以对动态页面进行真正的静态化,通过功能实现,把动态页面生成为静态,并放置在服务器上,织梦的CMS就有相关的功能)对搜索引擎而言,真正的静态和伪静态在抓取上没有区别,不过静态页面不需要服务器做数据处理,直接交给客户端去显示就可以了,这样一来,TTFB时间减少,页面加载速度也会有所提升。(类似于网页缓存功能)

URL不需要静态化了吗

搜索引擎算法更新改善,动态URL的抓取已经不是问题,蜘蛛陷阱可能也完全可以克服。但是这些只是猜测,除了Google,没有搜索引擎鼓励站长使用动态URL,所以我还是建议能静态就静态。毕竟抛开搜索引擎不说,静态URL对用户体验也是有帮助的。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13450118.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-09
下一篇 2023-08-09

发表评论

登录后才能评论

评论列表(0条)

保存