使用与 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)

或者您可以先定义 libsjs,如果这更有意义的话:

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)