Angular模块作为节点模块?

时间:2014-12-08 21:57:47

标签: angularjs node.js ecmascript-6 porting traceur

我非常喜欢angular's core modules,我试图在node / io.js环境中使用其中的一些功能;即:以将角度模块转换为commonjs格式的ES5模块

我尝试使用traceur逐个手动构建角度模块但没有成功(生成循环依赖)并尝试调整角度项目gulpfile.js以生成commonjs格式的ES5输出:

var _COMPILER_CONFIG_JS_DEFAULT = {
  sourceMaps: true,
  annotations: true, // parse annotations
  types: true, // parse types
  script: false, // parse as a module
  memberVariables: true, // parse class fields
  modules: 'commonjs'
};

...正在运行 build / transpile.js.dev 任务,但我一直面对这样的信息:

TypeError: Cannot call method 'map' of undefined

即使更改默认配置中的sourceMaps,我也无法摆脱此map错误。

我也注意到了他们的转换工具,它似乎实际上处理了输出格式。但我没有机会改变它的选择。我只能在System.register格式的文件中使用默认配置,但我无法将其转换为commonjs。

有没有人经历过这一切都有一个解决方案,在一个commonjs风格的项目中使用角度模块?请注意,我想将它用作库,我不想将我的项目转换为其他类型的模块系统。

欢迎任何建议,谢谢!

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我认为使用Angular模块以及构建步骤将所有文件连接到一个主文件是一种很好的方法。

这是我正在工作的项目的gulpfile.js.

var gulp = require('gulp');
var concat = require('gulp-concat');


    var path = 'app/js/';
    var srcFiles = [path + 'midi.js',
                    path + 'keyboard.js',
                    path + 'analyser.js',
                    path + 'services/amp.js',
                    path + 'services/lfo-amp.js',
                    path + 'services/osc.js',
                    path + 'services/filter.js',
                    path + 'services/lfo.js',
                    path + 'audio.js',
                    path + 'synth.js',
                    path + 'app.js'];

    gulp.task('default', function () {
      gulp.src(srcFiles)
        .pipe(concat('app.js'))
        .pipe(gulp.dest('dist/js/'))
    });

gulp.src接受要连接的文件数组,并保持所有文件的顺序正确。您现在可以将Angular项目分解为主要文件,而不必担心尝试加载一堆脚本标记会使服务器瓶颈缩颈。