我拥有计算机科学学士学位,因此有开发在命令行或基本GUI上运行的软件的经验.但是,我没有制作真实,实用的网站的经验.对我来说很明显,我需要扩展我的技能以包含Web开发.我一直在使用Ruby来开发应用程序,但我知道它在Web开发中非常流行.我希望利用我作为程序员的技能来协助我为乐队开发个人网站.
我有使用HTML的经验,但很少使用CSS.我希望利用我的编程语言技能创建一个包含图片,音频剪辑,动态日历,日程安排请求工具以及乐队网站常用的其他功能的网站.
什么样的资源可供有能力的桌面程序员学习开发网站的整个过程?是否最好使用免费的CSS模板和WordPress作为我的网站的基础或从头开始制作?我应该使用GUI工具还是在Vim/Emacs中全部编写?Ruby on Rails是否足以支持我的个人网站,还是应该考虑更成熟的开发平台?
我这个项目的主要目标是加快当前的网页设计技术,并实际了解构建网站的整个过程.
我认为在Web开发中要理解的一件非常重要的事情是HTTP.HTML和CSS很重要,但我认为理解Web的无状态特性以及每个HTTP动词如何工作以及它们能做什么/不能做什么更为重要.
http://www.freeprogrammingresources.com/http.html
Fiddler是查看HTTP如何工作的好工具.
如果这是一个学习练习,那么采取迭代的方法.建立修改.建立修改.我的(非常)粗略的指导方针如下:
客户
从网站的结构开始,专注于客户端.
使用记事本为你的乐队构建一堆静态页面.即手动代码最初.尝试使用CSS构建所有页面.没有表格标记.然后玩一些Javascript来实现生活.(导航菜单\日历选择\等).了解如何导入和链接到Javascript和CSS文件....以及如何处理这些文件:缓存等.
尝试了解客户端(通常)可以做的限制.考虑3-4个浏览器(Firefox/IE6/IE8/Chrome)的细微差别:DOM和客户端事件.
服务器
然后开始寻找您可能希望在页面/会话中更改的内容.即什么需要操纵服务器端.并选择服务器端技术.
从基本的回发处理开始.此时忘记数据库.了解您的选择框架如何保持状态.....不仅仅是技术的名称,而是它的真正基本要素.作为Web开发人员,您最大的一项资产就是了解您正在使用的技术的状态模型.
然后深入研究选择的Web服务器技术(一般而言).了解从客户端到服务器并返回的完整请求管道.这将教你形式,http和它的动词,web服务器,过滤器和模块,服务器到框架切换,页面和控制生命周期,回到客户端.
现在开始研究动态内容注入等.如何在网页中制作和使用可重复使用的组件.
数据库,缓存,性能和诊断.
然后进入所有有趣的东西,如ajax等.用jQuery替换你的javascript等.
然后你得到了整个Webservices\XML\JSON\etc方面的东西.
资源
网络显然很好.对于客户端的东西,去制作第三方Web控件的公司的网站可能非常有趣.问他们到底是怎么回事?Viewsource是你的朋友.看看他们如何构建和构建他们的页面.选择一些优秀的网页设计师网站,你会发现大量关于浏览器大战的咆哮,它们会给你带来好的(引擎盖下)信息.
一旦你到达服务器端,我就会从你选择的供应商那里学习白皮书类型的技术.我的webservers/frameworks/etc. 再次找到第三方howto/evangelist网站(我过去常常使用很多来自Rolla的4个人)来演示如何做各种事情.语言学习正在进行中.基本上只做最好的事情,直到找到更好的方式......并始终注意寻找更好的方法.
你真的需要了解html,form和css来获取任何地方.我说形式,因为这将为您提供理解Web开发的无状态性质所需的往返.
为了进一步说明这一点,我采访了很多人,他们认为你只能在一个页面上有一个表单,并且每个表单只能有一个提交按钮.这完全取决于缺乏基础知识.
所以我建议从htmldog.com开始.
之后,很多Web开发都是使用框架完成的.你自己做的日子已经一去不复返了(大多数情况下),但我的上述观点仍然存在.你需要能够有信心地在引擎盖下窥视.
我已经做了12年的Web开发,并在Solaris和Linux上开始使用Perl.从那时起,我也完成了Java和最近的ASP.NET.但是,在我的私人项目中,我正在为Django慢慢堕落.
我多年来发现的是,固有的问题 - cookies,javascript,演示,状态,身份验证都是一样的,但处理方式不同.所以最终归结于你和你的语言偏好.在潜在就业方面,还有一点开明的自我利益.
除了编程之外,您还应该熟悉Web服务器(以及Apache和IIS),Http代码和头文件,Mime类型以及编码和FTP.以及Javascript(已经提到),插件,浏览器平台和良好的开发实践,如使用Firebug,Fiddler等.了解可用的图像格式,图像优化,CSS精灵,内容压缩,缓存等也不会有什么坏处.
一切都取决于你想要开始的地方!
对于一个新手,我会选择Django和(显然)Python.良好,干净的语言与廉价的启动选项,低成本的IDE(即免费)和托管您的网站是非常实惠的.
但这只是一个主观意见.