我对ES6模块有疑问,并且还扩展了节点commonjs模块样式。
主要问题是如何更好地解耦?,在每个需要该依赖项的文件中重复import / require语句,或者有一个需要/ imports的主文件,然后将这些值作为参数传递。用简单的词语很难解释,只是一个简单的例子:
脚本-task.js
var gulp = require('gulp'),
options = require('../options'),
babelify = require('babelify'),
browserify = require('browserify'),
source = require('vinyl-source-stream'),
del = require('del'),
errorParser = require('../error-parser');
module.exports = function(gp) { /*gulp task*/ }
和
gulpfile.js
var gulp = require('gulp'),
options = require('./gulp/options'),
errorParser = require('./gulp/error-parser'),
del = require('del'),
gp = require('gulp-load-plugins')();
gt.scriptsTask(gp);
Asyou在两个文件中看到gulp,del和其他人都重复了但是gp也作为参数传递,因为我不想在所有任务中重复这个要求。同样可以应用于gulp等。
主要问题是哪种方式更好的性能/可维护等等。
我更喜欢让一个文件处理所有需求,然后通过参数传递它们,在我看来,因为一切都在一个地方,所以我觉得可能是一个难以维护的地狱,我很困惑。我读到需要只进行一次,然后进行缓存,因此在需要相同的次数时没有额外的性能影响,但它看起来很丑陋。
与ES6模块有关的问题的另一部分:
a.js
import render from './b.js';
export let shared = {
canvas: undefined,
context: undefined
}
//operations here
render();
b.js
import {shared} from "./a.js";
或
a.js
import render from './b.js';
let shared = {
canvas: undefined,
context: undefined
}
//operations here
render(shared);
b.js
//no import
希望我明确表示,我有这个疑问,因为很多时候这就是为什么我决定发布问题,这将是一个了解真相的启示。