Codeigniter 使用 User Agent 类为手机输出不同的视图是否很糟糕
Posted
技术标签:
【中文标题】Codeigniter 使用 User Agent 类为手机输出不同的视图是否很糟糕【英文标题】:Codeigniter is it bad to use User Agent class to output different views for mobilesCodeigniter 使用 User Agent 类为手机输出不同的视图是不是很糟糕 【发布时间】:2015-07-31 12:14:49 【问题描述】:我一直在尝试解决一个应用程序,它的设计在移动设备和桌面设备上会有所不同。
在 Codeigniter 中使用 User Agent 类并根据您使用的设备加载视图但将相同的数据解析到视图中是不好的做法。
例子:
if ($this->agent->is_mobile() && $this->input->get('signin') != 'true')
$this->data['meta_title'] = $this->data['meta_title'].' | Splash Page';
$this->load->view('path/to/view/mobile/splash', $this->data);
else
$this->data['meta_title'] = $this->data['meta_title'].' | Login';
$this->load->view('path/to/view/login', $this->data);
这种用法的一个例子可能不仅是设计上的差异,还可能是你想转移到启动页面或其他东西。
以这种方式在 Codeigniter 中构建应用程序是不好的做法吗?
【问题讨论】:
【参考方案1】:这是一个有点牵强的问题......
如果使用 CodeIgniter 构建此特定功能是一个先决条件,那么这是您能做的最好的事情。
但是,由于 php 是一种服务器端语言,它不能直接探测客户端的浏览器,并且必须依赖自我报告的数据,这就是 CI 的用户代理库所做的。 这本身应该不错,因为(例如)它允许桌面用户将自己报告为移动客户端,这可能对他们有用,但另一方面并不可靠。
相反,您应该使用 javascript 等客户端技术来探测访问者的浏览器,以检测其功能。到那时,后端是否使用 CodeIgniter 并不重要,因为不是 PHP 框架负责这个特定的任务。
【讨论】:
那么在 CMS(内容管理系统)之类的东西中,当与后端一起工作时,他们对我提出的建议没有任何问题吗? 这取决于...没有直接的答案。 或者我应该在一页中只有 2 个版本的 html 并根据设备隐藏/显示?【参考方案2】:您可能应该使用媒体查询来针对不同的设备和视口更改网站的设计(您可能知道)
例如。在桌面上显示元素并在移动设备上移除元素就像向目标元素添加 display: none
一样简单。
@media (min-width:500px)/*Class name*//*properties*/
@media (max-width:499px)/*Class name*//*properties*/
这只是说任何时候屏幕尺寸大于 500px 时,都会应用某些样式,当小于 500px 时,它将应用不同的属性。
也就是说,这并不是一个坏习惯,但也不是很理想。
【讨论】:
以上是关于Codeigniter 使用 User Agent 类为手机输出不同的视图是否很糟糕的主要内容,如果未能解决你的问题,请参考以下文章