大家好,关于网站源码分享大全软件推荐很多朋友都还不太明白,今天小编就来为大家分享关于网站源码 免费下载的知识,希望对各位有所帮助!
本文最初发布于CSS-Tricks博客,由InfoQ中文站翻译并分享。
过去几周,我一直在为我的家具租赁公司Pabio招聘一名高级全栈JavaScript工程师。由于是一个远程团队,面试是在Zoom上进行的。根据我的观察,部分开发人员不擅长现场编码或白板面试,即使他们对这项工作很在行。所以取而代之,我们会进行一小时的技术讨论,我会问他们关于WebVitals、可访问性、浏览器战争以及其他类似Web话题的问题。我很喜欢问的一个问题是:“解释一下Twitter源代码的前十几行”。
我认为这是一个很简单的测试,可以借此了解应聘者对前端基础知识的掌握程度。本文列出了这个问题的最佳答案。
我打开Twitter.com,点击查看源代码并分享我的屏幕,然后要求他们逐行进行解释,他们想说多少就说多少。我放大了文本,使其更加清晰,所以你看不到整行的内容,不过可以大概有个了解,如下所示:
注意,既然我们的技术讨论是一种谈话,所以我并不期望任何人能给出完美答案。只要听到一些正确的关键词,我就知道应聘者了解这个概念,我就会试着把他们引向正确的方向。
第1行:<!DOCTYPEhtml>
每个源代码文档的第一行都非常适合这个面试,因为应聘者对DOCTYPE声明的了解程度与他们的工作年限密切相关。我仍然记得,在Dreamweaver时代,XHTMLDOCTYPE行很长,就像2009年Chris在文章“常见DOCTYPE”中所写的那样。
最佳答案:这是文档类型(doc-type)声明,我们总是把它放在HTML文件的第一行。你可能认为这些信息是多余的,因为浏览器已经知道响应的MIME类型是text/html;但在Netscape/InternetExplorer时代,浏览器要从多个相互竞争的版本中找出要使用哪个HTML标准来渲染页面,这是一项困难的任务。
这一点尤其令人讨厌,因为每个标准都会产生不同的布局,所以采用这个标签是为了让浏览器更容易判断。以前,DOCTYPE标签很长,甚至包括规范链接(有点像现在的SVG),但幸运的是,<!doctypehtml>在HTML5中得到了标准化,延续了下来。
也可接受:DOCTYPE标签告诉浏览器这是一个HTML5页面,应该这样渲染。
第2行:<htmldir=&34;lang=&34;>
这一行代码可以告诉我应聘者是否了解可访问性和本地化的问题。令人惊讶的是,在我的面试中,只有少数人知道dir属性,但这是讨论屏幕阅读器的一个很好的切入点。几乎每个人都能说清楚lang=&34;属性,即使他们以前没有用过。
最佳答案:这是HTML文档的根元素,其他所有元素都包在这个元素里。它有两个属性:方向和语言。方向属性的值是从左到右,它告诉浏览器代理内容方向;另一个值是从右到左,适用于阿拉伯语等语言,或者是auto,让浏览器自己来决定。
语言属性告诉我们,这个标签里的所有内容都是英文的;你可以把这个值设置为任何语言,甚至可以区分en-us和en-gb。这对屏幕阅读器来说也很有用,可以知道用哪种语言来播音。
第3行:<metacharset=&34;>
最佳答案:源代码中的元标签用来提供关于这个文件的元数据。字符集(char-set)属性告诉浏览器要使用哪种字符编码,而Twitter使用的是标准的UTF-8编码。UTF-8很好,因为它有很多字符代码点,所以你可以在源代码中使用各种符号和表情。把这个标签放在代码开头附近,这很重要,这样浏览器就不会在遇到这一行之前解析太多的文本;我觉得可以定个这样的规则,就是把它放在文档的前1000个字节里,但我认为最好的做法是把它放在<head>的正上方。
顺便提一下,Twitter似乎是出于性能方面的考虑(加载的代码较少)省略了<head>标签,但我还是喜欢明确定义,因为它是所有元数据、样式等的大本营。
第4行:<metaname=&34;content=&34;og:site_name&34;Twitt…
大约50%的应聘者知道OpenGraph标签,如果他们这个问题回答得比较好,就表明他们了解SEO。
最佳答案:这个标签是网站名称Twitter的OpenGraph(OG)元标签。OpenGraph协议是由Facebook制定的,目的是使链接更容易打开,并在一个漂亮的卡片布局中显示预览;开发者可以添加各种著作权详情和封面图片,实现花式分享。而事实上,使用Puppeteer之类的东西自动生成OpenGraph图片,现在也很常见。(CSS-Tricks使用了一个WordPress插件来做到这一点。)
另外提一个比较有趣的点,元标签通常具有name属性,但OG使用非标准的property属性。我猜这只是Facebook的特色。标题、URL和描述OpenGraph标签有点多余,因为我们已经有了这些常规的元标签,人们添加它们只是为了安全。现在的大多数网站都搭配使用OpenGraph和其他元标签以及页面上的内容来生成丰富多彩的预览。
第6行:<metaname=&34;cont…
大多数应聘者都不知道这个,但有经验的开发者可以谈下如何针对苹果设备优化网站,比如apple-touch-icon和Safari固定标签SVG。
最佳答案:你可以将网站固定在iPhone主屏幕上,让它感觉像一个原生应用程序。Safari不支持渐进式Web应用,你也无法在iOS上使用其他浏览器引擎,所以如果你想要类似于原生的体验,真的没有其他选择,当然,Twitter是喜欢这种体验的。所以他们添加了这个,告诉Safari这个应用的标题是Twitter。下一行类似,控制应用程序启动后状态栏如何显示。
第8行:<metaname=&34;content=&ffffff&34;origin-trial&34;…
我面试过的人都不知道这个。我想,只有对标准化阶段发生的所有新鲜事都有深入的了解时,才会知道这个。
最佳答案:起源试验让我们可以在网站上使用实验性的新特性,跟踪用户代理反馈,并报告给Web标准社区,而无需用户选择加入一个特性标识。例如,Edge有一个针对双屏和可折叠设备基元的起源试验,这非常酷,因为你可以根据可折叠手机是打开还是关闭来设置有趣的布局。
也可接受:这个我不知道。
第10行:html{-ms-text-size-adjust:100%;-webkit-text…
几乎没有人知道这一行;只有了解CSS的边缘情况和优化时,才能看懂这一行。
最佳答案:想象一下,如果没有一个移动端响应式站点,那么当你在一个小屏幕上打开时,浏览器可能会调大字体,以方便阅读。CSS的text-size-adjust属性可以用none值禁用,也可以指定一个百分比,允许浏览器调大字体。
在这种情况下,Twitter设置的最大比例是100%,所以文本不会大于实际尺寸;他们这样做是因为他们的网站已经是响应式的,他们不想冒因浏览器调大字体而破坏布局的风险。它作用于根HTML标签,所以它作用于根标签中的所有内容。由于这是一个实验性的CSS属性,所以需要供应商前缀。另外,这行CSS代码之前少了<style>,但我猜这是在前一行去掉的,所以我们没有看到。
也可接受:我不特别了解这个属性,但-ms和-webkit-是非标准属性的供应商前缀,分别针对基于InternetExplorer和WebKit的浏览器。在CSS3刚推出时,我们需要这些前缀,但当属性从实验变为稳定或被采纳到标准中时,这些前缀就消失了,人们转而采用标准化的属性。
意外收获——第11行:body{margin:0;}
Twitter源代码中的这一行特别有趣,因为你可以跟进一个问题,即网页重置和规范化之间有什么区别。几乎每个人都有一个版本的正确答案。
最佳答案:不同浏览器有不同的默认样式(用户代理样式表),而你希望通过重置属性来覆盖它们,使得网站在不同的设备上看起来都一样。在这种情况下,Twitter就告诉浏览器删除body标签的默认边距。这只是为了降低浏览器的不一致性,但我更喜欢将样式规范化,而不是重置它们,也就是说,在不同的浏览器上应用相同的默认值,而不是完全删除它们。人们甚至曾经使用*{margin:0},这完全是矫枉过正,对性能并不好,但现在,常见的方式是导入normalize.css或reset.css之类的东西(甚至是更新的东西)并在此基础上进行设计。
更多有趣的代码
我一直很喜欢玩浏览器的检查器工具,看一看网站是如何制作的,我就是因为这个想出了这样的面试方法。尽管我自认为算是语义HTML方面的专家,但每次这样做时我都会学到一些新东西。
因为Twitter主要是一个客户端React应用,所以源代码只有几十行。即使这样还是有很多东西可以学!在Twitter的源代码中,还有一些更有趣的行,我留给读者做练习。你能在面试中解释其中的多少个?
<linkrel=&34;type=&34;href=&34;title=&34;>
…告诉浏览器用户可以将Twitter添加为一个搜索引擎。
<linkrel=&34;as=&34;crossorigin=&34;href=&34;nonce=&34;/>
…有许多有趣的属性可供讨论,尤其是nonce。
<linkrel=&34;hreflang=&34;href=&34;/>
…针对国际登录页。
:focus:not([data-focusvisible-polyfill]){outline:none;}
…在不使用键盘导航时移除焦点轮廓(这里的:focus-visible选择器是CSS增强插件)。
了解更多软件开发与相关领域知识,点击访问InfoQ官网:https://www.infoq.cn/,获取更多精彩内容!
文章到此结束,如果本次分享的网站源码分享大全软件推荐和网站源码 免费下载的问题解决了您的问题,那么我们由衷的感到高兴!