师阳 2018-11-24 08:59:09 10735次浏览 21条回复 2 7 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

觉得很赞
  • 回复于 2018-11-24 09:13 举报

    对前端而言,在 Yii 2 中默认 bootstrap 3、jQuery、PJAX 等等个人开发用着倒也干脆利落,但在前后端分离的趋势下,那些代码集成到框架中让一个代码洁癖患者的我难以忍受。当我想把bootstrap 3升级为 bootstrap 4,在 Yii 2 中升级太麻烦了,因为它直接把一些 bootstrap3 的特性写到了Yii2 框架的代码中。

    1 条回复
    回复于 2019-01-12 22:32 回复

    这个完全可以轻松改造。前后端分离其实在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">
    ...
    
    觉得很赞
  • 回复于 2018-11-24 09:17 举报

    对于Yii扩展而言,在 Yii 2中都是以 yii2-package 来命名,在 Yii 3 中会以 yii-package 来命名,感觉使用 yii-来命名看起来更舒服。我想,这对于长远发展来说也是更有利的。

  • 回复于 2018-11-24 09:17 举报

    期待Yii3的到来

  • 回复于 2018-11-24 11:00 举报

    我也有同感

    6 条回复
    回复于 2018-11-25 19:25 回复

    俺也是..

    回复于 2018-11-26 09:09 回复

    俺也一样。

    回复于 2018-11-26 10:44 回复

    洒家也一样。

    回复于 2018-11-26 10:49 回复

    哀家也一样

    回复于 2018-11-28 14:16 回复

    朕也一样.

    回复于 2018-11-30 09:38 回复

    鄙人也一样,虽然不懂你们说什么

  • 回复于 2018-11-24 20:50 举报

    很期待Yii3

  • 回复于 2018-11-26 08:23 举报

    年底前有没有希望??

  • 回复于 2018-11-26 08:57 举报

    年底2.0.16有没有希望?3.0可以先不考虑

  • 回复于 2018-11-26 10:49 举报

    终于开始前后端分离了,大势所趋!

  • 回复于 2018-11-26 10:51 举报

    现在前端迅猛发展,感觉Yii3不如把前端分离出去,专注后端性能

    1 条回复
    回复于 2018-12-05 17:29 回复

    深有同感啊

  • 回复于 2018-11-26 10:53 举报

    啥时候会有第一个版本出来

  • 回复于 2018-11-26 10:54 举报

    非常的期待3的版本。越来越现代化了

  • 回复于 2018-11-26 11:02 举报

    有点小期待

  • 回复于 2018-11-26 14:10 举报

    支持前后端分离,期待3

    觉得很赞
  • 回复于 2018-11-28 14:41 举报

    我只想知道3.0什么时候问世,等的花儿都谢了

  • 回复于 2018-11-30 16:55 举报

    额,这个是大势所趋啊

  • 回复于 2018-12-05 17:33 举报

    深有同感啊!

  • 回复于 2018-12-07 19:49 举报

    快出来吧,我们在用前后分离,等的花儿都谢了

  • 回复于 2018-12-08 15:17 举报

    终于把前端代码从PHP中剔出来了。

  • 回复于 2018-12-12 09:13 举报

    期待Yii3

  • 回复于 2019-01-07 11:25 举报

    前后分离指的是,前台 react/vue 后台 yii3吗?
    还是其他啥意思?因为现在不就是 mvc 前后分离?

您需要登录后才可以回复。登录 | 立即注册