Javascript 将gulpfile包装到立即调用的函数表达式中

Javascript 将gulpfile包装到立即调用的函数表达式中,javascript,gulp,iife,Javascript,Gulp,Iife,看着我的gulpfile,我刚刚意识到我必须在全局范围内声明所有变量 我的gulpfile看起来非常典型(与之类似),在文件顶部声明了一堆vars var gulp = require('gulp'); var browserify = require('gulp-browserify'); var concat = require('gulp-concat'); var less = require('gulp-less'); var refresh = require('gulp-liver

看着我的gulpfile,我刚刚意识到我必须在全局范围内声明所有变量

我的gulpfile看起来非常典型(与之类似),在文件顶部声明了一堆
var
s

var gulp = require('gulp');
var browserify = require('gulp-browserify');
var concat = require('gulp-concat');
var less = require('gulp-less');
var refresh = require('gulp-livereload');
var minifyCSS = require('gulp-minify-css');
但这对我来说意味着文件顶部的所有这些
var
s只是被拍打到全局对象上

我是在装傻吗? 我应该在生活中包装我的大口文件吗


如果是这样的话,为什么我在网上的任何地方都看不到一个生活中的垃圾袋的例子呢

gulpfile在节点中运行,而不是在浏览器中运行。在浏览器中,这些变量将被定义为全局变量。在节点中,这是不同的。就从

顶层范围不是全局范围;节点模块内的某个变量将是该模块的本地变量


因此,在gulpfile中定义没有IIFE的变量是可以的,记住gulp在节点中运行,而globals的行为不同于浏览器

在浏览器中,顶级作用域是全局作用域。这意味着,在浏览器中,如果您在全局范围变量中,则会定义一个全局变量。在节点中,这是不同的。顶层范围不是全局范围;节点模块中的某个变量将是该模块的本地变量


所以这些变量不是全局变量。节点的工作原理与浏览器稍有不同,因此您应该阅读以了解差异

这正是我所需要的理解。谢谢哲干!