美文网首页
项目经验总结 —— 简易新闻站

项目经验总结 —— 简易新闻站

作者: _走向孤独_ | 来源:发表于2019-03-05 19:11 被阅读0次
    数据库设计

    历时一个月,终于完成了这个练手项目,这个完整的项目让我对原生 php、js、前后端交互有了更多的认识,首先是对 DOM 熟练了很多(毕竟写 js 时大多数情况要么是操作 DOM 节点要么是绑定 DOM 事件,想不熟练都难),然后是熟悉了 js 的 ajax 扩展 XMLHttpRequest,不刷新页面的交互目前我只能用它完成,另外,由于整个系统是由我自己经过思考总结设计出来的,基本是摸着石头过河,过程中频繁踩坑,因此也就对系统级设计有了一点自己的初步认识,最后的一点感受是,我觉得前端并不比后端简单,事实上就这个项目来说,我的前端纯 js 代码量比后台纯 php 少不了多少,纯展示的页面还好,后台系统的管理页面需要添加的各种事件就比较多了,各种事件的嵌套、监听关系比起我后端写的 php 来一点都不简单,所以要说简单也顶多只能说前端切静态页简单,而切图本就是前端最基本的技能,复杂点的交互页面做起来可一点都不比后端简单,所以我认为主要是看业务吧,要谈前后端谁更复杂应该是特定于某个业务的,有些业务前端复杂,有些业务后端复杂,不能笼统的说前端比后端简单。

    简要说下项目,该项目是用纯原生代码实现的,没有套用任何框架,包括模版引擎之类的都没有使用,是个较为简陋的新闻站,除实现了必要的增删改查和新闻呈现外,还实现了简单的用户系统、评论系统、专题系统、懒加载、数据统计等,虽然使用的是纯原生,但各部分代码是完全分离的,即 HTML、CSS、JS、PHP 文件都是各自分开存放的。项目后台响应数据时采用了 index.php 处理所有数据的方式,这样做的目的是为了提高网站的安全性,网站内部结构不会直接暴露出来,在使用这种机制后,我能想到的只有页面中少数几个引用资源的地方会暴露一些结构出来,其余大部分内部结构都被隐藏掉了。

    总的来说这次项目很不轻松,毕竟这还是我第一次从头到脚的实现整个网站系统(现在觉得从前写过的几个小静态站、信息管理系统简直是过家家),没任何人告诉我项目的业务流程是什么样的、数据库结构该如何设计、各个模块该如何实现、前后端该如何交互,甚至连需求都得靠我自己想,测试也得自己做 …… 我应对的办法就是一个人冥想苦思、百度、翻书,好在我还算有一点算法的底子(现在觉得算法是真的锻炼人啊,益处太多),这些最终都扛了下来,不过虽然预期功能大都实现了,但自我感觉代码写的并不到位,甚至很多地方自己都觉得写的很烂,不过造成这些的原因并不在于算法上,也不在于某个模块的实现上,毕竟这个项目中涉及到的大都是些简单数据处理,在我看来是相对轻松的事。

    真正的难点在于对整个系统的布局把控,每当有一个部位写的不易衔接、可扩展性不强,就容易导致其它部位跟着迁就,而迁就多了就容易造成整个项目代码冗余、逻辑难懂、难以维护,例如最基础的 HTML 标签嵌套、id、class 的分配就严重关系到 js、css 的书写,可以说把 HTML 做好是写好 js、css 的基础。后端 php 倒是不怎么受前端那三样的影响,php 的书写主要是受制于整个系统的运作,尤其重要的是数据库设计,数据库设计的好坏直接决定了存取数据是否繁琐、功能实现是否方便,其次才是前后端交互方面的问题,比如 cookie、session、跨域等。其实往大了看,无论前端、后端,很大一部分考验的都是对实际问题抽象化的能力,例如 HTML 标签嵌套、id、class 这些就是对页面布局的抽象,而数据库结构的设计是对业务逻辑的抽象,整个系统便是由前、后端等各模块的抽象层所共同组合而成的一个大抽象层(或许设计模式研究的就是这个?),虽然有时这个大抽象层做的好,代码实现难度反而会提高一些,但这对整个系统的运作却是有好处的,关于这个问题,我的观点是:在实现难度允许的范围内,应尽量将抽象层做的更完善一些,可扩展性更强一些。

    这个项目我是边做边想的,其实这完全不对,起码对做一个系统来说,在实操前就应该将整个系统的抽象层设计好,而且是设计的越细越好,这样在实现整个系统时便不容易出差错。最后,在真正开始代码实现时,要循序渐进,先搭建项目整体的大框架,然后一层一层的向内推进实现细节,而不是先将一个模块全部做完,再做另一个模块,这样可以及早发现问题,降低模块间出现不协调的概率。

    其实做到后面我想改的东西很多,比如加上天气预报、后台的富文本编辑或其它一些功能,并且原有功能也做的不够细致,但想想还是算了,时间不允许,如果现在将这个项目再推倒重来,我有自信在十多天内将数据库设计的更好,代码写的更加精炼,功能更加完善,页面更加美观。但我不这么做,因为我不想再在它身上浪费时间了,这实在太花时间了,它已经用掉了我整整一个月时间,这是远超出我预期的,我原本的预计是最多在一周内搞定,所以就这样吧,让它留下来,也许以后偶尔会回来看看从前写的屎代码。

    目前我的原生已经算是有些基础了,接下来我需要开始接触框架,并且算法、网络、linux 这些也都要跟上,时间紧迫。

    相关文章

      网友评论

          本文标题:项目经验总结 —— 简易新闻站

          本文链接:https://www.haomeiwen.com/subject/uwaouqtx.html