写完第一个网站的总结与分享: 大概十天左右的时间,用纯面向过程的语法写了一个类似于discuz的论坛,功能肯定没那么全。写完之 后感觉效果还可以,毕竟是自己的第一次,也是在这么短的时间内完成的,但是代码有点繁乱,所以网站相比于 面向对象写出来的效果是有点low的。
先介绍一下自己写的第一个个人网站。网站我写了前台和后台管理部分,总共二十来个页面。主要能实 现的功能有 前台部分:登录注册,板块展示,发帖回帖包括楼层之间的回帖,个人资料,修改头像,分页,页面 直达,锁定账号和IP,消息提示,用户等级,积分金币,金币帖子,版主权限的删帖 置顶 精华等 后台部分 :关闭站点,友情链接,用户管理,版块管理,帖子管理和回帖管理等。上面这些也都是网站的大概思路。在写 项目之前,我就已经开始写前端页面了,模仿discuz的排版,不过我没看过他的源代码,一点一点的自己写出来 ,总体上来看,我前端写的也还行,毕竟我没学js,用的全是css样式写,但是前端还是吃了不少亏,没有js的酷 炫效果,对我这种有点轻微强迫症的人来说还是有点不爽的,后面得先抓紧学一下js才行了。网站前台和后台的 前端部分大概准备了二十来个页面(有几个类似的)。 这里总结了几点经验,对于用php写网站的人来说,写前端页面时可以尽量写简单一点,相同的地方不要 重复写,因为好多地方都是通过php语法遍历出来的。写div时不要设置高度,让它自适应,因为里面的东西不是 死的,有长有短,样式可以在写完之后再去调。在写页面时如果不同的页面有很多地方是一样的,例如每一个页 面的头部和脚部,这里可以单独把它们公共的部分写在一个文件里面,到时候写后台时通过php语法引入进去就可 以了。这样写的好处是非常明显的。可以使代码量减少,让逻辑结构更加清晰,还有最重要的一点,当你想改动 头部或者尾部的时候,只需要改动公共部分文件,这样是非常方便的。
我还说一下在写前端时遇到的两个有趣的问题。一个是我想在table里面的tr里面加一个下边框,可是不 管我怎么加他就是不显示,可是加在td里面他可以显示,我就很纳闷了,最后在网上找到了答案。因为表格里面 的td都是独立的单元格,必须要把td都合并 ,这样tr才能生效,就好像excel里面的合并单元格一样。
我的解决方案: 在css修饰table的里加上border-collapse:collapse; collapse本身也有合并的意思,这里默认是separate,是分隔开的意思,所以在tr里面打印上下边框都是失效的。
我遇到的第二个问题主要是因为我没有学js,不然也是很好解决的,在导航栏那一块,这里都是用的li,然后全 部浮动起来,li里面套的是一个a链接,当鼠标悬浮上去的时候,会出来一个下拉框,不是单纯的下拉列表,下拉 框里都是a链接,并且都可以悬浮变颜色。固执的我想用纯html和css解决,在网上找了一番资料后,没有找到解 决的方法,自己又套了几种方法,还是没有出来效果,于是只能求救于我那h5的女朋友了,她却说要我用js,很 简单的东西,那我岂不是白忙活半天,我问她有没有其他解决方法,她说有是有,只是没那么好用,后来我还是 让她教了我,不愧是学h5的。
我的解决方案: html部分 <li> <a href="#">这里是导航栏</a> <span> <a href="#">当鼠标悬浮上去出来的下来列表1</a> <a href="#">当鼠标悬浮上去出来的下来列表2</a> <a href="#">当鼠标悬浮上去出来的下来列表3</a> </span> </li> css修饰部分 ul li:hover span{display:inline;} ul li span{position:absolute;display:none;width:140px;background-color:ccc;} 这里的span默认是隐藏起来的,给的是一个绝对定位,当鼠标悬浮上去的时候给他转化为内联元素。 前端部分只介绍到这里了,毕竟我是写后台的。
下面来说一下我的后台部分: 由于是面向过程的写法,所以写后台的时候是一步一步写的,先写什么,再写什么,都是有先后顺序的 ,然后一个功能一个功能的去完善,写到后面,代码越来越多,看着也越来越乱,有时候要加一个功能,就要改 动很多地方。好在我网站引入了模板引擎,使前后端完全分隔开来,虽然文件增多了,但是这里会使得网站的结 构没那么乱,逻辑会更加清晰。 在这里还可以体现出函数的重要性,不管是系统自带的函数还是自己封装的函数,建议自己多去封装函 数,一个功能就用一个封装的函数来实现,可能有一些函数在网上已经封装好了,可以直接拿过来用,但是如果 自己动手封装出来会让自己更加理解这个功能是怎么实现的,也会有一种小小的成就感。例如几个重要的函数, 数据库连接和查询,文件上传、验证码的生成,还有分页。根据自己的实际需要去封装,个人觉得函数封装的越 多,后面的代码量就越少,逻辑也相对清晰一些。
前面的这些还没有说到写后台的重点,说白了写后台的重点就是对数据库的增删改查,不管实现任何功 能,无非就是对数据库的增删改查,查用的最多,两个表联查,三表联查,甚至四表联查,不过我项目里最多也 就用到三表联查,当对这些表进行操作的时候,会感觉到数据库设计的重要性,所以数据库必须设计的很合理, 我在写项目的过程中还没有感受到数据库设计的重要性,当我项目进行到最后的时候,我终于明白了一个优秀的 数据库设计者是多么的重要,难怪听别人说设计数据库的人都是很牛逼的,感觉都是可以预知未来的存在,那逻 辑思维肯定是很强的。我自己写的项目,数据库自然也是自己设计的,在使用数据库的时候感觉是需要什么字段 加一个字段就可以了,项目一写完,看到数据表里的字段有点多,也会感觉到乱,我的数据库里总共插入了十张 表,命名还算合理,也还较规范,遵循了命名的见名知意,不足的就是设计这一块,以后有时间了抽空再研究研 究数据库的设计。
再来说一下我写网站的大概顺序,这个因人而异,我只是分享一下我自己的心得,我的网站先从前台入 手,一开始写的登录注册,写这里就是各种判断,然后开始写个人资料,这里面的头像上传算是稍微难一点的, 用到了上传头像的函数,用户上传头像到网站是保存了一个路径在数据库里面,然后在前台展示部分从数据库里 面取出来,我这里在数据库里存了一张默认的图片,用户注册完就有默认的头像,然后可以自己更改头像。写完 这里紧接着是写的版块的遍历,然后把后台的功能也写好,版块的增加删除修改,版主的设置,还有版块的顺序 。写完这里我一开始准备写遍历帖子,一想数据库都没有帖子怎么遍历,所以这里需要先写发帖,把帖子先存入 数据库,然后再遍历帖子。遍历帖子的时候需要按照发帖时间排序,这样能够确保用户最新发的帖子展示在最上 面。遍历完帖子就需要展示帖子的详情了,这里算是前台比较难一点的地方了,至少对于我比较绕,因为帖子内 容展示的页面里还需要展示回贴,如果想做好一点的话,还需要展示楼层之间的回帖(我网站里做了这一功能) 。相当于这一个页面需要展示正在登录的用户信息,发贴人的信息,回帖人的信息,还有楼层回帖人的信息,需 要一层一层的关系去关联起来,然后在逻辑页面取出来,在模板页面遍历出来。这里写完就可以把后台完善了, 帖子和回帖的增删改查、用户的锁定,积分操作和详细信息、还有站点信息和友情链接。写完这些,网站的整体 结构也就出来了,接下来只要完善各种小功能就可以了。我这里加了许多小功能,例如搜索,精品贴热帖的高亮 ,还有版主的置顶,金币贴(还没有完善好),还有用户等级等等。
上面这些大概就是我写这个网站的流程。一路写下来,在整理思绪的同时让我感触良多,也受益匪浅, 可能还有些细节没有详述,以后在我网站会慢慢补全。同时希望大家在浏览网站的时候可以给出宝贵的建议,留 言就在网站的意见箱,我定会好好收集,认真总结。谢谢大家!
寄语:苟利国家生死以,岂因祸福避趋之。