为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

收到一只叮咚 2019-04-07 11:19:24
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.17director.js1.2.6
查看完整描述

2 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

'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加载没发现问题
                            
查看完整回答
反对 回复 2019-04-07
?
慕容708150

TA贡献1831条经验 获得超4个赞

注意引入非amd模块的命名,需要与文件名一致,且路径也应该基于baseUrl,如a.js在baseUrl下的unit文件夹下,shim命名应该是‘unit/a’
                            
查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 322 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信