2

是的,我已经阅读了 How do I shim a non CommonJS, non AMD package which depends on global jQuery & lodash? .

我正在尝试通过 jspm 加载 X.js,它不是一个“包”,而是一个我无法控制的旧 js 文件,它需要一个全局 jQuery 对象,并且需要像在脚本标签中一样运行。

我正在使用 System.import('app/X'); 加载它。

我尝试了各种 shim / globals 技巧来加载它,但我无法弄清楚。

如何编写 config.js 以便能够导入该 X 文件以便它看到一个全局 jQuery 对象?我是否必须将 X 设为“包”并安装它才能更好地填充它?

谢谢。

4

2 回答 2

3

如果你通过 jspm 安装 jquery,你只需要像这样设置 meta 'deps' 属性:

System.config({
  meta: {
    'app/X': {
       deps: ['jquery']
    }
  }
});

System.import('app/X');

确保正确获取 X 路径并检查 jspm 如何设置 System.config 'paths' 和 'map',默认情况下会自动添加尾随 .js(使用路径 *.js 通配符),因此您不能添加它。

也许也可以尝试从文档中查看这些链接https://github.com/systemjs/systemjs/blob/master/docs/module-formats.md#globals https://github.com/systemjs/systemjs/blob /master/docs/config-api.md#meta

于 2015-08-07T02:20:31.790 回答
1

如果提供如下的元“deps”属性(如 Mathias Rasmussen 所建议)不能解决问题,

System.config({
  meta: {
    'app/X': {
       deps: ['jquery']
    }
  }
});

那么您可能必须提供一个“全局”元属性,如下所示:

System.config({
  meta: {
    'app/X': {
       globals: {
           'jquery': 'jquery' 
       }
    }
  }
});

为了使上述工作正常,您需要通过 jspm 安装 jquery。执行上述操作还应该允许您通过导入System.import('app/X');import 'app/X';不导入 jquery 来导入插件。单独导入插件也应该将 jquery 作为依赖项引入。

于 2015-12-28T20:53:17.877 回答