对于一些没有编程经验的人来讲,一开始就学习web开发会让人以为很是困难。由于你的能力处于初始阶段(你根本不知道你缺乏哪方面的知识),因此在你可以创建一个任意复杂的网站以前,你可能会认为你须要大概几个月的时间来夯实计算机方面的基础知识。 前端
其实并不是如此!web开发和CS是不一样的,你彻底能够在没有太多计算机基础的状况下开发学习web开发。我这样说,彻底是根据我本身的经验。 jquery
六个月前,当我开始学习web开发时,我仍是一个法律学校的在读学生,并且几乎不懂任何关于编程的东西—仅仅在开始学习的前几个小时了解过一些基本知识。四个月后,我收到了来自Pivotal Labs的offer,接着我离开了法律学校,搬到了旧金山。我很是的幸运地遇到了一位极为优秀导师(从黑客学校得到的收获绝对不能忽视),因此我不认为个人故事很是具备表明性。可是我认为这很清楚的代表那些没有计算机背景的人一样能够成为web开发者,并且它所花费的时间可能比你想像的要少。 程序员
这篇博文是为了尝试帮助那些刚开始学习web开发的人们。这里展现了一个大概流程,这个路线图会“告诉你在最初的几月里须要作什么”,它也是我最开始编码所遵循的路线。 web
写这样一篇博文的想法已经在我脑海里有一段时间了,只是我认为本身知之甚少,因此始终没有提笔。在写这篇文章时我仍是以为本身知道的不限,因此若是你在下面的文章中发现任何错误与不正确的地方,请必定帮我指正。 shell
四个部分 编程
这里大体列出了长短不一的四个部分知识要点,在你学习的前几个月里你须要掌握这些要点。 后端
1)web框架的基础知识(如Ruby on Rails),又名“包含网站模块及它们之间链接结构”。 浏览器
2)前端开发,又名“如何使内容出如今正确的位置上,并且在浏览器中表现得好看”。 ruby
3)版本控制,又名“如何使用免费易用的软件,使程序员可以有组织地保存他们的程序版本。这样他们就不用担忧修改代码所带来的版本混乱,同时也可以很好地与其它程序员协同开发”。 服务器
4)部署,又名“如何真正地将你的网站放到互联网上”。
我把这几个部分标记为1到4,但这并不意味着它们之间存在任何特定的顺序。你能够同时学习这些东西。
在这个部分所须要花费的时间很像这种模式,即“选择一种web框架”=>“大概10分钟以内”。“学习这种框架”=>“不少不少个(快乐的)小时”。
如今有不少的web框架可供选择。而我要讨论的是Ruby on Rails,它是我所知道的最好的框架,由于处处都有关于它的优秀的资源。
那么,什么是web框架?个人理解是这样的:有框架以前,人们在决定作一个新的网站时,每每每次都须要添加一些相同的东西到新的网站。因为这些都是一些重复无聊的工做,因此程序员开发出了框架(例如Rails),这些框架可以把不少重复性的工做移到web开发以外。人们喜欢说,Rails表明“约定优于配置”。它的意思是,假如你想按照约定的方式开发,那么Rails会使web开发变得简单。
相关的资源:
我刻意只选择了无数Rails/Ruby资源的一小部分来讲,由于可选择的资源实在太多了。
I、阅读 Michael Hartl’s精彩且免费的确Rails教程。一个提示:Hartl的教程虽然很是的清晰全面,但你也不可能轻松的彻底理解里面的全部内容。细细地去品味它,一旦你发现一些不能理解的东西时,你必定要弄清楚。若是你发现本身只是盲目地去复制/粘贴它的代码,只是为了完成而完成教程,那么请你停下来。当遇到不懂的知识点时,当即去下面的资源中查找:
Google。有些人在博客或论坛上写的内容可能正是你想知道的东西。当你遇到任何问题时首先去查找Google。
Stack Overflow。在那里程序员回答问题的速度绝对让人吃惊(个人问题每每都在一个小时内获得答案)。
Railscasts。Ryan Bates拥有超过300与Rails相关的线上直播主题。很是惊人的资源。
Rails Guides。这些真正的专业指南是由Rails的核心团队成员所写。这些里面的东西须要时间去消化理解(由于里面的大多数内容都是给有经验的程序员准备的),可是仍是有一些介绍性的东西能够拿来学习。
II、在进行I学习的同时,Hartl将告诉你Rails的工做原理。可是若是你不懂Ruby,那么太多的Rails会让你以为像在变魔术。这里列出了你在学习Ruby时应该用到的一些资源,你应该按照资源列出的顺序来学习它们:
前往Codecademy学习编程的基本元素(循环,数据结构)。目前Codecademy教程是用Javascript讲的,不过不要紧—反正不管如何你也是要学Javascript的,何况如今的重点主要是熟悉编码的基本要素。(强烈建议:若是你想让学习更有挑战,登陆projecteuler.net,而后用本身所学的东西来解决上面的一些问题)。
阅读浏览这个优秀的Ruby教程。当你阅读它时,打开你的终端(如Mac上的iterm),打开irb(the interactive ruby shell),并当即开始实践你正在学习的语法。(搜索“terminal”和“irb”,若是你压根不知道它们是什么。)
在作上述工做的同时,下载并阅读Ruby Koas。它是一系列丰富有趣的练习,这些练习涵盖了大多数Ruby的基础知识。
最后,阅读Eloquent Ruby。Eloquent Ruby适合那些对编程已经达到某种程度的人,因此在你读完Koans和Ruby教程以前不要去读它。Eloquent Ruby将不只告诉你Ruby的工做原理,还会告诉你应该如何使用Ruby(例如,Ruby程序员决定的方式就是最好的实践方式)。
对于“前端”和“后端”不完整/不许确的定义可能会是这样的:web开发中的“后端”是指你存储和组织网站数据的地方。例如Yelp这样的网站要存储不少东西:它的用户和用户的我的资料、大量的餐厅信息、哪一个用户对一个特别的餐厅作了什么评价,等等。
Yelp把这些信息存储在服务器上,这些服务器就是分布在不一样地方的大型计算机。当你搜索“Pizza in San Francisco”,你的计算机会发送一个请求到Yelp的服务器,Yelp服务器收到后回发HTML形式的请求信息(Yelp每次都以这种方式来指示服务器的行为方式)到你的浏览器,浏览器会被渲染(例如:将HTML分离成文本和图片,而后让这些图片和文本在浏览器窗口中以正确的方式显示出来)。这后面的一部分—有关数据应该如何出如今用户窗口的指令(而不是什么数据应该被回送)—就是“前端”。
相关的资源:
在w3schools上学习HTML和CSS。编注:谢谢下面的一些评论者指出了w3schools的不足。你们能够转到w3Fools获取一些更好的资源列表。HTML是一种标记语言,用来管理页面的结构。例如,须要有一个页头,后面要跟一个段落。CSS则决定这个页面显示出来的样式。例如,页头的字体大小为18,跟着的段落中文字内容为蓝色。
学习Javascript。Javascript决定了页面上的元素如何表现。例如,页头开始时会被隐藏,但当用户点击某个按钮时又会渐渐地显示在页面上。这里有一个很是优秀的Javascript框架称之为jQuery,它基本上适合每一个人使用,并且学习起来有趣直观。这里有一个小型的教程,你能够从这里开始学习:http://docs.jquery.com/Tutorials。
大体地说,版本控制系统使程序员可以在任什么时候间点及时的保存(正式说法是“commit”)他们的代码。当一个项目结束时,一个程序员可能已经积累了数百或数千份这样的代码备份。
我以前并无意识到版本控制的重要性。当我在写一篇文章时,我并无把我对文章作的每一次修改保存到Word文档中。当我写代码时,状况会有所不一样吗?
事实证实,答案至少是两方面的。首先,程序员写代码时每每会致使意想不到的问题。当问题发生时,咱们能够很轻松地回滚到上一个正常工做的代码版本。而后,程序员常常工做于同一个项目中。在这种状况下,他们须要可以很轻松地合并他们的代码。相似Git这样的版本控制系统(目前最流行的)能够很容易地作到以上两点。
相关的资源:
Hartl会向你介绍Git,但他不会解释得太多。要了解更多,去这里:
Git介绍:由Github的人员创建(这是一个了不得的网站,它让程序员很容易地共享代码并协同工做—你应该最早访问Github去学习)。
Git进阶:感谢评论者Polygonchorus提供的这个网站,看起来真的很棒。
Git指南:新颖且简单。在这里能够学习基本的命令。
Git的社区图书:一个很好的参考资料,你可能不须要从头至尾的通篇阅读它。
当你开发网站时,绝大多数时间你都会在你的开发环境中去验证检查—换句话说,就是在你本身的电脑上,而不是在互联网上。
拥有这样一个开发环境的理由很简单:将你的代码上载到一个远程服务器须要必定的时间(例如,上载到互联网中一个实际的服务器上)。因为你的网站正处于开发阶段,你须要不断地检查你的网站,而每次当你上载新的代码时,你都须要20-30秒去等待服务器的响应,而后才能看到新代码运行的效果,这确实很烦人。
当你以为准备好了,你能够很容易地使用Heroku来部署你的代码(Hartl说明了怎样去部署)。这里是在Rails3环境下设置Heroku的相关信息:http://devcenter.heroku.com/articles/rails3。若是你想创建一个自定义的域名,Heroku也提供了一个延伸的教程:http://devcenter.heroku.com/articles/custom-domains。
关于此路线图的一些重要想法
以上的这个资源足够你学习几个月的,但它们不会带你走得更远。我只是但愿,在学习过那么多知识以后,你可以从本身创建的项目中学习提升。下面是一些离别的想法:
选择一个能激发你兴趣的想法,并在你以为准备好以前就付诸于实践。我甚至建议你在完成Hartl教程以前就开始你本身的项目。工做于本身的项目,是让你迷上web开发最容易的方法。
我在这里提到了一些优秀的学习资源,当你要创建一个本身的网站时,这些资源只涵盖了很小一部分知识。时刻保持查阅未知知识点的习惯,不用担忧—即便是最好的程序员也须要这样作。
你会常常地遇到bug和其它一些问题。这可能会让人沮丧,但你要尽可能保持冷静,并系统地去思考。记住实践是解决问题的最佳方法,同时记录下那些常常出现的bug。当问题出现时,思考问题出现的可能路径(相似这样的推理过程:OK,个人用户没法正确登陆。这可能由什么缘由形成?嗯…这多是A、B或C形成的。若是是A,我可能会想到…)。写出来或者大声说出来,若是这样有帮助的话。千万不要只是坐在那里,盯着代码,并但愿可以顿悟。
与其它程序员一块儿工做,并向他们学习。与其余人一块儿编码并讨论代码,我以为这是最快最有趣的学习方式(我很是推荐结对编程)。固然,你可以作的对本身最好的事情多是去黑客学校。
祝你好运!
有些评论指出,因为web开发只是编程的一个子集,本文标题用“学习web开发”取代“学习编程”可能更好。他们的观点很是对,因此我但愿本文的标题不会误导人们认为web开发就是编程的所有(其实还有不少,不少咱们不懂的东西)。这么理解吧,web开发仍然是编程的一个子集,因此那些学习web开发的人同时也在学习如何编程。
网址:http://blog.jobbole.com/15213/
本文版权归原做者全部,本人仅做学习用,文中备注是本人本身的笔记.
20150725
网页编程学习系列
--------------------------------------------
联系方式
--------------------------------------------
Weibo: ARESXIONG
E-Mail: aresxdy@gmail.com
------------------------------------------------