月度归档:2016年05月

laravel不同设备使用不同的视图

使用composer添加第三方库 jenssegers/agent

composer require jenssegers/agent
然后在app/config/app.php 里的服务提供者数组里添加该库, 并添加别名

'providers' => [
     Jenssegers\Agent\AgentServiceProvider::class,
]

'aliases' => [
     'Agent'    => Jenssegers\Agent\Facades\Agent::class,    
]

使用artisan创建一个服务提供者类
php artisan make:provider ResponseMacroServiceProvider

同样要在app.php里面配置

'providers' => [
     App\Providers\ResponseMacroServiceProvider::class,    
]
// 别名用不到,不用配置了

修改app/Providers/ResponseMacroServiceProvider.phpboot方法

public function boot(ResponseFactory $factory)
{
    $factory->macro('ress', function ($viewname) use ($factory) {
        if ( Agent::isMobile() ) {
            return view()->make($viewname . "_mobile");
        } else {
            return view()->make($viewname . "_web");
        }
    });
}

在Controller中可以这样使用

class HomeController extends Controller
{
    public function index()
    {
        return response()->ress('home.index');
        //return view('home.index');
    }

    public function article()
    {
        return response()->ress('home.article');
    }
}

最后就是把视图名改为 _web.blade.php 和 _mobile.blade.php

放下对技术的执着

选择技术的标准

选择能既好又快完成需求的,不浪费时间的、不折腾的,最主要的是自己熟悉的技术;而不是选择最新最潮的技术。许多新技术就像潮流一样,一年一个新花样,无穷无尽层出不穷。人的精力是有限的,我们不能把有限的精力放到追求无限的技术潮流上。

放下对技术的执着

技术是工具,是用来解决问题的,解决问题需要好用的工具和趁手的工具。不要沉迷于那些“洋”工具上,不要做小白鼠。如果一直沉迷其中,那么很可能的结果就是一直在坑里打转,爬不出来,最终会一事无成,到头来什么都没得到。

应该怎么做?

放下执着,不要浮躁,潜心学习基础知识,比如数据结构和算法;或学习市面上使用率最高的编程语言,如 C、C++、Java、C#、PHP、Python等。但要一定要使用它们的稳定版本,因为我们是用这些知识和工具来解决问题的,当然要用稳定成熟的。

感想

由于我是一个自由开发者,有大量的时间,曾经长期把时间浪费在了搞新技术上,投入的时间成本很大,但收益很低,因为市场上可能还不接受最新的技术,学来没什么用,只能用来装装逼。但装逼能当饭吃吗?能当钱花吗?

编程对我来说只是工作和爱好,但远远不是生活的全部。闲暇时间应该陪陪家人,或出去散散步,或锻炼身体,或看看书,或出去旅旅游,世界这么大,应该出去看看。