leuisken.github.io/_posts/2015-03-10-still-many-work.html
LeuisKen cb84c8562a fix
2015-03-11 12:34:28 +08:00

29 lines
4.3 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
layout: post
category: "design-pattern"
tag: [thinkPHP, Node, Express, PHP]
title: 学了一点thinkPHP和express谈谈MVC
---
<p>过完年了,还有一大堆坑着的项目等着我去填。作为一个开发人员,无止境的调试肯定是很烦的,但根源还是,团队成员不在一起。其实,不是需求改的多,是交流没到位啊!</p>
<p>作为一篇开坑帖我就不多废话了简单说一下然后还有bug等着我fix。</p>
<p>接触tp其实还是因为在项目开发中遇到了对数据库的处理。轮到我头上了开发就一定要做的。自己也知道不是后台开发出身写出的代码肯定充满注入点。。。所以就选择直接学习tp吧直接正面刚一波后端需求也是我的风格咯。</p>
<p>后来tp用的有一点自己的感觉了然后接触node的express发现了很多共同之处以至于对MVC模式有了一些浅薄的理解。我自己的体会难免有偏颇之处也真心希望和大家邮件交流。</p>
<p>正文开始:</p>
<p>说到MVC一般来时是指Model \ View \ Controller这三部分那个说backbone.js的放学别走。Model说白了就是你可以直接操作的对象比如你把数据库操作封装成了一个db类规定了set、get等方法这就是一个Model个人理解为数据或操作的模型。Model会因数据库而异但相对来说有很大的重用性。View是纯纯的前端模板或者说模板渲染层顾名思义就是视图展示出去的东西所以肯定这里的大部分工作是传统的前端领域。出于View层重用性的考虑一般会在模板里引入变量公有头文件等等等等。而这些变量是怎么引入的呢我们接下来在tp和express中理解一下Controller控制器</p>
<p>以我目前的理解来看Controller就是路由控制。我们知道用户在浏览器输入一个url请求的是服务器上的一个具体文件。由于我们采用了目前这种模式我们的V都是服务器渲染出来的并不是静态的文件。所以说单纯指向文件的URL不能作为我们网站页面的链接地址的所以我们需要对路由规则进行设置比如我访问根目录下的reg'/reg'就要给我显示注册页面等等。如何根据传来的URL去选择渲染哪个模板这就是控制器C要做的。当然为了模板的重用性C还负责向模板传入变量以及简单的逻辑等等。</p>
<p>现在就来说说C在tp的实现吧。tp只有一个单入口——index.php而tp的URL常常会是这个样子。</p>
<pre>localhost/index.php/Index/Index/index.html</pre>
<p>我来翻译一下这个的意思是请求Index项目下的Index控制器下的index方法。有点绕对不对不急慢慢来如果我用这样的形式来写你看看。</p>
<pre>localhost/index.php?g=Index&amp;m=Index&amp;a=index</pre>
<p>是不是发现了什么对的在tp里面index.php后面的路径本质上是GET传参然后对URL进行重写感觉上就好像是有那个文件一样。这种重写习惯上被称为伪静态主要目的是为了SEO。PS:话说g \ m \ a这三个参数还是我一点点试出来的呢也是惨。</p>
<p>再看express倒是很直接的出现了这样的代码举个最简单的例子。</p>
<pre>
app.get('/reg', fucntion(req, res){
res.send('Hello World!');
})
</pre>
<p>我来解释一下这行代码的意思是当以GET方式访问'/reg'时,执行某函数。示例中的函数会返回一段'Hello World'作为应答。虽然简单却也体现了express的C大概是怎么一个东西。</p>
<p>MVC这种模式很早就有了但是在WEB开发中起到了很大的影响。随着前后端分离的需求越来越明显前后端的分工情况也在发生着改变加上node的出现前端从只负责V到参与C再到现在主流的V+C。工作是越来越多了但是技术体系也在不断的完善。前后端分离的优势是很明显的我感触最深的这两点1.工作上不再有必然的时序联系API文档做的好就行了2.前后端(甚至中间件)均可作为独立的产品发布。后者,个人认为对提高前端的待遇有挺大好处的。</p>
<p>简单结个尾,这就是我目前的一些想法。欢迎大家电邮我一起讨论。</p>