请教一个node.js的require用法
a.js/b.js/c.js三个在同一目录下
a.js包含b.js和c.js,但b.js和c.js也需相互调用,所以也想相互包含(但发现b.js和c.js里面的想互包含有一个会失败,失败哪个取决于他们在a.js中被包含时的先后顺序)
运行
node a.js
ps:我现在是通过在a.js全局变量(即不用var声明变量),然后b.js和c.js不包含任何其它文件,直接用全局变量调用,来解决的
1.我想问,在node.js中,一般这种解决方案什么样的啊? 还是说就是我上面的这种用法?? 2.还是说我这个结构本身有问题??但感觉相互调用在业务逻辑中还是会存的吧
刚在Stack Overflow看到一个方法,即在b.js中可以耦合c.js,但在c.js中如何获得b.js引用,则通过在a.js中包含c.js时,调用c.js的一个init函数,将b.js的引用做为参数传递进去。。。好像也是一个方法就是了
你这个问题我遇到过类似的,我当时要做的大概是这样的。我写了一个
JSONValidation.js
,他是一个类文件,有一个vali
的方法,其中要传入验证的对象obj
,验证的规则schema
等。问题就在这里了。schema
本身也是一个json
,我是用一个json-schema
去验证一个json-obj
,流程是可以实施,能有效控制json-obj
,但是却没有代码能控制json-schema
,如果json-schema
不进行控制,就相当于配置了错误的验证规则。于是就有2种解决思路,第一种是让所有的程序员必须按照json-schema
的规则去写,否则错误自己承担,第二种就是我能去验证json-schema
,并在错误的时候提醒程序员。我当时采用了后者,我是用JSONValidation
去解析我的参数json-schema
,此时就出现了问题。这个工具类只能解析外部的json
数据,却无法解析内部的json
数据,因为解析外部的时候,其实他内部的所有构造都已经实例化了,不会有组件缺失。二让他解析内部参数的时候,因为他还没有完全实例化,只是接收到了参数,因此就会出现错误。 你的问题就是你在使用这些类文件的时候,是否将文件里的构造封装成类,是已经实例化好的还是需要通过某些手段间接实例化的。你采用全局对象的方式,其实就是默认将其一开始全部实例化好,所以不会出现组件缺失的问题。因此你需要通过画时序图和类图来确认:
- 你有哪些类、组件
- 这些类和组件的引用关系
- 他们的生命周期 当然你不这么研究也是可以的,那就是要全部采用全局的方式,
java
中就是static
方式,东西写大了带来的问题你也清楚是吧,总而言之,确保你的a.js
、b.js
、c.js
在相互引用的时候,所需要的组件或者参数都是已经实例化好的