【发布时间】:2015-11-25 14:15:00
【问题描述】:
我正在使用 Node 和 ES6 构建应用程序。这个应用程序有一个我想跨项目使用的库。为了这个问题,库的目录结构如下所示:
lib
logging
logManager.js
logEntry.js
security
user.js
role.js
我的实际结构不同。我选择了logging 和security 让问题更容易理解。不过,我的代码目前看起来像这样:
logManager.js
'use strict';
var User = require('../security/user.js');
class LogManager {
constructor(props) {
this.user = props.user;
}
}
module.exports LogManager;
logEntry.js
'use strict';
class LogEntry {
constructor(props) {
}
}
module.exports LogEntry;
user.js
'use strict';
class User {
constructor(props) {
}
}
module.exports User;
role.js
'use strict';
class Role {
constructor(props) {
}
}
module.exports Role;
我的思维定势可能是面向对象的 Java / C# 世界。但是,我试图弄清楚如何将这四个文件打包成一个我可以分发的文件。为了尝试做到这一点,我添加了一个如下所示的 gulp 任务:
gulp.task('package', function() {
return gulp.src(input.js)
.pipe(jshint())
.pipe(jshint.reporter('default'))
.pipe(babel())
.pipe(concat(output.js))
.pipe(gulp.dest('dist'));
;
});
此任务将所有四个文件放入一个名为dist/library.js 的文件中。但是,我有几个问题。首先,JSHint 抱怨在我的每个文件中都使用了 strict。因此,我删除了“使用严格”行只是为了尝试前进并通过 JSHint(我不想这样做)。但我觉得我真的有些不合时宜,因为当连接发生时,logManager.js 中的 require 语句会中断。
感觉一切都作为单独的组件工作。但是,当我尝试将它们完全捆绑到 library.js 中时,它会中断。我错过了什么?
【问题讨论】:
-
“我错过了什么?” MB 等号
module.exports = LogManager;? -
检查我的项目模板,它远非 100%,但也许它有助于解决你的问题:github.com/inf3rno/javascript-project-template/tree/babel 你应该在 ES6 中使用导出和导入。
标签: javascript gulp ecmascript-6