requirejs shim好像不能解决 引用的模块不是AMD规范的问题

requirejsshim好像不能解决引用的模块不是AMD规范的问题
1:director.js这种库不是amd规范的,如果我不去改它的源码,把它用define包裹,它就不能被正确的注入requirejs,利用shimapi也没办法解决这个问题。
2:我跑了官网的例子,backbone和underscore,shim智能解决他们依赖的问题,并没有像文档所说解决了它们不是AMD模块而转为支持AMD的问题。其实他们不用shim也是可以被正确注入的。
3:我简单看了一下requirejs的源码,它源码很难看懂,makeShimExports这个方法好像也不是解决支持非AMD模块的。。
希望有使用经验的朋友,可以解答我的疑惑,感谢。
requirejs.config({
shim:{
director:{
exports:'director'
}
}
});
require(['director'],function(director){
console.log(director)//undefined
})
RequireJS2.1.17
director.js1.2.6
收到一只叮咚
浏览 323回答 2
2回答

元芳怎么了

'usestrict'require.config{shim:{director:{exports:'Router'}}}require['director'],(directorRouter)->author=()->console.log"author"books=()->console.log"books"viewBook=(bookId)->console.log"viewBook:bookIdispopulated:#{bookId}"routes={'/author':author'/books':[books,()->console.log"Aninlineroutehandler."]'/books/view/:bookId':viewBook}router=directorRouter(routes)router.init()用官网例子改写的shim加载没发现问题

慕容708150

注意引入非amd模块的命名,需要与文件名一致,且路径也应该基于baseUrl,如a.js在baseUrl下的unit文件夹下,shim命名应该是‘unit/a’
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript