在Angular2的angular-cli中,通过修改webpack配置来使用pug(Jade)

Angular CLI (命令行界面)

我曾经认为要使用Angular2需要写很多gulp脚本和其他复杂的设置,但是当我开始使用angular-cli时,它可以通过一个命令来创建一个项目的框架(包括Angular、TypeScript、css/less/sass/stylus和html),让我在5分钟内就可以开始开发。而且我还在一篇文章中看到了使用angular-cli来添加pug(2017/02/25时的方法)。

关于pug(Jade)的导入问题

这是一个可以以爆炸速度轻松编写HTML的模板引擎。由于Angular2 (Angular) 采用了组件化的方法,因此可能不经常编写长HTML,但是当我们需要进行一些复杂操作时,编写HTML就会变得很繁琐,因此决定引入此模板引擎。

引入 angular-cli.

大家都喜欢使用 npm 来进行安装,但最近似乎 yarn 很受欢迎,所以我尝试使用 yarn 进行安装。使用方法与 npm 几乎没有区别,而且速度快。

# yarn インストール
> npm i -g yarn

# angular-cli インストール
> yarn global add angular-cli

创建示例项目并提取webpack.config.js。

在内部进行webpack构建,所以想要修改webpack.config.js以添加pug,但找不到该文件。现在我们隐藏了它,以防止混淆那些想要保持原设置不变的用户。为此,我们提供了eject命令以进行提取。

# hello-world プロジェクト作成
> ng new hello-world

# webpack.config.js を抽出(ng eject)
> cd hello-world
> ng eject

我会在项目的根目录中检查是否存在 webpack.config.js 文件。

hello-world/
|.angular-cli.json
|.editorconfig
|.gitignore
|karma.conf.js
|package.json
|protractor.conf.js
|README.md
|tslint.json
|yarn.lock
|webpack.config.js ★ ここに抽出されます
+node_modules/
+e2e/
+src/

安装 webpack 和 webpack-dev-server。

使用默认设置时,不需要执行这个步骤,但是在 eject 项目中,需要单独安装 webpack。

> yarn add webpack-dev-server --dev
> yarn add webpack --dev

在这里,我将确认一下该项目是否正常运行。

> yarn start

如果webpack构建成功,并且在浏览器中打开 http://localhost:8080 等网址后,页面能够正常显示,则表示运行正常。

修改webpack.config.js文件,并安装pug-html-loader插件。

在module / rules中,添加(pug|jade)的配置。

...
module.exports = {
...
  "module": {
    "rules": [
      ...
      {
        "test": /\.json$/,
        "loader": "json-loader"
      },
      // ★追加。拡張子が、pug|jade なら、pug-html-loader を利用
      {
        "test": /\.(pug|jade)$/,
//        "loader": "pug-html-loader"  // 2017/05/20修正。コメント頂きました。raw-loader も必要かも?
          "loader": ['raw-loader', 'pug-html-loader'] // 'raw-loader' が必要
      },
      {
        "test": /\.html$/,
        "loader": "raw-loader"
      },

由于angular-cli中不包含pug-html-loader,因此需要进行安装。

> yarn add pug-html-loader --dev

试着构建 pug 文件。

由于以下文件是默认生成的,将html文件重命名为pug文件,并将其内容改写为pug。同时,将引用html的ts文件修改为引用pug。

    src 以下のフォルダ構成
src/
+app/
  app.component.css
  app.component.html    # ★ .html -> .pug にリネーム
  app.component.spec.ts
  app.component.ts
    .html の中身
<h1>
  {{title}}
</h1>
    .pug にして、中身も書き換える。
h1
  | {{title}}
import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.pug',  // ★ .html -> .pug にリネーム
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'app works!';
}

关于CSS,只需更改文件扩展名即可使用less/sass/scss/stylus。

另外,您只需执行以下命令,即可将生产用代码输出到 dist/ 文件夹中。

> yarn build

填补

由于部分的Angular2语法在pug中会导致编译错误,所以需要以逗号隔开或用单引号括起来进行更改。
引用属性 | pug

# カンマなし。error (click) が解釈できない
div(class='div-class' (click)='play()')

# カンマあり。ok (click) が解釈できる
div(class='div-class', (click)='play()')

多余的东西

Angular2 被广泛认为学习成本较高,但与混乱演化的 Angular1 相比,Angular2 已经变得精致许多。通过一条命令即可创建项目,只需学习与目标相关的必要概念,如服务和组件,看似可以学习到「无论如何都应该学习的知识」。因此,如果您想尝试一下但觉得有些困难,可以考虑使用 Google Chrome 的页面翻译功能,将易于理解的官方教程以日语进行享受。
教程:英雄之旅

蛇足的第二个

我觉得使用Visual Studio Code进行开发非常舒适。

以上就是。

bannerAds