一.设计思路
1.项目的流程
在讲留言板的制作之前,我决定还是先讲一下项目这个概念,以及项目的流程。
一个项目通俗来讲就是在规定期限内花费一定的资源所完成的产品,如果把我们所做的留言板的功能扩大,它便是一个项目。而一个项目的开发也是有严格的流程,总的来说有以下几个流程:需求分析,概要设计,详细设计,编码,测试,交互,验收,维护。我觉得在制作留言板开始,很有必要先了解一下项目的流程,我下面就简单介绍下这几个流程的意思。
需求分析:在项目的第一个阶段,客户向你提出他的需求,根据客户的需求,写一份需求文档;
概要设计:根据需求文档,想好所做的产品应该具备哪些功能模块和接口,写一份概要设计文档;
详细设计:根据概要设计,得知了哪些功能模块后,设计相应的数据结构,算法,层次结构等,写出一份详细设计文档;
(我个人认为这三个阶段是一个项目最重要的过程,不知道需求,没有设计好产品的功能模块和算法,最终导致的结果是自己在编码过程出现了种种问题,浪费了大量的时间与精力)
编码测试:这个就不用我多做什么解释了,其实在我看来,编码对于程序员来说并不是什么难事,所以在进行编码前一定要做好准备工作;编码完成后便是测试,测试其实是一门技术活,很有可能你测试的时间比你编码的时间还要长。
交互验收维护这个就没什么好说的了,从字面的意思就能看出来是什么了。
2.留言板的制作流程
之所以一开始便讲项目的流程,是为了让大家脑子里面有项目这个概念。下面就以留言板来举例说明。可能你觉得这只是个练手的小demo,但是我认为,你若是把他当做一个小型的项目来认真对待,效果可能会超出你的想象。我强调的是,在拿到一个项目,你不要急着敲代码,最好是花点时间把项目的流程走一遍,最后是有一份文档。
需求设计:先想一想,自己的这个留言板要实现哪些功能,自己最好用个文档记录一下。这最不起眼的一步,我觉得是最关键的一部,这一步做的好坏直接会影响你留言板制作的好坏,毕竟思路要清晰。
数据库设计:根据你的需求,想想应该设定哪些表,每个表应该哪些字段,我只能说数据库一定要认真设计,因为留言板的最主要功能都是通过数据库的操作来实现的,所以设计一个合理的数据库很重要。
界面设计:界面设计包括前台界面和后台界面,做个留言板你总要有个界面才说得过去吧,建议你们最好是先想想自己的界面应该怎么布局设计,这里只是单纯的界面设计。
编码测试:前面一系列的工作做好了,然后就可以开始进行编码以及测试,这个没什么好说的。
二.相关技术
制作一个留言板,所涉及的技术或则说你应该掌握的技术,我先列举出来:
html,css,javascript,php,mysql,bootstrap,ajax
1.html+css+javascript
我们常说的前端开发工程师,便要掌握这些技能;因为对于前端来说,这是一套的,所以我在这里一起列举出来。我简单地介绍下这几个技术。
首先是html,这是超文本标记语言,里面包含了许多标签,可以制作最基本的静态网页,就比如留言板的注册界面的输入框;可很多时候,对于一个网页来说,静态往往不能满足人们的需求,比如说我需要他可以实现一些动态的效果,这个时候便需要用JavaScript来实现我们所想要的网页动态效果,比如说注册界面你需要判断输入是否合法以及账号是否存在,这个时候便是JavaScript来实现这些;人都是喜欢美的,当一样东西功能齐全的时候,我们便开始想把他做的好看,美观,这个时候css,层叠样式表便凸显出他的作用了,css的作用便是给各种html中的标签添加样式,使其美观。
对于PHP程序员来说,我觉得这些东西不一定要精通,但是最基本的了解还是应该有的,至于达到什么程度,我个人认为,以淘宝或者其他一些网站为例,当你能够自己看着他的页面然后写出他的界面布局代码,我觉得就算是通关了。
2.PHP+MYSQL
其实php和mysql应该是分开的,但是我之所以把他们一起提出来是因为对于一个留言板的制作,其实我们需要用到的PHP知识是很少的,不外乎就是数据库的链接,以及对数据库的增删改查操作,这里我提一下就好了。
3.bootstrap
bootstrap其实是一个框架,里面是一些别人写好的css样式和js的样式。也许你会说,他的样式并不是想象中的那么好看,或者说你自己也能写出很好的样式。但有时候对于PHP程序员来说,重心并不是在前端上,可我又觉得我自己弄出来的样式不要看,而又没有专门的前端开发人员或者说是美工,这个时候bootstrap便能完美解决你的问题。你只需要进入他的官网,下载他的包,解压后放入自己的项目更目录下,并在要用到的PHP文件中导入头文件,便能直接使用他提供的样式。我个人还是觉得挺好用的,不会还可以去查看帮助手册。
4.ajax
我以注册界面为例,当我们输入账号时,通过js获取账号,在js里面判断账号的格式是否正确;可如何判断账号是否已经注册过了呢?很多人的做法是直接将这个表单提交出去进行数据库查询判断,但这样其实并不是最好的做法,对于用户来说是很麻烦的一件事情,他们更希望的是当我焦点离开输入框的时候就能知道这个账号能不能使用。我们知道html可以传值给js,js能返回给html,php也能和html相互传值,那么js如何给php传值呢?这个时候便需要ajax来实现了。关于ajax我就不多讲了,只是给你提一下有一个印象,在我的上一篇博客也有关于ajax的实例应用。
三.经验与建议
1.基本功能
a.前台:用户登陆注册,增删改查(留言);
b.后台:管理员登陆,增删改查(留言或用 户),权限设置。
其实整个留言板的核心功能也就以上列举的那么一点,如果只是写这么一点,就如我前面所提到的那样,他只是一个留言板,一个小demo而已;若是你学有余力,那么你可以尝试去完善他。
2.附加功能
a.好友系统(互粉)
b.消息系统(互相发送消息)
c.点赞或是加精,置顶,推荐
d.其他一些
用户互动功能。。。。。。
总结起来:简单便是留言板,加工便是贴吧,论坛,博客;这就看你的心有多大。
3.登陆注册
a.验证码(网上有写好的类,可以直接使用)
b.判断用户信息是否合法(前面已经提到过,用js实现
)
c.检测账号是否存在(ajax)
d.提交表单检测(php)
e.session和cooki
e(这两个还是有区别的,session主要是用于服务端,cookie则是客户端)
f.正则表达式(很强大一个东西,方便字符串操作)
详细的内容我今天已经讲过了,不多累述了。你也许用不到这些东西,我也没有仔细讲 ,但我最主要的目的只要给你提出这些东西,让你有个印象,当自己要用到的时候便可以自己去网上查找学习应用。
4.增删改查
a.前面已经讲过了,你目前只要掌握php链接数据库,以及数据库增删改查的语句便足够了,深入的以后再学。关于这个我也不多说了,我前面的博客有专门的记录,不是很清楚的同学可以自己去翻翻。
b.在添加文本的时候,可能大家会觉得
5.页面设计
a.html+css+js(仿照网上的页面设计)
b.bootstrap框架(css+js布局)
6.安全性与合理性
a.考虑一些用户
非法或者恶意
操作时的情景
b.合理性,注重用户体验(比如验证码,账号判断)
(你现在有这个概念就可以了)
7.调试
一个好的程序员是会自己去解决程序出的问题的,PHP和js没找到可以单步调试的编辑器,这里我教大家手动调试。
a.PHP:使用 echo “”;die();来查看结果是不是自己想要的来进行判断。
b.js:使用alert将所得值打印出来进行分析。
其实就是看输出的结果和自己想要的结果是不是一样的,方便自己进行判断。
在留言板制作过程中,最常见的错误便是数据库操作错误,这个时候你先看自己的sql语句有没有写错,怎么判断呢?你可以将这句sql语句直接拷贝到数据库里面看能不能执行,如果不能就说明你这句话有问题,如果能便是说明你其他地方出错了。
8.数据库缓存技术
对于留言板,我们现在只是少量用户可能没什么感觉,可是当有大量用户都在使用数据库进行增删改查,可能会造成数据库的拥堵,导致最直接的结果便是我们一个页面的信息久久提交不过去或者是久久获取不了信息。这个时候便需要数据库缓存技术了,大概介绍一下,他其实就是PHP为数据库开辟的一块缓存区域,数据库一次性将数据放在这个缓存区域,那么你要想获取数据库的数据,只需要和缓存区域进行交互就可以了。关于详细介绍,在我以前写的博客里面也有,有兴趣的同学可以去看看。这个只需要了解就是了,现在用不到,你以后也许会用到。
9.数据库设计
在数据库的用户表里,我们有一条记录是记录的一个用户,显然这个用户可能在留言表里面也有记录,在评论表里面也有记录。这个时候如果我想删除这个用户,这是删除了用户表里面的记录,可其他表里仍有他的留言或者评论,这些可能就是垃圾数据了,我们并不需要,若是我们通过PHP一个一个去操作,显然工作量大并且繁琐。在这里,向大家提出触发器这个东西,触发器可以实现当你删除一条用户的时候,他可以删除所有和他相关的存在其他表中的一些记录,大大优化了代码量,当然增加插入都是可以的。感兴趣的同学可以去百度搜索下。
10.一些建议
a.注重思维的培养
b.学会调试
(对于一名程序员来说,养成良好的思维习惯是十分重要的,而调试这门技能也是必不可少的;就比如说你现在才接触PHP,你不懂,所以你去找会的人问,万事开头难,我觉得能理解,可当你接触了一段时间还是一遇到问题就去问别人,我就觉得不妥了。做为一名程序员,你遇到问题的第一反应应该是自己该去如何解决这个问题,而不是去找人询问;而调试和上网查资料恰好能让你具备分析问题和解决问题的能力,当你具备了这种能力后,不断地积累便会形成自己独特得思维。)
c.视频(兄弟连PHP教程,PHP100都可以,前者讲得很详细,后者更多的则是讲案例,根据自己的需要选择)
d..理论+应用(知行合一)
关于理论和应用的的关系,我就贴张图表达下我的观点
e.多看看一些别人的作品,这种网上很多的;平时浏览一些网站的时候大家也可以留意一下,想想自己能不能做出这样的东西,如果有什么你觉得你不会或者是你觉得很有意思的效果,那么你可以学习下。
打了这么多,就到这里了吧,我说的有什么错误的地方希望大家指出来或者大家有什么疑问也可以和我讨论,共同学习进步。