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

本文指导前端开发者从基础HTML+CSS、JavaScript开始,强调数据结构和算法的重要性,推荐学习资源,介绍不同阶段的学习内容,如CSS样式、JavaScript框架、DOM编程、网络编程和ES版本变迁,以及高级技能如高内聚低耦合、闭包和原型链等。
摘要由CSDN通过智能技术生成

二、基础


html + css

这部分建议在 w3school 在线教程 上学习,边学边练,每章后还有小测试。 学习过程中请打开chrome浏览器调试工具,直接命令行在内做些练习。

javascript

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

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

数据结构和算法(2019年4月新增)

正如开篇的分析,目前市场缺的是高级前端,初级到高级的门槛不在未来,而是在过去的大学基础课。

前端为什么要学这些?因为这些都是稍微复杂一点的场景解决问题的必备武器。比如,把一个列表形式的地址数据,以树形渲染到页面,或者反过来;又比如,把一个多级嵌套的数据对象,转化成扁平的map结构再提交到服务器。更关键的,数据结构和算法,是计算机的思维方式,尤其是分治递归的思想,影响到代码实现、模块设计、乃至到系统设计。

三、初级


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

1. css

对于css的学习,我推荐分三块:“基础概念”,“css2.1规范”,“css3规范”。必看 精通CSS(第2版) (豆瓣),看完这本书你应该对:盒子模型,流动,block,inline,层叠,样式优先级,等概念非常了解了。这本确实有些年头了,但基础概念部分讲述非常清晰,可以称之为经典。ie6,7相关的内容可以不看。css3的部分可以参考:CSS3实用指南 (豆瓣)。这本书同样有些老,只是最新出版的书中没发现有特别好的。

关于浏览器兼容性。webkit内核已成为市场主流,ie6、7已成为历史,ie8、9的市场份额在进一步缩小,总之兼容IE已不在是前端工程师面试需要考察的点。

2. javascript

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

2.1. 简单框架。推荐先学 zepto,简单易用,在w3school简单学习js后,直接上手 zepto 即可完成一些简单的项目。zepto 源码简单清晰,也适合新手阅读。补充: 可以使用 codecademy 学习 javascript,zepto,用户体验真的很好(感谢 TonyOuyang )。学习zepto只是为了快速上手开发项目,获得成就感。同时还是要关注JS原生编程的能力,尤其随着低端浏览器份额的下降,很多 zepto API 已经可以被原生浏览器api替代。以天猫消费者端 h5页面为例,主要就是靠 原生JS + 少量 zepto api 的方式开发完成,配合pwa等浏览器最新api就可以开发出极致的用户体验。

2.2. 复杂框架。是指 react、vue、angular 等不直接操作dom的框架。这类框架建议js基础打扎实后再学习。复杂框架是用来解决复杂问题的。对于电商无线端导购页面来说原生JS足以。对于类似商家管理系统这类交互复杂,开发量大的系统,才适合用这类框架。对于这些框架核心在于理解理念,不要只停留在会用的层面。

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

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

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

2.6. 网络编程,这部分相对简单,就这些关键字,自己搜索学习即可:fetch,websocket,jsonp,cors,formData。另外,Ajax已经被 Fetch Standard 取代,学习 fetch api 即可,如果遇到不靠谱面试官还在问 ajax 的事情,直接跟他讲你对fetch的理解即可。

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

3. html5

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

四、中级(2019年4月20日重写)


初级阶段的目标是能写出可以运行页面。中级阶段的目标则是以更快的速度,写出体验更好的页面。

1. 高内聚、低耦合

如果说数据结构和算法是从初级到高级的第一道门槛,能否写出高内聚、低耦合的代码,则是第二道门槛。

JavaScript

  • js的基本类型有哪些?引用类型有哪些?null和undefined的区别。

  • 如何判断一个变量是Array类型?如何判断一个变量是Number类型?(都不止一种)

  • Object是引用类型嘛?引用类型和基本类型有什么区别?哪个是存在堆哪一个是存在栈上面的?

  • JS常见的dom操作api

  • 解释一下事件冒泡和事件捕获

  • 事件委托(手写例子),事件冒泡和捕获,如何阻止冒泡?如何组织默认事件?

  • 对闭包的理解?什么时候构成闭包?闭包的实现方法?闭包的优缺点?

  • this有哪些使用场景?跟C,Java中的this有什么区别?如何改变this的值?

  • call,apply,bind

  • 显示原型和隐式原型,手绘原型链,原型链是什么?为什么要有原型链

  • 创建对象的多种方式

  • 实现继承的多种方式和优缺点

  • new 一个对象具体做了什么

  • 手写Ajax,XMLHttpRequest

  • 变量提升

  • 举例说明一个匿名函数的典型用例

  • 指出JS的宿主对象和原生对象的区别,为什么扩展JS内置对象不是好的做法?有哪些内置对象和内置函数?

  • attribute和property的区别

  • document load和document DOMContentLoaded两个事件的区别

  • JS代码调试

  • 开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 13
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值