我在我的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
弄错了?
答案 0 :(得分:1)
当你说:
javascript: src.libs + src.js
您的src
仍然是undefined
,因为您正在构建它。您似乎也错误地假设+
在(Coffee | Java)脚本中连接数组,但它没有,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)