2015-05-15 32 views
4

看着我的gulpfile我刚刚意识到我必须在全局范围内声明所有变量。在立即调用的函数表达式中包装我的gulpfile

我的gulp文件看起来很典型(与this one不同),在文件顶部声明了一堆var

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■在文件的顶部的只是被拍打到全局对象。

我是不是很笨? 我是否应该将我的gulp文件封装在IIFE中?

如果是这样,为什么我没有在任何一个在线任何地方看到IIFE中的gulp文件的例子?

回答

3

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

顶级范围不是全球范围;节点模块内的VAR的东西将是局部的模块

所以它是确定定义变量不IIFE在gulpfile

+0

正是我需要的理解。谢谢Zhegan! – sfletche

2

请记住,一饮而尽在节点节点的运行全局的行为比不同浏览器。

在浏览器中,顶级范围是全局范围。这意味着在浏览器中,如果你在全局范围内,var的东西将定义一个全局变量。在Node中,这是不同的。顶级范围不是全球范围; var模块内的某些东西对本模块来说是本地的。

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

相关问题