2015-05-09 99 views
0

我建立使用表達框架一個的node.js應用。該應用程序具有標準的骨架,這是它的外觀主目錄:加載模塊使用Node.js的要求

  • app.js
  • NPM-的debug.log
  • 意見
  • node_modules
  • 的package.json
  • public

當我嘗試加載socket.io模塊中的JS文件時出現的問題(被稱爲可以說x.js)的公共目錄中。這就是我實現了一些與用戶操作事件處理緊密相連的邏輯。換句話說,當有人點擊「連接」按鈕時,我想使用socket.io建立連接。問題是,當我添加此行

var socket_io = require('socket.io');在x.jsx.js位於/ 公共 DIR)

全功能突然停止工作,我想由於該模塊沒有加載雖然VAR socket_io不在x.js文件內的任何地方使用。如果我添加行var socket_io = require('socket.io');app.js一切正常。我看着這個SO question但沒有成功。 有人可以解釋爲什麼會發生這種情況,我做錯了什麼?

編輯:只是爲了澄清,我已經'package.io'添加到package.json文件。還安裝了socket.io全局和本地使用npm install(-g)socket.io命令。

+1

公用文件夾通常用於容納靜態文件和樣式。在那裏沒有商業邏輯的標準做法。 – Craicerjack

+0

@Craicerjack感謝您的解釋!那麼我應該在哪裏實施業務邏輯? – e2l3n

+1

@ e213n因爲評論不能以任何方式構建我已經使用回答帖來顯示我在項目 – Craicerjack

回答

2

要初始化socket.io,您需要一些關鍵的東西,比如app.js文件中init的server var。 因此,如果您嘗試從app.js中請求socket.io,並嘗試初始化socket.io,那麼您可能會遇到一些麻煩。 因爲在你的情況下沒有服務器var,socket.io不能被初始化。

如果你試圖要求socket.io而不是初始化它。我想你會沒有問題。所以,試着去了解這是socket.io文檔中快速的相關章節:http://socket.io/docs/#

那麼你可以嘗試使用NPM模塊快遞和socket.io:http://express-io.org/

或者你也可以應付插座。of()方法:http://socket.io/docs/rooms-and-namespaces/#

無論如何,您應該使用服務器變量init來初始化socket.io。因此,您可以讓模塊管理socket.io行爲,定義一些方法等。爲此,您可以將socket.io作爲參數傳遞給路由文件。請參閱:Use socket.io inside a express routes file 然後,該邏輯允許您在應用程序的任何位置使用socket.io。

3

這不是試圖回答所問的問題,而是提交給我的另一個問題。理想情況下,我會在評論中回答它,但感覺視覺方面可以更好地解釋。
folder structure
我有我的應用程序,一個MVC類型的結構像這樣的文件夾結構。 controllers/文件夾包含業務邏輯。 models/文件夾包含我的模型。路線文件夾包含routes/views/文件夾包含我的玉模板。