同福

编程基础第二课,web框架【20201023】

介绍

介绍

上一课我们知道了什么是框架以及框架在编程当中起到的作用是什么,框架在编程当中的作用就是大幅减少相似项目开发过程中的重复工作。既然框架要解决的是相似项目的开发过程中的重复工作,那么区别很大的项目又该怎么办呢?例如:我们要开发一个Windows桌面程序,或者我们要做一套web系统的接口,又或者我们要做一个留言板网页,很显然这些不同的项目是无法使用同一套框架解决基础架构的搭建工作的,这个时候我们就需要根据不同类型的项目建立不同的框架。

上一课我们有介绍,如果要开发Windows桌面程序可以使用VC的MFC框架,如果要开发一套web系统的接口可以使用Java的SpringBoot框架,如果要开发一个简单的网页功能可以使用PHP的TP、Yii、Laravel框架。这里面的SpringBoot和TP、Yii、Laravel、TFAPI都属于web框架,它们用来开发web应用程序,这些程序需要在浏览器上运行。

web框架可以用来开发一个网址,一个平台,一套应用接口,一个网页小功能,在互联网大行其道的现今,编程一般就是特指web编程,主流开发语言就是Java、PHP,主流web框架就是SpringBoot、TP、Yii、Laravel、TFAPI。

模式MVC

MVC是Model(模型)、View(视图)、Controller(控制器)的简写,它是一种模式,它将web编程的代码分成了三个层面。MVC的设计理念是:

  • 数据是存储在模型(Model)里面的

  • 用户通过视图(View)来查看数据

  • 模型(Model)通过控制器(Controller)将数据展示到视图(View)上面

web框架基本上都是遵循MVC模式设计的,甚至很多web框架直接就在框架里面建立了model、view、controller三个文件夹,在里面实现MVC相关的对象。

模型Model

模型一般情况下就是负责对数据库(MySQL、ES等等)进行存储、读取操作,存储操作将用户更新的数据提交到数据库里保存起来,读取操作将数据库的数据查询出来放入数据模型里面而后交给控制器去处理

视图View

视图就是用户界面,这个一般情况下会通过网页模板将数据美化后展示到用户面前。一个视图上面的数据有可能是多个模型的数据组合到一起的,也有可能是一个模型的一部分数据,这些都是在控制器里面进行管理的。

控制器Controller

控制器就是负责将模型里的数据根据视图的需要一个一个地摆放到网页模板上面的。

大家可以形象地想一下:模型就是一个一个纸箱子,里面放着各种各样的商品;视图就是一个一个的货架,上面是空空导弹的;而控制器就是从纸箱子里面将商品拿出来,根据货架上面的标签把商品拜访到货架上。

路由Router

路由对于web框架是非必须的,在早期的web框架,在用户访问到URL网址上面的虚拟路径就对应着服务器上面一模一样的物理路径,举例:

虚拟路径:https://tongfu.net/about/contactus.php

物理路径:/tongfu.net/web/tfhome/about/contactus.php

后来大家感觉这样的设计存在严重的安全隐患,即:我们可以通过手动敲入一些虚拟路径,探测服务器上面有哪些目录和文件,这样实在太不恐怖了!

然后就有人提出了“路由”概念,即:将URL网址上面的虚拟路径和服务器上面的物理路径通过一系列规则进行映射,而规则之外的虚拟路径就会被抛弃掉,从而避免被探测服务器的目录结构的风险,举例:

虚拟路径:https://tongfu.net/about/contactus

物理路径:/tongfu.net/web/tfhome/view/contactus.inc.php

扩展Extend

扩展对于web框架也是非必须的,但是没有扩展的web框架基本只是一个玩具,因为没有扩展的web框架基本什么都做不了。

扩展包括数据库操作、搜索引擎操作等等的第三方工具的处理软件包,可以想象一下,一个没有数据库的web框架能做什么!!

扩展还包括特殊工具软件包,例如:excel处理、zip压缩包处理等等,在特别情况下某些功能是需要这些软件包的。

扩展还包括第三方插件工具,例如:文本编辑器Ueditor、图表生成器eCharts等等,在实现某些功能的时候,需要借助这些插件工具才能实现。

ae942df0830f5b00.jpg

总结

今天童鞋们跟着福哥学习了web框架的基本知识,以及设计一个web框架需要的基本要素。后面福哥会带着大家亲手建立一套基于PHP语言的web框架——TFPHP,大家可以更深层次地了解web框架是怎么回事,了解web框架的工作原理了。

P.S.

微信公众号的文章发出去之后是不能编辑的,但是福哥偶尔会修复一些描述不到位、示例不正确、结构不清晰等等的文章错误,这些只能在网站上才能看到最新版本内容,望大家知晓~~