如何自动化函数式编程,并避免重复自己

问题描述 投票:0回答:1

在我的 gulpfile.js 中,我有以下两个函数,它们利用渲染 gulp-nun-jucks 来呈现 2 个不同的视图...


function genNunJucks(cb) {
    return src(paths.views.src)
        .pipe(nunjucksRender({
            path: ['src/views/'], // String or Array
            ext: '.html',
            inheritExtension: false,
            envOptions: {
                watch: true
            },
            manageEnv: manageEnvironment,
            loaders: null
        }))
        .pipe(htmlbeautify({
            indentSize: 2,
            "eol": "\n",
            "indent_level": 0,
            "preserve_newlines": false
        }))
        .pipe(dest(paths.views.dest))
    cb();
}

function genNunJucks2(cb) {
    return src(paths.views.src2)
        .pipe(nunjucksRender({
            path: ['src/views/'], // String or Array
            ext: '.html',
            inheritExtension: false,
            envOptions: {
                watch: true
            },
            manageEnv: manageEnvironment,
            loaders: null
        }))
        .pipe(htmlbeautify({
            indentSize: 2,
            "eol": "\n",
            "indent_level": 0,
            "preserve_newlines": false
        }))
        .pipe(dest(paths.views.dest2))
    cb();
}

当涉及到 gulp 进程的返回区域中的工作时,如何将这两个函数组合成一个执行相同工作的函数?您会注意到我的

path.views.src(x)
是我重复该过程的原因。

也许我可以应用某种循环过程来查看 paths.views.src:['','',''] 的完整数组?

非常感谢任何提示

javascript gulp nunjucks gulp-nunjucks-render
1个回答
0
投票

您可以为此使用闭包,并创建一个获取

src
作为参数并返回您要使用的
genNunJucks
的函数:

function createGenNumChunksFunction(src) {
  return function genNunJucks(cb) {
      return src(src)
          .pipe(nunjucksRender({
              path: ['src/views/'], // String or Array
              ext: '.html',
              inheritExtension: false,
              envOptions: {
                  watch: true
              },
              manageEnv: manageEnvironment,
              loaders: null
          }))
          .pipe(htmlbeautify({
              indentSize: 2,
              "eol": "\n",
              "indent_level": 0,
              "preserve_newlines": false
          }))
          .pipe(dest(paths.views.dest))
      cb();
  }
 }

并且您可以通过

genNunJucks
createGenNumChunksFunction(paths.views.src)
,而不是在您现在使用它的地方传递 
createGenNumChunksFunction(paths.views.src2)

© www.soinside.com 2019 - 2024. All rights reserved.