写这篇文字的时候,一直是在寻找一种自认为比较合理的web开发模式,或者更确切说是一种方法,一种潜意识的标准,说起标准来,有人会说垄断,那我只能说别把话题扯远了,因为我要记录的是在某一环境下,某个前提下所进行的web开发,因此,在一种或者几种原则的框架下,自然要舍弃某些东西。那就是传说中的需求!我喜欢清晰的需求。
那首先,什么是需求呢?是通用的web site呢,还是某一类系统呢?我想很明显的是web,页面架构很清晰的那种,但是要有一定范围的扩展性,比如颜色,模块位置,语言,当然作为一个开发者还可以自己添加模块,作为一个普通用户也要易于安装。非常高兴的是本人对做出来是什么东西不感兴趣,主要考察的是标题所说明的,web的结构,那就挑个中等难度的,类似oscommerce的东西,没有界定具体类型,例如b2c,c2c或者其他,支持用户,产品,信息模块,当然还有购物车,收藏夹等通用的模块,后台管理少不了,权限却是个大问题,这个稍后再谈呢,还需要研究一下。图片什么的都不谈,用最简单的实现。
好了,以上粗略可以知道自己想做什么东西了,那么要谈一下原则了,作为一名具有多年(其实四年都不到)web开发者,也是2个网站的失败经营者(自己先寒一个),通过自己的经历,总结出了几点。第一,当然是速度和安全,一个在虚拟主机上的站点,选择了好的提供商,我是不会指望供应商承诺速度会有多快的,原因很简单,一个服务器,多个虚拟主机,共享带宽,流量一定,具体来讲就是马路的问题的,所以也不想多说了。安全方面,程序语言我选择php,一个是开源,另一个,黑客哥哥们看到开源总归放一马的吧,怎么说也是自己人哦,是吧。另外,该检验的都要检验,JS做一下检验,php也做,够安全了吧。
休息一下,明天继续
漫长的旅程确实是需要休息和放松的,那是为下一段旅途做准备。
需求基本理解,大原则明确,接着我需要顶着XP极限编程的帽子工作了,似乎这种方法的工作属于牛仔式,可是要知道,真正的xp要把工作安排到小时级,就是说每个小时都要安排好该做什么,显然,像我这样单枪匹马是不现实的,谁来和我探讨呢?自然是你,我亲爱的朋友,回复吧,给我blog来点生气,呵呵。
那么如何开始呢?我想首先是抽象,我不想解释抽象的含义和好处,难道又要引经据典?我讨厌那样。
最前面要规划站点的结构,大家共同的标准已经有一些了,比如根目录下放一些公共文件,比如/image,/script,/style,等等,还有人写/picture,/js,/css,内容是一样的,名称不同罢了,还有人把他们写成复数,那都不是最重要的,重要的是,站点里所有的页面都能找到他们想要的图片,javascript文件,样式表等,所以为了方便,本人觉得还是放弃dreamweaver,啊?这和dw有关系吗,请原谅我,可能我应该直接告诉各位原因,但是为了显示我的聪明才智,我使用了一种写文章的修辞手法,他也许叫做欲仰先抑,看到这里不要扔鸡蛋。dw是所见所得的开发工具,为了让站点可扩展,我觉得把路径全部写进一个configure文件里面,在将configure包含进所有需要的页面,也就是在页面里连接图片,js,css的时候路径都是一个常量,这也就意味着在dw里不能看到效果了,也许还有其他ide可以做到,不过本人还是偏爱utraedit,这是一个轻量级的文本编辑器,可以像dw一样建立一个工程,可能缺乏许多功能,但是开发,绝对够了,如果再稍大一些的项目,用eclipse+php的插件,那就更爽了,即时的代码差错,超棒。
另外为了支持多语言,需要一个language包,基本思路是在language下有个语言文件,比如english.php,包含公共的语言,比如翻页,标题,公司名称等等,然后相对应的english目录下面建立相对于网站的每一个页面的语言页面,比如/index.php,那么可能的情况是/.../language/english/index.php,然后将这个语言包含进去。如果文件比较庞大,可能比较难找,或许可以在同级目录下建立/english/english_index.php,或者干脆/english_index.php,这个虽然仔细想过,可感觉真正实施的时候可能会碰到其他问题,本人只试过第一个方法,各位观众也可以看看,这个有个例子,www.oscommerce.com,这个开源系统,很不错,基本上function部分我都参照这个写的,没有采用class,事实上,基于快速的原则,我也不准备用class,如果需要php5的话可能会考虑class,但是如果需要动用到class时,那么说系统足够大了,那我还不如用java了。哦,对了,记得页面编码为utf-8。
接下来我需要确定确定一下基本模块先,1、信息模块,这是必不可少的,一个好的商业性网站,必须有个平台推销自己的产品,虽然可能某些信息和产品没有任何关系,但是如果能够吸引网民来稍微看一下,那么很有可能这个网民甚至是这个网民的网友将会成为你网站的用户,那的确是一个不一样的称谓,我喜欢我的用户,我喜欢流量飙升。所以一个很好的信息系统是很必须的,而且等站点完成后,必须好好管理它,至少2天更新一些东西,这样,用户就有新鲜感,我也喜欢新鲜感。说到这里,本人认为可能有2中主要的信息系统,虽然他们的主要目的不外乎是宣传自己,可能是宣传网站,可能是宣传某个实体,比如企业。所以很多企业老板为了增强企业的标志性,比如某一条信息,记录某某企业获得2006年全国最佳某某奖,那么我打赌,企业老板肯定需要让2006年所有的用户在首页看到这条信息,甚至是2007,2008年,那是个宣传自己品牌很好的办法,不是吗?那么,假定我把这条信息放进企业新闻里面(企业新闻就是一个类别),如果我按照时间排序,让最新加入的信息出现在用户视线范围的最前端,显然老板不会高兴的,我就可能需要一个排序的小功能。信息可能有好几种,很多用户自定义的类别,当然更需要排序了,或许有时候需要用图片来代替类别文字,因为美工认为图片会更好看,鉴于字体的原因,也只能做成图片。所以可能在编辑类别的时候需要上传一张代表这个类别的图片。既然有类别,那么纵向来看,需要多少等级的类别呢,很多小型站点主要一级类别+信息就可以了,稍大的需要大类、小类、信息这种形式的,那就是二级的分类,那么一个内容发布系统呢?显然为了扩展,可能需要无限类了。通常选择是痛苦的,所以在这个时候之前我所说的原则和需求就可能是很重要的参照了,要明白,不管信息有多重要,主要的需求还是产品,你需要卖商品出去,这个是商业互动型网站,所以本人认为没有特别需要使用二级分类就完全可以应付了,太多的分类自己管理也麻烦,还不如多花些时间和精力在页面上面,信息的页面形式多一些,可能有文字类或者图片类的,一个图片新闻,很不错的想法,或者每条信息有分页功能,如果,有一条新闻是世界500强企业名录,每个企业一个名字,或许需要一些文字说明,我想没有人会傻到把500个企业名称和详细说明放到同一页面上吧,如果确实有这么一些人,那么肯定有特殊原因,我可不想得罪人哦。一条信息的分页处理,这确实是一个比较麻烦的实现,我需要画一些图来好好考虑一下,该如何操作,所以,稍微休息一下......