使用JavaScript-ES 6创建库
我正在使用Node和ES6构建一个应用程序。此应用程序有一个库,我希望跨项目使用。对于这个问题,库的目录结构如下所示:使用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
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模块语法