各位童鞋,现在偶要给大家讲的,是一个网站开发组里面比较有争议,也比较有冲突的问题,那就是作为一个项目的核心,到底是谁呢?
这个就是哈姆雷特问题,每个人都有自己的见解,我也讲解一下我的见解吧。
作为网站开发,需要做的事情很多,先列举一下到底有多少工作等着我们去完成吧
1,项目设计,对自己要做的项目,有个一个全盘的思考,决定整个开发的内容,这个不是我们教程考虑的东西,就不多说了
2,需求分析,对项目整体进行划分,大致划分功能,并把功能进行难度评估,理出制作出功能的时间节点。
3,根据需求分析,对项目进行拆分,理出哪些是一期工程要做的,哪些是后续需要扩展的。
4,根据项目,在要开发使用的数据库建立表以及字段,化一个类结构草图,然后逐步细化类的功能
5,调用以前做好的公用类库,如果没有就建立自己的公用类库,然后根据使用公用的ORM组件,或者自己编写一个ORM,生成文件后添加入项目
注意:这里我强烈建议大家自己写代码生成器,根据表或者视图生成所需要的实体和操作数据库的方法,原因以后再解释
6,制作网站前端设计,画photoshop效果图,简单点就用firework好了,将所有图画出来后,查看整体效果,并进行归档。
7,对着效果图,设计html前端代码,然后将html需要使用的css进行细分,量化,归档,还有不可缺少的兼容性测试。
8,为html添加js效果,也可以使用js框架库,比如说jquery
9,设计程序后端代码,按照前端的样式,添加控件,或者组件什么。
10,程序后端代码的重构。
11,功能测试,黑盒测试,有时间再白盒测试,然后就是上线。
说了这么多玩意儿,到底哪个是核心呢,我认为的核心是 UED (第七项),说专业点,就是用户体验设计,是英文User Experience Design的缩写。这个是个什么玩意呢?
说这个之前,先说说淘宝的发展吧,淘宝2006年,没有开设这个项目组,2007 年3个人,2008年20人,2009年不清楚,不过目前来说,这个组的人数包括了北京的新开发的团队,已经有120号人,而且这个团队还持续在扩大,大家看看淘宝这几年的发展,就明白别人为什么成为中国电子商务的霸主了。各位要组网站的,多访问一下ued.taobao.com吧,受益良多,是不是广告,看疗效。
我为什么说UED是开发的核心呢,用户直接能看到的,就是网站样子,谁去关心你的程序是多么的强大,数据库是多么的健壮,毕竟搞IT专业的人,在所有的访问者中可占不到1%吧,99%的流量都需要不懂技术的人来贡献。
我们又从技术角度来说,前端用html显示,是必然的结果,没有其他的代替品,而后端程序呢,.net php java可有得选,这样不熟悉,可以换一样,总能找到自己会的,擅长的,数据库方面也是一样,什么mysql,sql server多的是。只要按上章说的那样,生成需要的html,返回给用户的浏览器就可以了。
别人是怎么怎么在浏览器里面输入一个域名就能访问到你的网站呢?这个问题看起来很长,初步一看,还觉得很简单,仔细想想后,越来越觉得复杂。
这个访问网站的原理,是我们成为一个网站制作大师必须深刻理解的一个过程,注意,这个很重要,比什么.net java 性能效率 访问量这些东西更加重要。因为这个你所作工作的基础
先说说为什么必须了解这个原理吧:
1,和你网站功能有很重的关系,程序运行顺序的不同,会导致很多功能做了,但是却不起效果,你还找不出原因
2,网站的功能效果的实现,是依赖于css js 和一些交互ajax等等
3,网站功能维护的基础
4,网站出错了,从哪儿去解决
好了,其实原因多的很,我也不一一列举,这意义不大,我们还是赶快了解一下到底是怎么完成这个过程的吧
第零步,如果网站有全局设置文件,则在网站服务器上首先执行程序,注意,此过程是优先于你访问网站就执行的
第一步,别人输入网址,通过网络上的DNS服务器,找到对应的IP地址,也就找到你的服务器
第二步, 如果服务器上面,有网站服务,并且默认访问端口为80,则根据绑定的域名访问所在的目录
第三步,根据网站服务器的设置,有默认访问的文件名,例如index.asp , 则自动访问该文件,否则就报404错误
第四步,用户的浏览器开始读取你页面文件的,也就是html代码
第五步,网页浏览器解释器,根据html中的外部引用文件,开始下载外置的css js img文件
注意:由于浏览器设计的问题,同时下载外置文件的“通道”为2个,其他的文件则排队,下完了前面的,才会下载后面的,如果其中有个多个文件的下载速度比较慢,会影响所有文件的下载!
如果文件找不到,就会跳过~
第六步,网页开始从上至下开始解释html 并将 同步进行刷新网页里面的标签的样式定义,js定义等等。
第七步,浏览器验证js定义是否完整,是否有JS错误等,如果有,就抛出错误
注意:第六步与第七步是交替执行的
也许有经验的童鞋怀疑此过程是否正确,怎么没有框架里面那些方法定义的东西啊,比如说ASP.NET一加载,就会开始使用Page_Load事件呀。还有网页加载完的销毁事件等啊。
在每个动态语言里面,都有类似于加载前,加载时要执行什么的定义,这些定义的目的,是为了更加细节化以上的流程。在用户真正申请访问,或者叫申请读取html的时候,程序会从已经编译成功的文件中(例如asp.net 就是 bin里面的 dll 动态链接库文件 ,java 就是 jar 包),找到 命名空间 或者叫 包 相对应 执行的方法,然后执行下去,生成用户需要的html 。
而我们的浏览器提交的申请,其实是没有去直接调用这些方法的,请注意区别这个细微的差别 ,我们所需要的,其实只是那个结果,就是由程序生成html代码。
这个就是做好一个网站的核心,html代码,决定网站的展现。
所以,只要能生成你所需要的、合格的Html代码,用任何语言,任何平台都是可以的。

