Angular 1.x 到 Angular 2 的升级之路

在这篇文章中,将探讨如何将一个名为“Extreme Results”的Angular1.x应用程序升级到Angular 2。这个升级过程涉及到将应用迁移TypeScript,这是Angular团队推荐的升级步骤之一。所有相关的代码都可以在GitHub仓库中找到:https://github.com/bjaanes/ExtremeResults-WebApp。

准备工作

在开始升级之前,需要确保开发环境、分发构建和单元测试都能在迁移后正常工作。这意味着:

  • 开发环境:能够启动开发服务器,自动编译并在每次保存文件时准备一切。
  • 分发构建:通过一个简单的命令进行压缩和编译。
  • 单元测试:测试能够正确运行,并且能够生成覆盖率报告。

将所有文件转换为TypeScript文件

首先,将所有的JavaScript文件(*.js)重命名为TypeScript文件(*.ts)。这一步相对简单,因为TypeScript是JavaScript的超集。目前,只是改变了文件扩展名,还没有真正使用TypeScript的功能。如果在编译过程中遇到错误,可以暂时忽略,将在后续步骤中解决这些问题。

集成到构建过程中

接下来,需要将TypeScript文件集成到现有的构建过程中。这包括使用gulp插件gulp-typescript来编译TypeScript文件为JavaScript文件。

npm install --save-dev typescript gulp-typescript

然后,添加gulp任务来执行编译:

gulp.task('typescript', ['clean'], function() { return gulp.src('src/app/**/*.ts') .pipe(typescript({ target: 'es5' })) .js .pipe(gulp.dest('tmp/typescript')); });

这将编译所有的.ts文件为JavaScript文件(特别是ES5,以确保在所有浏览器上都能工作),并将它们保存到‘tmp/typescript’目录下。然后,需要配置gulp任务,在捆绑任务之前运行这个编译任务。

更新捆绑配置

为了使捆绑任务能够正常工作,需要更新捆绑配置文件,使其查找编译后的文件而不是原始的JavaScript文件。

scripts: [ './tmp/typescript/app.js', './tmp/typescript/**/*.module.js', './tmp/typescript/**/*.js', ],

这样,开发和分发构建就可以正常工作了。如果不使用捆绑,可能需要调整这个过程以适应构建过程。

单元测试

为了使单元测试能够运行,需要将karma指向编译后的文件,而不是原始的JavaScript文件。这意味着在运行测试之前,需要先构建项目。

files: [ ..., 'tmp/typescript/**/*.module.js', 'tmp/typescript/**/*.js', ]

现在,测试将加载编译后的文件,并像预期的那样运行。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485