前端攻略-从路人甲到英雄无敌

记得那年,我初学前端,遇见了很多的文章,在浩瀚的知识海洋里我手足无措,不知从何开始。己所不欲,勿施于人。这篇文章就会帮你去遨游前端学习的海洋,主要包含了在我之前的学习过程中整理的一些资源和一些感悟。我打算将整篇文章切分为两部分,第一部分重温HTML与CSS的基本知识,第二部分概括JavaScript、前端框架与设计模式。

HTML 与 CSS基础

前端的领域里,任何东西都离不开HTMLCSS。HTML与CSS基本上控制了你看到的所有东西,HTML用来定义内容而CSS负责样式与布局。

首先从HTML 以及 CSS 开始,这里推荐的是MDN的官方指南。MDN对于重要的HTML与CSS内容进行了详细条理的阐述,除此之外,每一章都是单独的一页,提供了在CodePen与JSFiddle展示的Demo。

看完了这些基础教程之后,可以来看看由CodeAcademy提供的tMake a Website系列课程。这个课程只要几个小时就能看完,如果你想要更多的锻炼,可以瞅瞅CSS Diner,这是一个CSS挑战的小游戏。

最后,可以看看怎么使用 Google Fonts,参考下 CSSTricks出的Basics of Google Font API

国内用不了Google Fonts的话可以参考下FontAwesome,如果你要用中文字体的话建议参考FontSpider,请自行Github搜索。

Typography--排版也是个构建界面时候很重要的部分,有时间的话推荐你看看Donny Truong写的Professional Web Typography这本书,它会教你基本上关于排版的所有东西。在学习这些的时候不要太担心自己会忘了,反正记不住。你应该着重于记录这些并且理解HTML和CSS是怎么工作的。

Practicing HTML and CSS Basics

到这里你应该已经明白了HTML与CSS的基本使用,下面我们要学以致用了。这一部分就设计了两个小实验来让你自己动手构建网站与界面。我是把它们形容成实验,所以不要害怕失败。

第一个实验里,我们用的是CodePen,一个在线的HTML与CSS实验台。同时也提供了实时预览功能,一石二鸟呦。好了,下面我们要看看我们做的界面的原型了,转到 Dribbble吧, 这嘎达可全是设计创意啊。
我是看上了这个系列:1, 2, 3, 4, 以及 5.。我选择了一个移动优先的设计是因为与桌面设计相比更简单一点,不过你也可以自己找一个。

在你选定了设计之后,就可以在CodePen上面开始动手了。你也可以看看其他人设计的Pen: pens on CodePen点击预览. 另外,别忘了StackOverflow ,这可是你的小伙伴呦。如果你最后实现的东西跟设计相去甚远,也不要灰心,不断尝试总会提高的。

Experiment 2

经过实验一估计你已经有点自信了,在实验二里面我们将会先借鉴一些大公司的经典站点。有不少站点会用一些CSS框架或者混淆它们的CSS类名,这会让源代码的阅读比较麻烦,这嘎达我列举了几个源代码可读性比较好的:

  • Dropbox for Business: Try replicating their hero section

  • AirBnB: Try replicating their footer

  • PayPal: Try replicating their navigation bar

  • Invision: Try replicating their signup section at the bottom of the page

  • Stripe: Try replicating their payments section

再次强调下,实验二的目的并不是让你去重构整个页面,而是知道怎么去分割组件以及人家是怎么做的。如果你没有设计的背景,可能你要好好发掘下你的潜能了。一个优秀的前端开发者要能够辨别好的设计然后完美地重现它们。

你可以选择在线编程:CodePen 或者直接本地开发。如果你选择本地做,那你可以使用这个 模板项目 。我推荐是使用Atom 或者Sublime这样的编辑器。另外,对于Firefox或者Chrome自带的控制台与开发者工具也要好好瞅瞅。

HTML and CSS Best Practices

好了,现在你已经能够用HTML与CSS做一些简单的事情了,下面就要看看所谓的最佳实践了。最佳实践实际上就是一系列的在日常开发中总结出来的约定俗成的规范的集合,来让你更快地开发与构建更高质量的代码。

Semantic Markup:语义标记
HTML与CSS最佳实践中重要的一条就是怎么来写出有语义可读性的标记。好的语义即是你使用了合适的HTML标签与CSS的类名来传达出你想表达的结构含义。
譬如 h1 标签会告诉我们里面包裹的是一些很重要的标题信息,另一个例子就是*footer *标签,会直截了当地跟你说,这里面是包含一些页脚信息。建议你阅读 A Look Into Proper HTML5 Semantics 以及CSSTricks的 What Makes For a Semantic Class Name

CSS Naming Conventions

下面一个比较重要的事情就是怎么给你的CSS定一个合适的类名。好的命名习惯,譬如语义化的标记,可以更好地传达含义,让代码的可读性与可维护性大大增加。

总体来说,我的建议是跟着你的直觉来确定命名习惯,随着时间的发展你会觉得这样看上去很舒服。如果你要看看大公司,譬如Medium是怎么实践BEM这样的命名规范的,可以阅读 Medium’s CSS is actually pretty f***ing good这篇文章,在这里你会学到怎么在一个快速迭代地情况下也维护你的有效地CSS命名习惯。

CSS Reset

不同的浏览器在譬如margin以及line-height这些小的样式点之间存在着一些不一致性,因此你要学会重置你的CSS环境。 MeyerWeb 就是一个常见的重置手段。

Cross Browser Support

跨浏览器支持意味着你的代码要去支持绝大部分的现代浏览器,一些常见的CSS属性,譬如 transition 需要 vendor prefixes 来运行在不同的浏览器中。你可以在 CSS Vendor Prefixes这篇文章里获取更多的知识。这就意味着你需要花费更多的时间来在不同的浏览器之间进行测试。

翻开CSS的历史,自90年代以来,CSS走过了一段漫长而崎岖的道路。整个UI系统变得日益繁复,人们也会去选择使用一些预处理器或者后处理器来管理这种复杂性。CSS的预处理器或者CSS语言的扩展会在无声无息之间提供类似于变量、Mixins以及继承这些特性。最主要的两个CSS的预处理器就是SassLess。2016年中Sass被越发广泛地使用,著名的响应式框架BootStrap就是从Less迁移到了Sass。另外,很多人谈到SASS的时候也会提到Scss。

CSS后处理器则对于手写的CSS文件或者经过预编译的CSS文件进行一些处理,以著名的PostCSS 为例,它有一个插件可以帮你自动地添加一些渲染前缀。
当你接触过CSS的预处理与后处理器之后,你会把它们提升到日常伴侣的。不过,过犹不及,像变量和Mixins这些特性不能滥用啊,还是应该在合适的地方使用。

Grid Systems and Responsiveness

网格系统即是用来水平或者垂直地排布元素的CSS架构。

著名的网格框架有Bootstrap, Skeleton, 以及 Foundation,它们提供了用于在布局中进行行列管理的样式表。这些框架用起来很方便,不过我们也是要理解网格的工作原理,推荐看Understanding CSS Grid Systems 以及 Don’t Overthink Grids

网格系统另一个目标就是是你的网站具有响应式特性。响应式意味着你的网站可以根据屏幕的大小来动态调整你网站大小与布局。很多时候这个响应式特性都是基于CSS media queries, 即根据不同的屏幕大小选用不同的CSS样式规则。

另外,因为我们正在进行一场所谓mobile-first变革,推荐你看下An Introduction to Mobile-First Media Queries

Practicing HTML and CSS Best Practices

恭喜道友,筑基成功,你已经能够了解一些关于HTML与CSS的最佳实践了,下面又到了学以致用的时间。这里的两个实验主要是让你锻炼下编写整洁的代码和保证长期的可读性与可维护性。

Experiment 3
实验3中,你需要选一个你之前自己做的项目并且用上文中提及的最佳实践去重构它们,从而保证你的代码更易读并且更简洁。掌握如何有效地重构代码是前端开发者的一个重要技能。当然,写出高质量的代码并非一蹴而就,而是需要一个长期的迭代过程,CSS Architectures: Refactor Your CSS这篇文章就是一个不错的学习起点。

当你决定要重构代码之前,你要先扪心自问以下几点:

  • 你的类名定义是不是模糊不清的,6个月之后你还能否明白你类名的意义。

  • 你的HTML与CSS是否足够语义化,一眼望去是否就能明白你的代码架构与关系意义?

  • 你是否N次的重复使用了相同的颜色代码,别忘了可以用Sass variable

  • 你的代码是否能够在Safari与Chrome都能正常运行?

  • 能否用像Skeleton这样的网格框架来代替你自己的布局?

  • 你是不是经常使用了!important
    ?

Experiment 4
最后一个实验是一个大杂烩,把前面讲的所有知识都混杂起来。不过要知道的是,上面讲的很多最佳实践在一个草稿或者小型项目里难见分晓,只有在大项目里才能显露峥嵘。
因此,最后一个项目我是建议建立一个自己的作品剪辑网站,作为一个前端开发者,个人网站就是自己的电子名片。这里会展示你的作品与项目的积累,也是一个回溯你发展的进程与开发履历的地方。

可以参考Adham Dannaway的文章 My (Simple) Workflow To Design And Develop A Portfolio Website来从零开始。
Stay current
当HTML与CSS已经是小菜一碟,你就算是进入了前端开发者的殿堂,一个不断发生改变的地方。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,194评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,058评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,780评论 0 346
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,388评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,430评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,764评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,907评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,679评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,122评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,459评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,605评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,270评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,867评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,734评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,961评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,297评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,472评论 2 348

推荐阅读更多精彩内容