使用 jspm 加载依赖全局 jQuery 的脚本

Use jspm to load script that depends on global jQuery

是的,我读过 How do I shim a non CommonJS, non AMD package which depends on global jQuery & lodash?

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

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

我尝试了各种 shim / globals 技巧来加载它,但我不太明白。

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

谢谢。

如果您通过 jspm 安装 jquery,您只需像这样设置元 '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

如果像下面这样提供元 'deps' 属性(如 Mathias Rasmussen 所建议的那样)不起作用,

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

那么您可能需要提供一个 'globals' 元数据 属性,如下所示:

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

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