零基础的前端开发初学者应如何系统地学习?

网站开发开发大致分为前端和后端,前端主要负责实现视觉和交互效果,以及与服务器通信,完成业务逻辑。其核心价值在于对用户体验的追求。可以按如下思路学习系统学习:

基础知识:

  1. html css 这部分建议在 w3school 在线教程上学习,边学边练,每章后还有小测试。 之后可以模仿一些网站做些页面。
  2. javascript 要学的内容实在很多,如果没有其他编程语言的基础的话,学起来可能要费些力,还是建议先在 w3school上学习。之后建议马上看《javascript语言精粹》,js是一门很混乱的语言,这本书能够帮助你区分哪些是语言的精华,哪些是糟粕,对于语言精华,应该深入学习。糟粕部分能看懂别人写的代码就行,自己就不用尝试了。

对于习惯看视频学习的同学,以上内容也可以在 慕课网-国内最大的IT技能学习平台 上学习。虽然我没用过,但好几位同学推荐过了,大概看了下,内容还不错。

进阶:

有了以上基础,就可以进行一般的静态网页设计,不过对于复杂的页面还需要进一步学习。

  1. css。截至今日(2015.12.08),天猫、淘宝、支付宝都已停止对ie6,7的支持,未来相信大多数网站都会停止对ie6,7的支持,ie8的市场份额也不像两年前那么高了(天猫即将停止对IE8的支持,2016.12.13),webkit内核已成为市场主流。对于css的学习,我推荐分三块:“基础概念”,“css2.1规范”,“css3规范”。必看 精通CSS(第2版) (豆瓣),看完这本书你应该对:盒子模型,流动,block,inline,层叠,样式优先级,等概念非常了解了。这本确实有些年头了,但基础概念部分讲述非常清晰,可以称之为经典。ie6,7相关的内容可以不看。css3的部分可以参考:CSS3实用指南 (豆瓣)。这本书同样有些老,只是最新出版的书中没发现有特别好的。

  2. javascript。上面提到内容还不足以让你胜任js编程。在有了基础之后,进一步学习内容包括:

a) 框架。推荐 zepto,简单易用,在w3school简单学习js后,直接上手 zepto 即可完成一些简单的项目。zepto 源码简单清晰,也适合新手阅读。补充: 可以使用 codecademy 学习 javascript,zepto,用户体验真的很好(感谢 TonyOuyang )。最近比较热门的框架是React, VUE, Angular这些, 根据需要稍作了解即可。随着ie浏览器市场份额的下降,以及移动端的发展,标准原生js已经可以在实际项目中使用(目前还需要借助es5shim、babel等),重点还是ES5, ES6, ES7。

b) javascript语言范式 。这个名字可能并不恰当,只是我找不到可以描述“面向对象”,“函数式”这个两个概念的概念。javascript不完全是一个面向对象的语言,它的很多设计理念都有函数编程语言的影子,甚至说如果你不用面向对象,完全可以把它理解成一门函数式编程语言。javascript的很多语言特性,都是因为他具有函数式语言的特点才存在的。这部分推荐先学习面向对象的基本理论,对封装,继承,多态等概念要理解,维基百科,百度百科会是你的帮手,另外推荐《object oriented javascript》,应该有中文版。对与函数式编程可以参考这篇文章:JavaScript 中的函数式编程实践

c) javascript语言内部机制。必须弄清如下概念:js中变量的作用域,变量传递方式,函数的定义环境与执行环境,闭包,函数的四种调用方式(一般函数,对象的方法,apply,call),以及四种调用方式下,‘this’指向的是谁。这部分内容你会在《javascript语言精粹》中详细了解。

d) dom编程,这个web前端工程师的核心技能之一。必读《dom编程艺术》,另外《高性能javascript》这本书中关于dom编程的部分讲的也很好。

e) ajax编程,这是另一核心技术。ajax建议在网上查些资料,了解这个概念的来龙去脉,百度百科,维基百科上的内容就足够了。真正编程是很容易的,如今几乎所有框架都对ajax有良好的封装,编程并不复杂。另外,ajax未来几年会被 Fetch Standard 取代,也需要了解。另外关于xhr2,cors(跨站资源共享),formData文件上传,也需要了解。

f) es5, es6。现在开发js大部分基于es5的,ie8以下通过es5-shim。但利用一些工具,现在已经可以直接写es6代码了,尤其在reactjs,nodejs类型的项目中。对于从es5,es6每个阶段js发生了哪些变化都需要系统学习,学习顺序建议是 JavaScript基础 -> es5 -> es6,越靠前的越重要。一些参考链接:ECMAScript 5 compatibility tableECMAScript 6入门ES5 « 张鑫旭

  1. html5。需要了解html都提供了哪些api,然后项目中用起来。这部分没有什么难理解的,关键在于能用html5解决业务问题,以及不支持html5的浏览器的降级方案。这部分体现了前端的一个思想:面向未来编程,尽早将新技术引入业务中来,而不是过分考虑兼容性问题,进而导致面向过去编程。

再进一阶 · 代码层面: 
有了以上知识,对于大多数小型网站,你应该已经可以写出能够工作的代码了。但要想成为更专业的前端,你还需继续努力。更高的要求大概还有四方面:1易维护,2可测试,3高性能,4低流量(移动端)。 
1. 易维护。对于页面你该理解‘样式’,‘数据’,‘行为’三者分离,对应的当然就是css,html,js。对于js代码,你最好了解设计模式,重构,MVC等内容。 
2. 可测性。就是保证你的代码能沟通单元测试100%覆盖到所有分支 
3. 高性能。必读《高性能javascript》 
4. 低流量。移动端关注比较多,PC端现在可以不用太关注了

再进一阶 · 工程层面: 
前端项目同样面临软件生命周期的各个环节,首先是代码管理,你必须学会使用svn和git。其次是代码的构建,如今前端代码构建已经不是简单的压缩一下了,需要进行依赖管理、模块合并、各种编译,必须要学会使用grunt、gulp、webpack、rollup等前端构建工具,以及前端模块管理的方式,amd,cmd,es6 module 等等。

然后呢? 
以上内容只是简单说了前端学习的顺序。前端工程师应该有的知识结构请参考这里:JacksonTian/fks · GitHub

补充: 
对于前段开发,基本内容就这些了,可以根据自己的兴趣爱好选择性学习以下内容。 
1. 交互设计。大公司依然有专业人士搞这些,不过不懂交互的前端一定不是好前端。推荐《简约至上》。 
2. 后端。应该说前段工程师必须至少了解一门后端语言,不过如果爱好也可深入学习,入手难度比较低的应该是php了。这部分由可分为基于页面,基于框架两种。大型项目都是基于框架开发的,建议至少了解一个MVC框架,比如php的ci, yii, yaf 等,好还框架的设计思想都大同小异。如今NodeJs在大公司已经得到普遍的使用,推荐大家使用在Node上使用Koa框架做一些后端服务的开发。 
3. Android和ios开发。时至今日,前端的工作领域已经非常广泛,native的界面开发本质上也是前端开发,个大公司都面临着Native环境和web环境页面同时维护的问题,如果能够在技术上得到统一,将会有巨大的价值。对于学有余力的同学,应该了解Native开发的基本流程,至少了解到界面构建的技术。 
4. 如果你能够认真看到这里,说明你对前端有真爱,最后说一个编程习惯的问题,绝对是保你工作平安,少出故障。代码提交前必须做的三个事情:A. git diff(svn diff),检查所有变更;B. 跑一边单元测试;C. 手动运行一遍所有demo.

【我有一个前端学习交流QQ群:328058344  如果你在学习前端的过程中遇到什么问题,欢迎来我的QQ群提问,群里每天还会更新一些学习资源。禁止闲聊,非喜勿进。】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/369217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《大道至简》第一章读后感(java伪代码形式编写)

public class DaDaoZhiJianDiYiDuan { //一.愚公移山 //问题:怎样把山移完 //愚公移山是一个项目 if(愚公死) { 有子存焉; while(山不平) { 子又生孙,孙又生子; 子去移山; } } else 愚公移山&am…

在Oracle Cloud上的Prime-UI,JAX-RS和Jersey和Gson

如今,Oracle云无处不在。 最初,拉里(Larry)否认在很长一段时间内都需要云,并且在去年的开放世界(Open World)之后就宣布了一些非常早期的公告,而且可用性很差,似乎没有人…

【RabbitMQ】2、心得总结,资料汇总

Spring AMQP中文文档 http://ju.outofmemory.cn/entry/320538 云栖社区 https://yq.aliyun.com/search?qrabbitmq&typeARTICLE RabbitMQ-JAVA常见报错信息 , https://yq.aliyun.com/articles/175024CentOS7环境下安装RabbitMQ, http://t.cn/RCtr…

推荐20个很有帮助的 Web 前端开发教程

在平常的搜索中,我碰到过很多有趣的信息,应用程序和文档,我把它们整理在下面这个列表。这是收藏的遇到的有用内容的一个伟大的方式,可以在你需要的时候方便查阅。相信你会在这个列表中发现对你很有用的资料。 1. CSS Vocabulary 一…

Scrapy爬虫框架解析

Scrapy框架解析Scrapy框架大致包括以下几个组件:Scrapy Engine、Spiders、Scheduler、Item Pipeline、Downloader;组件Scrapy Engine这是框架的核心,负责控制数据流在整个系统的各个组件间的流动过程,并且在特定动作发生时触发相应…

Couchbase 2.0归类视图简介

大多数应用程序必须处理“主/详细”类型的数据: 啤酒厂和啤酒 部门和员工 发票和项目 … 例如,这对于创建如下应用程序视图是必需的: 借助Couchbase和许多面向文档的数据库,您可以采用不同的方式来处理此问题,您…

(转)利用WPF的ListView进行大数据量异步加载

原文:http://www.cnblogs.com/scy251147/archive/2012/01/08/2305319.html 由于之前利用Winform的ListView进行大数据量加载的时候,诟病良多,所以今天试着用WPF的ListView来做了一下,结果没有让我失望,我将一个拥有430…

Css3新属性:calc()

一、前言 calc()看起来像是javascript中的一个函数,而事实上它是用在Css中的,可以用它来计算长度(宽度或高度),能够自动根据不同尺寸的屏幕自动调接数值,从而很轻松的实现自适应布局展示在不同尺寸屏幕下。项目中常常碰…

有关循环和判断的几个小问题

注意在while嵌套的if语句之外,还有一个cin>>n;因为刚刚没有这一部分的时候,执行的结果是这样的: 把while里面的cin>>n;注释掉了之后,在cmd里执行的时候,只能输入数字,但是没有任何的反应。 但其…

PHP7 学习笔记(五)安装event扩展(libevent)

一、描述:有效安排I/O,时间和信号的扩展 使用可用于特定平台的最佳I/O通知机制的事件,是PHP基础设施的libevent端口。 二、下载地址:http://pecl.php.net/package/event 三、安装支持库libevent,需要编译高版本(这里以…

DeferredResult – Spring MVC中的异步处理

DeferredResult是一个可能尚未完成的计算的容器,它将在将来提供。 Spring MVC使用它来表示异步计算,并利用Servlet 3.0 AsyncContext异步请求处理。 简要介绍一下它是如何工作的: RequestMapping("/") ResponseBody public Deferr…

简单的GTK窗体搭建

#include<gtk/gtk.h> //必须引用gtk/gtk.h这个头文件2 int main(int argc,char *argv[]) //标准c语言主函数的声明3 {4 GtkWidget *window; //声明一个窗口控件的指针&#xff0c;其中GtkWidget是…

有关输出图形的代码,我觉得好难啊,好蒙啊。

这里的代码其实没看懂过&#xff0c;自己看到书上这一题的时候也是挺蒙的&#xff0c;压根不知道要怎么下手&#xff0c;照着书上把代码打进去之后也不清楚原理&#xff0c;可怕的是&#xff0c;反反复复对着答案敲了几遍代码&#xff0c;执行结果还是这样的&#xff0c;和课本…

《Web前端开发修炼之道》-读书笔记CSS部分

如何组织CSS-分层 应用 css 的能力分两部分&#xff1a;一部分是css的API&#xff0c;重点是如何用css控制页面内元素的样式&#xff1b;另一部分是css框架&#xff0c;重点是如何对 css 进行组织。如何组织 css 可以有多种角度&#xff0c;例如按功能划分&#xff0c;或者按区…

Windows环境变量的应用

设置环境变量快速打开程序 如果你对桌面上密密麻麻的文件感到烦恼&#xff0c;那么下面的方法可以帮到你。 Step 1 在硬盘的某个位置添加一个文件夹&#xff0c;把你经常用的程序的快捷方式放进这个文件夹&#xff0c;快捷方式重命名最好简单易记&#xff0c;如图 注意 快捷方式…

mysql 备份数据库_mysql数据库备份

前一段时间因为误操作删除了一张表的几条数据&#xff0c;弄得很尴尬&#xff0c;正好这周有空就折腾了下数据备份的知识&#xff0c;现把mysql的数据备份相关实践和心得总结如下&#xff1a;一.使用mysqldump命令备份数据库&#xff1a;备份整个数据库(包括表结构和数据),用法…

JavaScript:Browser 对象

ylbtech-JavaScript&#xff1a;Browser 对象1. Window 对象返回顶部 1、Window 对象 Window 对象 Window 对象表示浏览器中打开的窗口。 如果文档包含框架&#xff08;<frame> 或 <iframe> 标签&#xff09;&#xff0c;浏览器会为 HTML 文档创建一个 window 对象…

使用Apache KeyedObjectPool的ssh连接池

我发现org.apache.commons.pool非常有用且健壮&#xff0c;但没有充分记录。 因此&#xff0c;我将在这里帮助您解释如何使用Apache KeyedObjectPool 。 什么是KeyedObjectPool &#xff1f; 它是一个映射&#xff0c;其中包含多种类型的实例池。 可以使用任意键访问每种类型。…

c语言怎么输入有空格的字符串

c语言怎么输入有空格的字符串 https://blog.csdn.net/qq_44752641/article/details/106118698 采用fgets输入可以识别空格,如输入hello world&#xff0c;输出hello world char str[50]; printf("输入一段字符串&#xff1a;"); fgets(str,50,stdin);若采用scanf&…

深入理解line-height与vertical-align——前端布局常用属性

line-height、font-size、vertical-align是设置行内元素布局的关键属性。这三个属性是相互依赖的关系&#xff0c;改变行间距离、设置垂直对齐等都需要它们的通力合作。下面将主要介绍line-height与vertical-align&#xff1a; 行高 【定义】 line-height行高是指文本行基线之…