ES6模块/节点模块重复需要或将其作为参数传递?

时间:2015-04-27 17:04:07

标签: node.js ecmascript-6 commonjs node-modules

我对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

希望我明确表示,我有这个疑问,因为很多时候这就是为什么我决定发布问题,这将是一个了解真相的启示。

0 个答案:

没有答案