mulinqiu
- mulinqiu 赞了回复
对前端而言,在 Yii 2 中默认 bootstrap 3、jQuery、PJAX 等等个人开发用着倒也干脆利落,但在前后端分离的趋势下,那些代码集成到框架中让一个代码洁癖患者的我难以忍受。当我想把bootstrap 3升级为 bootstrap 4,在 Yii 2 中升级太麻烦了,因为它直接把一些 bootstrap3 的特性写到了Yii2 框架的代码中。
对前端而言,在 Yii 2 中默认 bootstrap 3、jQuery、PJAX 等等个人开发用着倒也干脆利落,但在前后端分离的趋势下,那些代码集成到框架中让一个代码洁癖患者的我难以忍受。当我想把bootstrap 3升级为 bootstrap 4,在 Yii 2 中升级太麻烦了,因为它直接把一些 bootstrap3 的特性写到了Yii2 框架的代码中。
这个完全可以轻松改造。前后端分离其实在YII2中很容易实现。类似下面的代码。
1、公共资源(CDN)服务器,放静态资源如css、js;
2、配置前端资源:/*前端资源配置*/ 'assetManager' => [ //yii\web\AssetManager 'linkAssets' => false,//使用符号链接,前提是操作系统和Web服务器允许可以使用符号链接 'appendTimestamp' => true,//给资源文件末尾添加时间版本 'forceCopy' => YII_DEBUG ? true : false,//强制复制资源文件到@web/asset,不管是否有更新,在开发环境下=true;在生产环境下=false //'bundles' => require __DIR__ . '/' . (YII_ENV_PROD ? 'assets-prod.php' : 'assets-dev.php'), ],
3、添加一个cdn引用链接配置文件如cdn.php放在config下面,格式如下:
return [ 'global' => [ 'plugins' => [ 'bootstrap' => [ 'css' => [ 'bootstrap.min.css' => 'http://cdn.backend.com' . '/global/plugins/bootstrap/css/bootstrap.min.css', ] ], 'jquery' => [ 'jquery.js' => 'http://cdn.backend.com' . '/global/plugins/jquery/jquery.js', 'jquery.min.js' => 'http://cdn.backend.com' . '/global/plugins/jquery/jquery.min.js', 'jquery.min.map' => 'http://cdn.backend.com' . '/global/plugins/jquery/jquery.min.map', ], ],
4、将3中的cdn导入到全局配置main.config,可以片定义一个Cdn类,如下:
/** * Class Cdn * 静态资源组件,该组件定义了静态资源如css、js等文件地址的信息 * * @package common\components */ class Cdn extends Component { public $cdn = [];//资源地址 public function getCdn() { return $this->cdn; } }
并导入到全局配置main.config中如下:
/*cdn资源共享配置*/ 'cdn' => [ 'class' => 'common\components\Cdn', 'cdn' => require(__DIR__ . '/cdn.php'), ],
5、在Asset中加载静态资源:
class LoginAsset extends BaseAsset { /* 全局CSS文件 */ public $css = [ ]; /* 全局JS文件 */ public $js = [ ]; /* 依赖关系 */ public $depends = [ 'login\html\assets\CoreAsset', ]; public function init() { parent::init(); $this->css = \yii\helpers\ArrayHelper::merge($this->css, [ \Yii::$app->get('cdn')->cdn['login']['html']['static']['app']['css']['base.css'], \Yii::$app->get('cdn')->cdn['login']['html']['static']['app']['css']['login.css'], \Yii::$app->get('cdn')->cdn['login']['html']['static']['app']['fonts']['style.css'], ] ); $this->js = \yii\helpers\ArrayHelper::merge($this->js, [ \Yii::$app->get('cdn')->cdn['login']['html']['static']['app']['js']['login.js'], \Yii::$app->get('cdn')->cdn['login']['html']['static']['app']['js']['warning.js'], ] ); } }
6、在index.html中注册资源:
<?php \login\html\assets\LoginAsset::register($this); ?> <!-- BEGIN CONTAINER --> <div class="container"> ...
console不需要authmanager,也就是说不需要认证,因为能执行console的用户已经是管理员账号了。
你怎么连QueryParamAuth的access-token都能省?千万不要误导人啊。
你好,执行composer install一直这种错误,什么原因呢?