“Fancybox”以JSPM / System.js为模块的全局jQuery插件实现:

时间:2016-07-25 15:47:51

标签: jquery fancybox systemjs jspm shim

我让'Fancybox'作为模块工作,我可以在主应用JS文件中导入它import fancybox from 'fancybox';。但是我无法工作的是'helper'js文件,它扩展了主要fancybox功能的功能。

覆盖部分中的JSPM Package.json从主'source / jquery.fancybox.pack.js'文件中导出'fancybox'函数。那么它应该由辅助文件扩展。

{
  "jspm": {
    "configFile": "config.js",
    "dependencies": {
      "fancybox": "bower:fancybox@^2.1.5",
    },
    "overrides": {
      "bower:fancybox@2.1.5": {
        "main": "source/jquery.fancybox.pack.js",
        "format": "global",
        "files": [
          "source/jquery.fancybox.pack.js",
          "source/helpers/jquery.fancybox-buttons.js",
          "source/helpers/jquery.fancybox-media.js",
          "source/helpers/jquery.fancybox-thumbs.js"
        ],
        "shim": {
          "source/jquery.fancybox.pack.js": {
            "deps": [
              "jquery"
            ],
            "exports": "fancybox"
          },
          "source/helpers/jquery.fancybox-buttons.js": {
            "deps": [
              "jquery"
            ],
            "exports": "*"
          },
          "source/helpers/jquery.fancybox-media.js": {
            "deps": [
              "jquery"
            ],
            "exports": "*"
          },
          "source/helpers/jquery.fancybox-thumbs.js": {
            "deps": [
              "jquery"
            ],
            "exports": "*"
          }
        }
      }
    }
  }
}

主应用程序entery point main.js:

import jquery from 'jquery';
import fancybox from 'fancybox';

jquery(document).ready(function() {
    /*
     *  Simple image gallery. Uses default settings
     */
     if (typeof jquery('.fancybox').fancybox !== 'undefined') {
            // the variable is defined

             jquery('.fancybox').fancybox();

             /*
             *  Different effects
             */

             // Change title type, overlay closing speed
             jquery(".fancybox-effects-a").fancybox({
                 helpers: {
                     title : {
                         type : 'outside'
                     },
                     overlay : {
                         speedOut : 0
                     }
                 }
             });

// ..... & other helpers and configurations.

             /*
             *  Thumbnail helper. Disable animations, hide close button, arrows and slide to next gallery item if clicked
             */
             jquery('.fancybox-thumbs').fancybox({
                 prevEffect : 'none',
                 nextEffect : 'none',

                 closeBtn  : false,
                 arrows    : false,
                 nextClick : true,

                 helpers : {
                     thumbs : {
                         width  : 50,
                         height : 50
                     }
                 }
             });
 } });

我不确定如何将助手与主要功能结合起来。感谢

1 个答案:

答案 0 :(得分:1)

我已经安装了JSPM 0.17的最新测试版... 然后我按照这个版本的文档进行了大量的试验和错误,最后这似乎满足了我的要求。在JSPM创建的特定于包的文件filename@version.json中,我已将其更改为以下代码。然后JSPM安装导致它也保存在package.json中。之后可以将包导入页面,即导入' fancybox;没有任何出口。

    {
  "main": "source/helpers/jquery.fancybox-thumbs.js",
  "format": "global",
  "meta": {
    "source/jquery.fancybox.pack.js": {
      "deps": [
        "./helpers/jquery.fancybox-thumbs.css!",
        "./helpers/jquery.fancybox-buttons.css!",
        "./jquery.fancybox.css!"
      ],
      "format": "global",
      "globals": {
        "jQuery": "jquery"
      }
    },
    "source/helpers/jquery.fancybox-buttons.js": {
      "format": "global",
      "globals": {
        "jQuery": "jquery",
        "fancybox": "../jquery.fancybox.pack.js"
      }
    },
    "source/helpers/jquery.fancybox-media.js": {
      "format": "global",
      "globals": {
        "fancybox": "./jquery.fancybox-buttons.js"
      }
    },
    "source/helpers/jquery.fancybox-thumbs.js": {
      "format": "global",
      "globals": {
        "fancybox": "./jquery.fancybox-media.js"
      }
    }
  },
  "map": {}
}