最近在github上找了2个系统,一个ticket系统,一个是Laravel的官方网站,都没有任何文档,自己摸索着把网站成功跑起来了。

这说明什么?我对陌生代码不害怕了, 终于不害怕了。说起来,这真的要感谢Mike,写了一个巨烂无比的破网站,为了钱,我被迫阅读代码,然后竟然读懂了,并且成功的知道怎样和老代码共存了。

于是乎,以后就可以从网上找到别人的代码,抄一抄就好了。

当然,抄代码不是目的,而是为了学习各种人的代码,好的地方, 烂的地方,自己也因此而成长了。

2018年7月1日更新
又抄了一个,www.laravelphp.uk,这网站做官网不错,会是将来FSDB的官网。

script标签有一个defer属性,效果是使JavaScript代码异步加载,而不至于阻塞HTML加载,导致用户发现页面加载时间过长。

<script src="demo_defer.js" defer></script>

其实还有个async,都是异步加载,但这个和defer有所区别。

具体请看:JavaScript高级程序设计(第3版)

yii\base\Controller里,有一个public method,是beforeAction,这个方法,yii\base\ActionFilter也有的,并且这个ActionFilter其实是yii\base\Behavior的一个子类。

注意一下继承关系:
yii\base\BaseObject

  • yii\base\Component

    • yii\base\Controller
  • yii\base\Behavior

    • yii\base\ActionFilter

这两个不同的类,但又同样一个beforeAction方法。

顾名思义,这个方法就是在action之前最后一步,原文是:

yiibaseController : This method is invoked right before an action is executed.
yiibaseActionFilter : This method is invoked right before an action is to be executed (after all possible filters.) You may override this method to do last-minute preparation for the action.

都是接受一个参数,Action $action,返回值都是true 或者 false

或者return parent::beforeAction($action)

返回的结果,决定了该$action是否被执行。

移动互联网时代,时间碎片化更加严重,比如排队的几分钟,等车的间隙,等人的间隙,这都是可以利用的碎片化时间。

那么,有2个占据这些时间的方式:短视频,所以抖音起来了;5分钟一局的游戏,比如斗地主。

但这种5分钟一局的游戏,除了斗地主就没别的了么?思考一下。

还有5分钟的小音频什么的,podcast channel?

当然了,短视频什么的,才是真·时间黑洞。

通常,在Yii2 Controller里做重定向(redirect),一般用下面的方式:

public function actionHello()
{
   return $this->redirect('/world');
}

public function actionWorld()
{
   return 'World!';
}

这种方式的后果是,http status code是302

那么,如果想修改为301怎么办呢?

 return $this->redirect('/world', 301)->send();

感觉很像
是一个key嘛
用于更方便的查询某个tag

暂时这么理解吧 2018.6.14

更新: 20180620
Q: Since Max uses 'ref' as the key to identify a tag, i guess maybe it's similar with the 'id' in html ?

A: Not really. "id" doesn't give you any access to the element - ref does though. With ref, you get a reference that allows you to directly work on the underlying DOM element from within your JS code.

With "id", you could get that access via getElementById and then it would be equivalent but ref doesn't need that extra step.