Yii - 资产转换


开发人员通常不编写CSSJS代码,而是使用扩展语法,例如用于 CSS的 LESS、SCSS、 Stylus 和用于 JS 的 TypeScript、CoffeeScript。然后他们使用特殊的工具将这些文件转换为真正的CSS和JS。

Yii 中的资源管理器会自动将扩展语法中的资源转换为 CSS 和 JS。当视图渲染时,它将包含页面中的 CSS 和 JS 文件,而不是扩展语法中的原始资源。

步骤 1 - 以这种方式修改DemoAsset.php文件。

<?php
   namespace app\assets;
   use yii\web\AssetBundle;
   use yii\web\View;
   class DemoAsset extends AssetBundle {
      public $basePath = '@webroot';
      public $baseUrl = '@web';
      public $js = [
         'js/demo.js',
         'js/greeting.ts'
      ];
      public  $jsOptions = ['position' => View::POS_HEAD];
   }
?>

我们刚刚添加了一个打字稿文件。

步骤 2 - 在web/js目录中,使用以下代码创建一个名为greeting.ts的文件。

class Greeter {
   constructor(public greeting: string) { }
   greet() {
      return this.greeting;
   }
};
var greeter = new Greeter("Hello from typescript!");
console.log(greeter.greet());

在上面的代码中,我们定义了一个 Greeter 类,其中只有一个方法greet()。我们将问候语写入 chrome 控制台。

步骤 3 - 转到 URL http://localhost:8080/index.php。您会注意到greeting.ts文件已转换为greeting.js 文件,如以下屏幕截图所示。

问候语 Ts 文件

以下将是输出。

问候语 Ts 文件输出