请教在模板文件调用控制器用来引入子视图如何实现?
是这样,我的上级以前在国外,在微软做.net开发,现在负责我开发的PHP项目。
目前他负责前端的开发,他要求后端可以实现:
- 视图页面分解成部分视图(组件化,后面称组件),类似日历组件、页面header部分这种
- 在任何页面中都可以调用这个组件,并且组件生成要走控制器可以获得模板变量。
- 可以用ajax调用这个控制器,以获得渲染好的html代码可以直接覆盖页面上的原组件。
目的是为了页面第一次打开由后端渲染好页面,页面打开后可用ajax直接拿到组件的html来覆盖原组件dom。
根据我的调研:
- 在laravel和yii中叫components,tp中叫weight,提供了组件功能,可以由框架渲染这个组件,并且可以使用模板变量这种方式为组件提供数据,将但这种方式不能通过url或ajax请求。
- controller控制器这种可以通过ajax访问到却并不能在视图文件中直接调用。
- 这些框架都支持模板直接引入模板文件,由父页面控制器将页面内组件需要用到的数据统一给到父视图中,再由子视图去使用。但这种办法会很难维护,前端要在那个视图中调用组件,后端就要去那个父视图的控制器提供组件要用的数据。
- 这种开发方式是很久之前的后端mvc开发方式,所有页面在后端渲染返回给前端,目前已经接近过时了。
这些都不能同时实现他的要求,因此我与他发生一些技术上的分歧:他认为这是mvc的标准操作,这样可以使前端更轻,所有渲染让后端来做,以后无论在电脑还是手机的网页都可以运行的很快,并且很抵触后端将数据以json形式返回给前端让前端用js来渲染的做法,认为这样就不符合mvc的概念了。
而我认为mvc只是一种概念,这种功能最多是框架在实现mvc的基础上提供给开发者的一种功能,目前的web开发前端占得比重越来越大了,多数情况下都是前后端分离开发。而且现在的客户端设备性能已经很强大了,加载一个页面不至于让前端卡到什么地步的,反而所有的视图组件由后端渲染好无论在服务器压力或是网络传输都是比较不太好的。
我目前不知道如何实现这种方式,也不知道怎样说服他这种开发方式已经基本抛弃了,他希望我无论用什么方式都要实现。希望有了解的大佬可以指点一下是我没找到正确的实现方式还是确实现在的框架都不支持这种做法,以及这种开发方式对于现在的web开发有何意义,是否国外认为这种方式是主流的web开发方式。
推荐文章: