我非常喜欢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风格的项目中使用角度模块?请注意,我想将它用作库,我不想将我的项目转换为其他类型的模块系统。
欢迎任何建议,谢谢!
答案 0 :(得分:0)
使用CommonJS包装器映射Angular模块,例如:
# angular is required globally
{{name}} = angular.module '{{name}}', []
module.exports = {{name}}
答案 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项目分解为主要文件,而不必担心尝试加载一堆脚本标记会使服务器瓶颈缩颈。