做网站用什么源码分享最好,有了网站源码 怎么制作一个网站

很多朋友对于做网站用什么源码分享最好和有了网站源码 怎么制作一个网站不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

本文最初发布于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/,获取更多精彩内容!

关于做网站用什么源码分享最好的内容到此结束,希望对大家有所帮助。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平