【问题标题】:Mobile website and desktop website : do I have to duplicate my code?移动网站和桌面网站:我必须复制我的代码吗?
【发布时间】:2013-04-02 08:26:40
【问题描述】:

我有一个使用 Symfony2 构建的网站,我想使用 jQuery mobile 创建它的移动版本(我目前正在使用 Twitter 引导程序作为桌面版本)。

我真的很困惑我必须选择的解决方案:

  • 创建一个子域,例如:http://mobile.mywebsite.com 并创建另一个 Symfony 项目,该项目非常相似,但只有其他 html.twig 文件(用于集成 jQuery 移动),但这意味着我会复制一个大我的代码的一部分?

  • 在 html 文件中我的 symfony 项目中的媒体查询,以根据屏幕大小使用 jquery 移动元素。因此,我只需要维护一个项目。

任何建议都会很棒!谢谢!

【问题讨论】:

  • 为什么要创建两个项目?您正在使用允许响应式 UI 的 Twitter Bootstrap。为什么不改进您的 Twitter Bootstrap CSS 并调整您的 Symfony2 后端以使网站具有响应性?
  • 我在想 jQuery mobile 提供了更多的可能性,例如在列表中切换元素只是用手翻转等......它更像是一个原生应用程序
  • 除非您将 Symphony2 架构构建为 RESTFUL 服务,否则将这两个平台混合在一起没有多大意义。如果 Symphony2 提供了很多视图,那么我不会走 jQuery 移动路线。将这两个平台混在一起会有点痛。

标签: jquery-mobile mobile symfony responsive-design


【解决方案1】:

最佳做法是创建一个具有响应式设计的页面(媒体查询是其中的一部分),可以适应任何屏幕尺寸。

你绝对不应该创建第二个 Symfony 项目。您实际上是在尝试为您的网站制作 2 种不同的布局,因此它们只会影响您的视图。如果您不想使用响应式设计,您可以为您的移动页面创建 Twig 模板,并从您用于桌面网站的相同控制器加载这些模板。

【讨论】:

    【解决方案2】:

    可以根据域名做路由:

    http://symfony.com/doc/master/components/routing/hostname_pattern.html

    有了这个,您可以为移动网站使用不同的控制器,但仍然可以重复使用您的模型和(至少部分)您的视图。您甚至可以通过在路由中设置一个参数(基于主机)然后在控制器中使用它来重用一些控制器:

    # routing.yml
    
    mobile_homepage:
        path:     /
        host:     m.{domain}
        defaults: { _controller: AcmeDemoBundle:Main:homepage, mobileVersion: true }
        requirements:
            domain: %domain%
    
    homepage:
        path:  /
        defaults: { _controller: AcmeDemoBundle:Main:homepage }
    

    然后在你的控制器中:

    // Acme/DemoBundle/Controller/MainController.php
    
    public function homepageAction($mobileVersion = false) {
      ...
      if ($mobileVersion) {
        // do some mobile things, perhaps return a specific template
      } else {
        // do some non-mobile things, perhaps return a specific template
      }
      ...
    }
    

    【讨论】:

      【解决方案3】:

      我知道这有点晚了,但它仍然可能对其他人有用。

      今天早上我遇到了同样的问题,Google 给了我 MobileDetectBundle https://github.com/suncat2000/MobileDetectBundle/,这似乎解决了这类问题。还没试过,但我一定会的!

      【讨论】:

        猜你喜欢
        • 2012-06-28
        • 2015-03-02
        • 1970-01-01
        • 2018-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多