‘壹’ 零基础的初学者应如何学习
网站开发开发大致分为前端和后端,前端主要负责实现视觉和交互效果,以及与服务器通信,完成业务逻辑。其核心价值在于对用户体验的追求。可以按如下思路学习系统学习:
基础知识:
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 « 张鑫旭
3. 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 mole 等等。
然后呢?
以上内容只是简单说了前端学习的顺序。前端工程师应该有的知识结构请参考这里: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.
‘贰’ 现在我算是做过几个js项目,但是想要精通的话,有什么书介绍,最好有有顺序的,进阶到精通之类的
推荐几个我看过的给你:
1、《JavaScript高级程序设计》,JavaScript技术名着,html+css+javascript教程精粹,html 实战实例,销量超过8万册。
2、《精通JavaScript 第2版》,jQuery之父经典着作新版 系统总结JavaScript语言特点 直击JavaScript本质。
3、《JavaScript函数式编程》,函数式编程是当前程序设计语言的发展趋势和热门话题。本书的作者Michael Fogus是Clojure和ClojureScript的核心贡献者,也是The Joy of Clojure一书的作者,是世界知名的函数式编程专家。
‘叁’ 前端开发工程师必读书籍有哪些值得推荐
1丶JavaScript入门
《JavaScript权威指南(第六版)》 ★★★★★
淘宝前端团队翻译的,看译者列表都是一堆大神。这本书又叫犀牛书,号称javascript开发者的圣经,网上对此书评价很多,大概意思都是说这本书是一本JavaScript文档手册,没有完整看过一遍此书的都不能算是一名合格的前端工程师。 我也是从这本书开始接触前端开发的,当时还是华章出版社的校园大使,免费申请到了这本书,可惜的是两年来我一直把它作为一本cookbook来查阅,一直没有好好通读一遍。个人感觉这本书还是写得枯燥了些,不过内容绝对是五颗星,无可挑剔!
2丶《JavaScript高级程序设计》 ★★★★★
又称红宝书,雅虎首席前端架构师,YUI的作者Zakas出品。虽然书名带了“高级”二字,但是讲得也很基础,而且行文风格很流畅,每一小节就像是一篇博客,读起来并不枯燥,个人感觉比上面那本犀牛书可读性更强。说到这里,也推荐大家多多关注作者的博客:NCZOnline - The official website of Nicholas C. Zakas ,上面也有许多高质量的博文。感觉这本书就像是作者平时的博文按照前端知识体系组织成了一本技术书。
作为初学者如果觉得上面两本书作为入门书来说太厚了,也可以看看这本,不厚,评价也很高,但是由于本人没看过,就不作过多评价了。
3丶《JavaScript编程精解》 ★★★★
用上下班时间看完的第三本书。看起来比较吃力,第五章函数式编程和第六章的面向对象编程很多都没看懂。全书游戏式的编程教程还是很有意思的。译者tom大叔名头很大,翻译的质量也只是中规中矩吧。不过,还是get到很多技巧!这本书的推荐语说这本书用来入门很好,但是个人认为初学者并不合适看这本书入门,作者在代码示例中不自觉得使用了一些高级用法,初学者看容易晕菜。听说最近出了第二版,加入了NodeJS的内容,这本书是开源的:Eloquent JavaScript
4丶《JQuery权威指南》 ★★★
错误很多啊,不过其中的语法+示例的形式,确实很适合初学者。但是错误实在太多了,而且有些语句还不通顺,看着很累啊,只能说写得好代码的人,书不一定写得好。
‘肆’ 如何使用正确的姿势进行高效python函数式编程
不管学习什么新的东西,效率最低但是又不可或缺的环节就是看教科书了。虽然看书的过程可能会很无聊,但是过一遍书至少能对整个知识框架有个大体的把
握。我最早知道 Python 还是在《黑客与画家》这本书中看到的,书里面有一章节是讲编程语言的,作者很把 python
作为学习编程的入门语言。我当时是把《简明 Python 教程》给过了一边,后来又看了一遍《深入python》,这里特别《深入
Python》,除了介绍 python 的基本特性之外,还介绍了诸如函数编程、正则表达式、处理 HTML 和
XML等高级用法。除了看书,上公开课也是挺不错的,教学本来就比自己啃教科书有意思,而且完成课程作业也能锻炼动手编程能力。我上过两门不错的公开
课,一门是莱斯大学在 Coursera 上开的《Python交互式编程导论》,一边学 python,一边写些小游戏,肯定不会觉得无聊;另一门就是
MIT 在 edX 上开的《计算机科学及python编程导论》,它是 MIT
edX系列课程(XSeries)中的第一课,系列课程共两门,除了这门课以外还有《计算思维及数据科学导论》,不过第二门就没有上过了。
《简明 Python 教程》
《深入 Python》
《Python交互式编程导论》
《计算机科学及python编程导论》
‘伍’ 就会简单的电脑维修,想学习Python 有没适合新手学习的书籍和教程介绍几个
非常好的入门书是《Dive Into Python》,免费的,有中文翻译版本。另外,《简明a Python 教程》也不错。不过python的随机帮助文档是最好的材料。在编程的时候要经常查。其他python的教程也非常多,比如head first系列的,cookbook系列的,in action系列的。深入的看一本,其他的辅助看就好了。
‘陆’ 如何学编程
编程
简单的说,编程就是为了借助于计算机来达到某一目的或解决某个问题,而使用某种程序设计语言编写程序代码,并最终得到结果的过程。
计算机虽然功能十分强大。可以供你上网、打游戏、管理公司人事关系等等,但是没有程序,它就等于是一堆废铁,不会理会我们对它下达的“命令”。于是,我们要驯服它,只有通过一种方式——程序,这也是我们和计算机沟通的唯一方式。
编程原理
程序也就是指令的集合,它告诉计算机如何执行特殊的任务。打个比方说,它好比指导你烹调菜品的菜谱或指挥行驶一路到达目的地的交警(或者交通路标)。没有这些特殊的指令,就不能执行预期的任务。计算机也一样,当你想让计算机为你做一件事情的时候,计算机本身并不能主动为我们工作,因此我们必须对它下达指令,而它根本不会也不可能听懂人类自然语言对事情的描述,因此我们必须使用程序来告诉计算机做什么事情以及如何去做?甚至对最简单的任务也需要指令,例如如何取得击键,怎样在屏幕上放一个字母,怎样在磁盘中保存文件等等。
上面讲到的计算机本身不会主动的做任何事情。因此我们要通过程序的方式来让计算机为我们“效劳”。而这个过程就是我们“编”出来的。编程可以使用某一种程序设计语言来实现,按照这种语言的语法来描述让计算机要做的事情。
我们这里所讲的语法和外语中的语法完全两码事,这里讲的语法只是读你的程序书写做出一写规定而已。写出程序后,再由特殊的软件将你的程序解释或翻译成计算机能够识别的“计算机语言”,然后计算机就可以“听得懂”你的话了,并会按照你的吩咐去做事了。因此,编程实际上也就是“人给计算机出规则”这么一个过程。
常见的编程语言
* CSS Cascading Style Sheets 层叠样式表
* .NET 是微软2002年,为开发应用程序创建的一个富有革命性的新平台
* ActionScript ActionScript是Flash的脚本语言,与JavaScript相似,ActionScript是一种面向对象编程语言。
* APL、A+和J
* Ada Ada是一种表现能力很强的通用程序设计语言
* 汇编语言 汇编语言(Assembly Language)是面向机器的程序设计语言
* AWK AWK是一种优良的文本处理工具
* Basic 是一种设计给初学者使用的程序设计语言
o QBasic QBASIC是BASIC(Beginner's All-purpose Symbolic Instruction Code,初学者通用指令代码)语言的一个变种,由美国微软公司开发
o Visual Basic Visual Basic(VB)是一种由微软公司开发的包含协助开发环境的事件驱动编程语言
* VBScript VBScript是Visual Basic Script的简称,即 Visual Basic 脚本语言
* Brainfuck Brainfuck是一种极小化的计算机语言
* C、C++ C语言是一种面向过程的计算机程序设计语言 ; C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格
o Objective-C 通常写作ObjC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言
* Clipper Clipper芯片主要用于商业活动的计算机通信网
* COBOL 一种适合于商业及数据处理的类似英语的程序设计语言
* dBase dBASE是第一个在微型计算机上被广泛使用的数据库管理系统(DBMS
* PASCAL、Delphi Pascal是一种计算机通用的高级程序设计语言 ;Delphi是全新的可视化编程环境,是一种方便、快捷的Windows应用程序开发工具
* Forth 由Charles H. Moore发展出来在天文台使用的电脑自动控制系统及程序设计语言,允许使用者很容易组合系统已有的简单指令,定义成为功能较复杂的高阶指令。
* Fortran 译为“公式翻译器”,它是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。
* FoxPro 是由美国Fox Software公司于1988年推出的数据库产品
* F# F#是由微软发展的为微软.NET语言提供运行环境的程序设计语言
* Fava Fava语言是一个小型的解释语言,它主要面向于系统测试领域及小型嵌入式设备。
* IDL IDL 是一种数据分析和图像化应用程序及编程语言
* Java Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言
* JavaScript Javascript是一种由Netscape的LiveScript发展而来的脚本语言
* J# Visual J# 是一种工具,供 Java 语言程序员用于构建在 .NET Framework 上运行的应用程序和服务
* LISP 一种基于λ演算的函数式编程语言。
* Lua Lua 是一个小巧的脚本语言
* LOGO 是一种早期的编程语言,也是一种与自然语言非常接近的编程语言,它通过“绘图”的方式来学习编程
* Mole 在软件工程中,指较高一级程序或模块使用的一个单元或模块
* Nuva Nuva语言是一种面向对象的动态脚本语言 Nuva语言的设计目的是用于基于模板的代码生成
* Perl Perl 一般被称为“实用报表提取语言”(PracticalExtraction andReportLanguage),也做“病态折中垃圾列表器”(PathologicallyEclectic Rubbish Lister
* PHP PHP 是一种 HTML 内嵌式的语言
* PL/I PL/I是Programming Language One的简写。当中的“I”其实是罗马数字的“一”。它是一只IBM公司在1950年代发明的第三代高级编程语言
* Prolog Prolog(Programming in Logic的缩写)是一种逻辑编程语言
* Python 是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言
* R R是用于统计分析、绘图的语言和操作环境
* Ruby Ruby,一种为简单快捷面向对象编程(面向对象程序设计)而创的脚本语言
* Scheme Scheme,一种系统设计语言,由LISP语言发展而来,属于lisp的一种方言。与其他lisp不同的是,scheme是可以编译成机器码的。Scheme的一个主要特性是可以像操作数据一样操作函数调用
* Smalltalk 一种面向对象的程序设计语言 一种程序设计环境 一个应用开发环境(ADE)
* Tcl/Tk 是一种 脚本语言
* Visual FoxPro Visual FoxPro原名FoxBase,是美国Fox Software公司推出的数据库产品
‘柒’ 如何用c语言定义一个函数
函数是用户与程序的接口,在定义一个函数前,首先要清楚以下三个问题。 1) 函数的功能实现及算法选择。算法选择会在后续文章详细讲解,本节重点关注函数的功能实现。一般选取能体现函数功能的函数名,且见名知意,如求和函数的函数名可取为 add,求最大值的函数名可取为 max,排序函数可取名为 sort 等。 2) 需要用户传给该函数哪些参数、什么类型,即函数参数。 3) 函数执行完后返回给调用者的参数及类型,即函数返回值类型。 函教定义格式 函数定义的一般格式为: 返回类型 函数名 (类型参数1,类型参数2,…) { 函数体 } 也可以不含参数,不含参数时,参数表中可写关键字 void 或省略,为规范起见,教程中对没有参数的函数,参数表中统一写 void。例如: 类型 函数名 () { 函数体 } 等价于: 类型 函数名 (void) //建议的书写方式 { 函数体 } 如果该函数没有返回类型,则为 void 类型。例如: void add (int x,int y) { printf ("sum=%d\n", x+y); } 除了 void 类型外,在函数体中,均需要显式使用 return 语句返回对应的表达式的值。 函教返回值 函数的值是指调用函数结束时,执行函数体所得并返回给主调函数的值。 关于函数返回值说明如下。 1) 带返回值的函数,其值一般使用 return 语句返回给调用者。其格式为: return 表达式; 或者 return (表达式); 例如: int add (int a, int b) { return (a + b); //return 后为表达式 } 函数可以含一个或多个 return 语句,但每次调用时只能执行其中一个 return 语句。 例如,求整数绝对值的函数: int f (int n) //含多个return语句,但每次调用只执行一个 { if (n >= 0) return n; else return -n; }
‘捌’ 编程时候这么多的函数方法之类的是怎么记下来的
可以联系英语单词一起记忆,也可以通过死记硬背一些最基础的函数公式,然后再加以学习。其实所谓的熟能生巧都是先通过一些硬性的记忆然后再从中找到灵感。
所有非函数系编程语言,核心无非是与或非三种逻辑、顺序分支循环三种控制结构而已。然后,结构化多了函数定义、调用、返回以及变量作用域之类概念;面向对象多了封装、继承、多态;函数式则玩命玩递归甚或“抵制”变量——除了换汤不换药的些须“口音”式的差异,哪种编程语言有本质差异?
数据在各个类和层次,客户端,服务端之间传递过程中发生了什么事情,会触发什么操作。这些内容,很久不会忘记掉。具体的某些框架类,函数,不会特意去记住。稍稍停止写代码的时间长一点,就会完全忘记掉。