在gulp+webpack的环境下使用Angular2创建HelloWorld
因为想使用Angular2,所以先看了官方的5分钟快速入门,发现它使用了SystemJS。
我并不太熟悉SystemJS,平常都使用webpack,所以希望能用webpack来运行它。
顺便说一下,我希望用gulp一键编译,所以我想写一篇关于如何在gulp+webpack环境下运行Angular2的方法。
顺便提一下,我使用的是Angular2的rc4版本。
希望它能尽快正式发布。
必需品
-
- npm
-
- webpack
ts-loader
gulp
gulp-webpack
安装Angular2
执行下面的命令,使用npm来安装Angular2。
这次我们将使用@angular/platform-browser-dynamic和@angular/core,但是为了保险起见,我们会将所有与Angular2相关的组件都安装上。
npm i -S @angular/common @angular/compiler @angular/core @angular/forms @angular/http @angular/platform-browser @angular/platform-browser-dynamic @angular/router @angular/router-deprecated @angular/upgrade rxjs@5.0.0-beta.6 zone.js@0.6.12 core-js
创建文件
创建一个用于加载和运行Angular2的HTML文件(index.html),以及作为入口点的ts文件(myapp.ts)。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Hello Angular 2!</title>
</head>
<body>
<!-- ここにMyAppComponentを挿入する -->
<my-app>Loading…</my-app>
</body>
<!-- webpackで結合後のjsファイルの読み込み-->
<script src="./bundle.js"></script>
</html>
import "core-js";
import "rxjs/Rx";
import "zone.js/dist/zone";
import {bootstrap} from "@angular/platform-browser-dynamic";
import {Component} from "@angular/core";
// myAppコンポーネント定義
@Component({
selector: "my-app",
template: `
<h1>Hello World!</h1>
`
})
class MyAppComponent {
}
//index.htmlで使うための準備
bootstrap(MyAppComponent);
webpack的配置
将webpack.config.js文件设置如下。
module.exports = {
// エントリーポイント
entry:'./app.ts',
// 出力するファイル名
output: {
filename: './bundle.js'
},
// 依存関係
resolve: {
root:['./node_modules'],
extensions:['', '.webpack.js', 'web.js', '.js', '.ts']
},
// TypeScriptを読み込むためのloader
module: {
loaders: [
{ test: /\.ts$/, loader: 'ts-loader' }
]
}
}
gulp的设置
将gulp.js写成以下格式。
基本设置在webpack中已经完成,因此这部分设置并没有太多内容,基本上只是调用的操作。
var gulp = require('gulp');
var webpack = require('gulp-webpack');
var webpackConfig = require('./webpack.config.js');
// TypeScriptのコンパイルとwebpackの実行
gulp.task('ts', function () {
// TypeScriptのコンパイル
var tsResult = gulp.src(['./*.ts'])
.pipe(webpack(webpackConfig))
.pipe(gulp.dest('./'));
});
// コマンドで「> gulp」と入力したときのタスク
gulp.task('default', ['ts']);
编译
如果你到这一步了,只需要执行gulp命令,就会生成bundle.js文件。由于Angular2的依赖关系也已经解决了,所以在index.html中只需要就可以使用创建的组件了。