Yii 3.0 了解下,你们怎么看? [ 技术分享 ]
Yii 3 做了大量不兼容的改变,在 Yii 2 中前后端高耦合的问题也会得到解决,大量组件被拆分成扩展的形式而不是集成到框架代码中,开始用 Semver 语义化版本规范等等,除此之外还有大量的改变。
参考
代码仓库:https://github.com/yiisoft/yii-core
Yii 3 的详细改变:https://github.com/yiisoft/yii-core/blob/master/CHANGELOG.md
主要开发计划: https://github.com/yiisoft/yii-core/blob/master/ROADMAP.md
关于 LTS 版本的讨论:https://github.com/yiisoft/yii-core/issues/22
项目模板:https://github.com/yiisoft/yii-project-template
包、扩展命名规范:https://github.com/yiisoft/docs/blob/master/packages.md
共 21 条回复
-
对前端而言,在 Yii 2 中默认 bootstrap 3、jQuery、PJAX 等等个人开发用着倒也干脆利落,但在前后端分离的趋势下,那些代码集成到框架中让一个代码洁癖患者的我难以忍受。当我想把bootstrap 3升级为 bootstrap 4,在 Yii 2 中升级太麻烦了,因为它直接把一些 bootstrap3 的特性写到了Yii2 框架的代码中。
共 1 条回复这个完全可以轻松改造。前后端分离其实在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"> ...
mulinqiu 觉得很赞 -
php_yii_wen 回复于 2018-11-26 11:02 举报
有点小期待
师阳 无锡
最后登录:2022-12-09
在线时长:62小时57分
- 粉丝52
- 金钱4731
- 威望220
- 积分7551