在Node.js之外使用require()

时间:2012-08-13 23:10:00

标签: javascript node.js express angularjs

我正在尝试让Angular.js应用程序使用Node.js。

目前我在MY-PROJECT/public/js/controllers.js

文件中有以下代码
function LoginController( $scope )
{
  // fetch waiters
  var Waiter = require( '../models/waiter.js' );
}
LoginController.$inject = ['$scope'];

如您所见,我正在使用require()来访问模型文件。但似乎无法在此文件/文件夹中访问require() - 函数。

访问该页面时,我在控制台中收到的错误是:

  

ReferenceError:未定义require

错误的原因当然是因为我直接在我的带有脚本标签的HTML文件中包含了这个controllers.js文件(所以来自Node.js的require() - 函数不可用)。

现在我的问题是:如何在controllers.js文件中访问模型文件(例如来自MY-PROJECT/models/waiter.js)?

非常感谢提前!

2 个答案:

答案 0 :(得分:1)

RequireJS看起来有你需要的东西。

答案 1 :(得分:0)

我做错了。因为我正在制作一个' realtime-app '(这是正确的名称吗?)并使用 Socket.io ,所以它的工作方式不同。

在客户端控制器中,我向服务器发送消息以请求数据。服务器获取数据并将其发送回客户端。

所以在客户端我实际上不需要模型,因为我从服务器获取JSON格式的数据。

这就是我解决它的方式,可能对其他人有用:

/**
* Login controller
*/
function LoginController( $scope, socket )
{    
    // listen to server when it sends you the cats
    socket.on( 'here-are-all-the-cats', function ( cats )
    {
        $scope.cats = cats;
    });

    // send message to the server, to request the waiters
    socket.emit( 'i-want-all-the-cats' );
}
WaiterController.$inject = [ '$scope', 'socket' ];

注意:我使用'猫'代替'服务员',只是为了让其他人更清楚。