【发布时间】:2017-04-21 21:41:40
【问题描述】:
我的应用是这样的结构:
app
- assets
- src
-- autogenerated
-- components
---- app
---- tabs
“自动生成”文件夹包含使用与组件文件夹相同的目录结构从 typescript 生成的已编译 javascript 文件。我使用 gulp-tsc 来创建它。 (我最终会将其重命名为“build”)
应用程序和选项卡是组件...应用程序是顶级组件。
在 app.ts 中(在 app/components/app 中)是:
import {Component, bootstrap} from 'angular2/angular2';
import {Tabs} from '../Tabs/tabs';
@Component({
selector: 'my-app',
templateUrl: 'src/components/app/app.html',
directives: [Tabs]
})
class AppComponent { }
bootstrap(AppComponent);
这个编译的时候,生成的js文件是这样的:
var tabs_1 = require('../Tabs/tabs');
它无法解析并导致 404,因为它在被浏览器加载时没有 .js 扩展名。
编辑...刚刚意识到“require”来自nodejs,而不是systemjs...仍然不确定如何继续。
** 编辑 2 ** gulp 任务:
gulp.task('compile', function() {
// compile sass to css
gulp.src('./app/assets/sass/*.scss')
.pipe(sass.sync({outputStyle: 'compressed'}).on('error', sass.logError))
.pipe(gulp.dest('./app/assets/css'));
// compile typescript
// this ignores tsconfig.json, but ideally configuration in both places should match
gulp.src(['./app/src/**/*.ts'])
.pipe(typescript({ target: "ES5",
experimentalDecorators: true,
sourceMap: true,
emitDecoratorMetadata: true }))
.pipe(gulp.dest('./app/src/autogenerated/'));
});
gulp 任务不应该使用 tsconfig.json...我添加它是为了消除 Visual Studio 代码中的错误...但这是 tsconfig.json 中的内容
{
"compilerOptions": {
"target": "ES5",
"module": "commonjs",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
}
}
index.html 代码:
<html>
<head>
<title>Angular 2 QuickStart</title>
<script src="../../node_modules/systemjs/dist/system.src.js"></script>
<script src="../../node_modules/angular2/bundles/angular2.dev.js"></script>
<script>
System.config({
packages: {'app': {
defaultExtension: 'js'}
}
});
System.import('../src/components/app/app.js');
</script>
</head>
<body>
<my-app>Loading... please wait</my-app>
</body>
</html>
【问题讨论】:
-
你能显示更多配置吗?例如 Gulp 文件?
-
我已经添加了 gulp 任务。它使用 gulp-tsc 包。
标签: angular typescript systemjs