Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 在不同的文件中划分节点应用程序大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Socket.IO开发我的第一个Node.js应用程序,一切都很好,但现在应用程序正在慢慢变大,我想将应用程序代码分成不同的文件便更好地维护.

例如,我正在定义所有我的mongoose模式和主文件中的路由.下面是socket.IO连接的所有功能.但是现在我想为模式添加一个额外的文件,一个用于路由的额外文件一个用于函数文件.

当然,我知道可以编写自己的模块或加载带有require的文件.这对我来说没有意义,因为我无法使用像app,io或db这样的vars而不会让它们变得全局化.如果我将它们传递给我的模块中的函数,我就无法改变它们.我错过了什么?我想看一个例子,如何在不使用全局变量的情况下实现这一点.

解决方法

听起来你有一个 highly coupled应用程序;您很难将代码拆分为模块,因为应用程序的各个部分不应相互依赖.调查 the principles of OO design可能会有所帮助.

例如,如果您要将数据库逻辑从主应用程序中分离出来,您应该能够这样做,因为数据库逻辑不应该依赖于应用程序或io – 它应该能够独立工作,而您要求它进入你的应用程序的其他部分使用它.

这是一个相当基本的例子 – 它比实际代码更伪代码,因为重点是通过示例演示模块化,而不是编写一个有效的应用程序.它也是您决定构建应用程序的众多方法中的一种.

// =============================
// db.js

var mongoose = require('mongoose');
mongoose.connect(/* ... */);

module.exports = {
  User: require('./models/user');
  OtherModel: require('./models/other_model');
};


// =============================
// models/user.js (similar for models/other_model.js)

var mongoose = require('mongoose');
var User = new mongoose.scheR_370_11845@a({ /* ... */ });
module.exports = mongoose.model('User',User);


// =============================
// routes.js

var db = require('./db');
var User = db.User;
var OtherModel = db.otherModel;

// This module exports a function,which we call call with
// our Express application and Socket.IO server as arguments
// so that we can access them if we need them.
module.exports = function(app,io) {
  app.get('/',function(req,res) {
    // home page logic ...
  });

  app.post('/users/:id',res) {
    User.create(/* ... */);
  });
};


// =============================
// realtime.js

var db = require('./db');
var OtherModel = db.otherModel;

module.exports = function(io) {
  io.sockets.on('connection',function(socket) {
    socket.on('someEvent',function() {
      OtherModel.find(/* ... */);
    });
  });
};


// =============================
// application.js

var express = require('express');
var sio = require('socket.io');
var routes = require('./routes');
var realtime = require('./realtime');

var app = express();
var server = @R_673_10107@.createServer(app);
var io = sio.listen(server);

// all your app.use() and app.configure() here...

// Load in the routes by calling the function we
// exported in routes.js
routes(app,io);
// Similarly with our realtime module.
realtime(io);

server.listen(8080);

这些都是在我的脑海中写下来的,只需要对各种API的文档进行最少的检查,但我希望它能够为您从应用程序中提取模块提供种子.

大佬总结

以上是大佬教程为你收集整理的node.js – 在不同的文件中划分节点应用程序全部内容,希望文章能够帮你解决node.js – 在不同的文件中划分节点应用程序所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。