2012-07-29 125 views
0

我在几个目录中有node.js模块,因为我遵循MVC模式。我需要拨打要求到位于当前目录之外的几个模块。我怎样才能做到这一点?node.js需要相对路径

/app/controller/c1.js 

... 


/app/model/m1.js 

... 


/app/view/v1.js 

... 


/app/view/v2.js 

// this works 
require('./v2'); 

// these doesn't work 
require('../model/m1.js'); 
require('~/model/m1.js'); 

... 

这是为什么?

+0

的http://的NodeJS。 org/docs/v0.4.2/api/modules.html#模块 - 文档说明了这一切。基本上,这是如何编程的。您可以使用分成不同文件夹的模块来执行MVC。 – 2012-07-29 18:54:31

回答

1

对于其他目录模块,使用以下格式:

testAuth =require('./public/javascripts/test.js'), 
//in case the test.js is in the public/javascripts directory (I am using Linux) 

如果跳过”的.js'扩展,节点应该寻找.js文件之前,首先以.json等

希望它有助于。

+0

看到我有“控制器”文件夹旁边的“配置”文件夹和控制器文件夹内的文件需要配置文件夹中的文件。那么你会让我写什么? – Neutralizer 2012-08-01 17:00:56

+0

试试这个:../config/test.js //其中test.js是你试图访问的文件名 - 让我们知道它是否适用于你(这是Linux版) – 2012-08-01 20:18:32

+0

这一行是“require('。 ./config/db.js');”是在AppController模块内部,并且当AppController需要与其他控制器相同的方式时,这会引发Controller无法加载错误。 – Neutralizer 2012-08-01 20:27:43

0

退房这个项目

https://github.com/nadav-dav/rekuire

它允许您使用 “规定” 没有相对路径,只是说文件/类名

+0

但是合成器有点麻烦:( var module = require('rekuire')('module')) – AlexG 2013-12-11 20:56:41