使用与 coffeescript 相同的数组中的对象
Use an object in the same array with coffeescript
我在我的 gulpfile 中使用了 Coffeescript,我想使用在同一个数组中声明的对象,但正如我所见,它不起作用…
# SOURCES
src =
libs: [
"#{dir.libs}/jquery/dist/jquery.min.js"
"#{dir.libs}/gsap/src/uncompressed/TimelineLite.js"
"#{dir.libs}/gsap/src/uncompressed/easing/EasePack.js"
"#{dir.libs}/page.js/page.js"
"#{dir.libs}/swiper/build/js/swiper.js"
]
js: [
"#{dir.js}/site.js"
"#{dir.js}/functions.js"
"#{dir.js}/animations.js"
"#{dir.js}/init.js"
]
javascript: src.libs + src.js # this.libs + this.js is the same
正在返回 NaN
做错了吗?
当你说:
javascript: src.libs + src.js
您的 src
仍然是 undefined
因为您正在构建它。您似乎还错误地假设 +
在 (Coffee|Java)Script 中连接数组,但事实并非如此,array + array
将对数组进行字符串化,然后连接字符串,因此:
[ 'a' ] + [ 'b' ]
实际上是'ab'
.
要解决第一个问题,分两步构建src
。要解决第二个问题,请使用 Array::concat
:
src =
libs: [
"#{dir.libs}/jquery/dist/jquery.min.js"
"#{dir.libs}/gsap/src/uncompressed/TimelineLite.js"
"#{dir.libs}/gsap/src/uncompressed/easing/EasePack.js"
"#{dir.libs}/page.js/page.js"
"#{dir.libs}/swiper/build/js/swiper.js"
]
js: [
"#{dir.js}/site.js"
"#{dir.js}/functions.js"
"#{dir.js}/animations.js"
"#{dir.js}/init.js"
]
src.javascript = src.libs.concat(src.js)
或者您可以先定义 libs
和 js
,如果这更有意义的话:
libs = [
"#{dir.libs}/jquery/dist/jquery.min.js"
"#{dir.libs}/gsap/src/uncompressed/TimelineLite.js"
"#{dir.libs}/gsap/src/uncompressed/easing/EasePack.js"
"#{dir.libs}/page.js/page.js"
"#{dir.libs}/swiper/build/js/swiper.js"
]
js = [
"#{dir.js}/site.js"
"#{dir.js}/functions.js"
"#{dir.js}/animations.js"
"#{dir.js}/init.js"
]
src =
libs: libs
js: js
javascript: libs.concat(js)
我在我的 gulpfile 中使用了 Coffeescript,我想使用在同一个数组中声明的对象,但正如我所见,它不起作用…
# SOURCES
src =
libs: [
"#{dir.libs}/jquery/dist/jquery.min.js"
"#{dir.libs}/gsap/src/uncompressed/TimelineLite.js"
"#{dir.libs}/gsap/src/uncompressed/easing/EasePack.js"
"#{dir.libs}/page.js/page.js"
"#{dir.libs}/swiper/build/js/swiper.js"
]
js: [
"#{dir.js}/site.js"
"#{dir.js}/functions.js"
"#{dir.js}/animations.js"
"#{dir.js}/init.js"
]
javascript: src.libs + src.js # this.libs + this.js is the same
正在返回 NaN
做错了吗?
当你说:
javascript: src.libs + src.js
您的 src
仍然是 undefined
因为您正在构建它。您似乎还错误地假设 +
在 (Coffee|Java)Script 中连接数组,但事实并非如此,array + array
将对数组进行字符串化,然后连接字符串,因此:
[ 'a' ] + [ 'b' ]
实际上是'ab'
.
要解决第一个问题,分两步构建src
。要解决第二个问题,请使用 Array::concat
:
src =
libs: [
"#{dir.libs}/jquery/dist/jquery.min.js"
"#{dir.libs}/gsap/src/uncompressed/TimelineLite.js"
"#{dir.libs}/gsap/src/uncompressed/easing/EasePack.js"
"#{dir.libs}/page.js/page.js"
"#{dir.libs}/swiper/build/js/swiper.js"
]
js: [
"#{dir.js}/site.js"
"#{dir.js}/functions.js"
"#{dir.js}/animations.js"
"#{dir.js}/init.js"
]
src.javascript = src.libs.concat(src.js)
或者您可以先定义 libs
和 js
,如果这更有意义的话:
libs = [
"#{dir.libs}/jquery/dist/jquery.min.js"
"#{dir.libs}/gsap/src/uncompressed/TimelineLite.js"
"#{dir.libs}/gsap/src/uncompressed/easing/EasePack.js"
"#{dir.libs}/page.js/page.js"
"#{dir.libs}/swiper/build/js/swiper.js"
]
js = [
"#{dir.js}/site.js"
"#{dir.js}/functions.js"
"#{dir.js}/animations.js"
"#{dir.js}/init.js"
]
src =
libs: libs
js: js
javascript: libs.concat(js)