Qua*_*noi 16 javascript systemjs
我正在尝试使用System.JS将material-ui导入到我的React应用程序中
在我的应用程序中,我这样做:
import {AppBar, Tabs, Tab, Card, CardTitle} from 'material-ui';
Run Code Online (Sandbox Code Playgroud)
这是我的System.JS配置:
System.config({
baseURL: '/node_modules',
packageConfigPaths: [
'*/package.json'
],
packages: {
'.': {
defaultExtension: 'js',
main: 'index.js'
},
}
});
Run Code Online (Sandbox Code Playgroud)
它加载了node_modules/material-ui/index.js里面有一堆导入:
var _AppBar2 = require('./AppBar');
var _AppBar3 = _interopRequireDefault(_AppBar2);
var _AutoComplete2 = require('./AutoComplete');
var _AutoComplete3 = _interopRequireDefault(_AutoComplete2);
// ... etc, about 40 of them.
exports.AppBar = _AppBar3.default;
exports.AutoComplete = _AutoComplete3.default;
// ... etc
Run Code Online (Sandbox Code Playgroud)
在包的树结构中,每个模块都存储在它自己的目录下,如下所示:
material-ui/
index.js
AppBar/
AppBar.js
index.js -- just reexports './AppBar'
AutoComplete/
AutoComplete.js
index.js -- just reexports './AutoComplete'
Run Code Online (Sandbox Code Playgroud)
等,所以实际上要导入material-ui/AppBar,我需要System.JS加载node_modules/material-ui/AppBar/AppBar.js或node_modules/material-ui/AppBar/index.js.
相反,System.JS正在尝试加载node_modules/material-ui/AppBar.js哪些不存在.
如果我为每个模块添加单独的条目packages:
'material-ui': {
map: {
'./AppBar': './AppBar/AppBar.js'
}
}
Run Code Online (Sandbox Code Playgroud)
它有效,但是通配符:
'material-ui': {
map: {
'./*': './*/*.js'
}
}
Run Code Online (Sandbox Code Playgroud)
别.
如何将System.JS映射./*到./*/*.js某个包下?
作为旁注,browserify对此布局没有任何问题,因此当我通过调用使用browserify捆绑我的应用程序时browserify('./path/to/root/index.js'),所有material-ui模块都会导入而没有任何问题.
System.js不支持通配符路径。您必须手动为每个模块添加一个条目:
'material-ui': {
map: {
'./AppBar': './AppBar/AppBar.js',
'./AppHeader': './AppHeader/AppHeader.js',
'./AppFooter': './AppFooter/AppFooter.js',
//etc
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用jspm为您生成该列表。
| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |