关于require的小白问题

不好意思,提一个小白问题,各位大师不要见笑。
require获得另外一个模块的脚本文件。那么require以后,我可以在当前脚本用那个require来的模块里面的什么呢?
文档里面说可以用导入的对象。指的是用这个对象的组件,当成一个整体是吧,还是说对象内部的方法都能用?
貌似是不能用的,因为需要用module.export才能调用。
有点蒙圈。

require后,还需要获得相关节点,然后getcompent拿到js组件,看这个js组件挂在哪节点上

如果目标脚本是组件,可以获得组件的类(对象内部的方法需要 addComponent 或 getComponent 后获得了实例才能用)。否则可以获得目标脚本中的 module.exports 对象(默认是空 Object)

1赞

谢谢大师
比如 var player = require(‘Player’);
Player只是新建立了一个ccclass的空的目标脚本,里面不增加对象和方法。
但是只要Player脚本是挂到Player这个节点上的,只要我们getComponnet(player), 那么还是可以用此player节点的各种方法,比如cc.moveTo, 或者cc.node.rotation之类的,是吗?

@jare @bluehumor

可以用player的方法呀,我也是才开始学习。

设置module.export 之后,被require,返回的就是刚才设置的值,可以是任意类型:class,object,function 等等。

如果只有require, 没有module.exports,那么应用的范围又是什么呢?什么能用什么不能用?感觉这一块文档说的含糊不清,要么也可能是我理解力比较低吧。

没有module.exports. require就得不到任何值,如果被require的文件中设置了全局变量,那么在你require之后可以访问全局变量。(通常不推荐这种写法,全局变量不应该滥用)

是的

对用户定义的组件来说,没有设置 module.exports 就会自动 export 组件的类,其余没有就是没有了。

非常感谢,貌似有点懂了。

非常感谢,貌似清楚了。

例如,我想在另一个脚本Item.js,获得另一个模块Game脚本。,我在Item.js脚本中,要怎么写拿到getType方法呢,var Game = require(“Game”);这样不行,只是拿到了,还需怎么的操作。,看了上面说的还得挂到节点上,要是不挂呢,怎么得到?你说的"对象内部的方法需要 addComponent 或 getComponent 后获得了实例才能用",能否就我这个问题实例解答一下呢

解决了。原来不是所有的类都要new,组件类只需要add添加上去,引擎封装好了。追问下组件与类就这个区别吗?,还有一点个人感觉require有个不太友好的地方。我只要有一个地方require这个组件类,其他地方想拿这个类,就只需要getComponent,难道说require会全局使用?

调用多次跟调用一次是一样的效果。还是那里需要就那里require调用吧,这样更友好些,更好理解此吧…