使用JavaScript-ES 6创建库

使用JavaScript-ES 6创建库,javascript,gulp,ecmascript-6,Javascript,Gulp,Ecmascript 6,我正在使用Node和ES6构建一个应用程序。此应用程序有一个库,我希望跨项目使用。对于这个问题,库的目录结构如下所示: lib logging logManager.js logEntry.js security user.js role.js gulp.task('package', function() { return gulp.src(input.js) .pipe(jshint()) .pipe(jshi

我正在使用Node和ES6构建一个应用程序。此应用程序有一个库,我希望跨项目使用。对于这个问题,库的目录结构如下所示:

lib
  logging
    logManager.js
    logEntry.js
  security
    user.js
    role.js
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'));
    ;    
});
我的实际结构不同。我选择了日志记录和安全性,以使问题更容易解决。尽管如此,我的代码目前看起来如下所示:

lib
  logging
    logManager.js
    logEntry.js
  security
    user.js
    role.js
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'));
    ;    
});
logManager.js

logEntry.js

user.js

role.js

我的思维定势可能是在面向对象的Java/C世界中。然而,我正试图找出如何将这四个文件打包成一个可以分发的文件。为了做到这一点,我添加了一个吞咽任务,如下所示:

lib
  logging
    logManager.js
    logEntry.js
  security
    user.js
    role.js
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。因此,我删除了“use strict”行,只是为了继续前进并通过JSHint获得我不想做的东西。但我觉得我真的有点不对劲,因为当连接发生时,logManager.js中的require语句就会中断


感觉一切都是作为单独的组件工作的。然而,当我试图将它们全部捆绑到library.js中时,它就崩溃了。我错过了什么

模块导出中存在语法错误

// this is wrong syntax (missing "=")
module.exports LogManager;
由于您已经使用了babel,因此可以切换ES6模块

// default export of module (ES6 syntax)
export default LogManager;

// importing modules (ES6 syntax)
import User from 'security/user';

我错过了什么?MB等于符号module.exports=LogManager;?检查我的项目模板,它远不是100%,但可能有助于解决您的问题:您应该在ES6中使用导出和导入。那么,您是否建议我从myLibrary.js中的“security/User”导入用户?正如Yury Tarabanko评论的那样,您的导出语法是错误的。您可以修复它并使用commonJS模块或使用ES6模块语法