AngularJS 1.6.2集成TypeScript遇两类问题,寻求解决方案
AngularJS 1.6.2 集成 TypeScript 问题求助
背景
一周来尝试多份指南将 TypeScript 集成到 AngularJS 1.6.2 项目中,多次中途陷入困惑,目前使用第四份指南推进。
项目核心结构
ProjectRoot --> app ----> js ------> controllers ------> directives ------> services ------> modules ------> app.js ------> main.js ------> routes.js ----> templates ----> index.html --> gruntFile.js --> package.json
实际结构更复杂,以上为核心相关文件及目录。
已添加的 TypeScript 文件
ProjectRoot/app.ts
import { BaselineService } from './app/js/services/baselineService' import { BaselineController } from './app/js/controllers/baselineController' import angular from 'angular'; angular .module('app',[]) .controller('ctrl', BaselineController) .service('service', BaselineService);
ProjectRoot/app/js/services/baselineService.ts
export class BaselineService { static $inject = ['$http']; constructor(private $http) { } get() { return this.$http.get('url'); } }
ProjectRoot/app/js/controllers/baselineController.ts
import angular from 'angular'; import { BaselineService } from '../services/baselineService'; export class BaselineController { prop: string; static $inject = ['service']; constructor (baselineService: BaselineService) { this.prop = baselineService.get(); } } angular.module('app').controller('BaselineController', BaselineController);
ProjectRoot/gruntFile.js(相关配置片段)
module.exports = function (grunt) { ... grunt.initConfig({ ... ts: { default: { src: ['_all.ts'], out: 'src/out.js', options: { sourceMap: true } } } }); }
ProjectRoot/package.json(相关依赖片段)
{ ... "dependencies": { ... "browserify": "^17.0.0", ... } ... }
两个核心困惑
- 指南中提到一个用于跟踪项目所有文件的依赖文件,编译时会转为ES5、合并为单文件并包含源映射,但未说明该文件的名称、扩展名及存放位置。该文件内容如下:
/// <reference path='typings/Angularjs/angular.d.ts' /> /// <reference path="typings/Angularjs/angular-route.d.ts" /> /// <reference path='typings/moment/moment.d.ts' /> /// <reference path='app.ts' /> /// <reference path='controller.ts' /> /// <reference path='service' />
- 指南提到需结合tsify和browserify先编译TypeScript,再遍历依赖链,最后通过命令
browserify app.ts -p tsify --debug > bundle.js打包应用,但未详述操作步骤。在项目根目录的Powershell中执行该命令时,提示The term 'browserify' is not recognized as the name of a cmdlet, function, script file, or operable program.,即便已执行npm i browserify。
求助需求
请解决以下两个问题:
- 上述包含reference路径的文件应如何命名、存放在哪里?
- 如何正确安装和运行browserify来打包应用?
内容的提问来源于stack exchange,提问作者gib65
相关产品推荐
相关产品推荐

