2015-07-10 43 views
2

是的,我读过How do I shim a non CommonJS, non AMD package which depends on global jQuery & lodash?使用jspm加载依赖于全局jQuery的脚本

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

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

我尝试了各种填充/全局技巧,使其加载,但我不能完全弄清楚。

如何编写config.js以便能够导入该X文件以便它看到全局jQuery对象?我是否必须让X成为'包'并安装它才能够更好地提升?

谢谢。

回答

3

如果安装通过JSPM jQuery的,你需要的是设置荟萃“DEPS”属性是这样的:

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

System.import('app/X'); 

一定要正确地获得X路径和检查JSPM如何设置System.config '路径'和'地图',默认情况下会自动添加后缀.js(使用路径* .js通配符),因此您不得添加它。

也许尝试从文档这些链接看起来也https://github.com/systemjs/systemjs/blob/master/docs/module-formats.md#globalshttps://github.com/systemjs/systemjs/blob/master/docs/config-api.md#meta

+0

为什么要从'jquery'导入'app/X';'在其自己的文件中导入$似乎工作并执行System.import('app/X');'不,甚至当这样配置?对不起,我对jspm还是一个新东西,甚至对于文档来说,至少可以说是令人困惑的。 –

1

如果提供的元“DEPS”属性如下内容(由马蒂亚斯·拉斯穆森的建议)不会做的伎俩,

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

,那么你可能必须提供一个“全局”元属性类似如下:

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

为了使ABO已经工作,你将需要通过jspm安装jquery。做以上操作也可以让你通过执行​​或import 'app/X';来导入插件,而不必导入jquery。单独导入插件也应该引入jQuery作为依赖。