在Node.js(ExpressJS)中重构依赖项实例化

时间:2018-07-17 11:46:36

标签: javascript node.js coding-style refactoring node-modules

我想将以下代码重构为更易于管理和更清晰的代码库:

FROM

var express = require('express');  
var mongoose = require('mongoose');  

require('../loaders/routes.dependencies.js');  
  

其中“ ../loaders/routes.dependencies.js”是包含最初提到的代码的文件。

PS:,因为我仍在尝试尝试,请随时更正以前的代码。

  

目标是清除代码,避免每次都依赖多个文件时出现依赖关系,这里有一个deps列表,但是我在这里暴露了最烦人的情况。

** PS **不建议任何其他类型的重构,我特别需要这种重构..谢谢!

2 个答案:

答案 0 :(得分:0)

从Node.js文档中:

  

模块在第一次加载后被缓存。这意味着(除其他事项外)每次对require('foo')的调用都将返回完全相同的对象,如果它可以解析为相同的文件。

     

多次调用require('foo')可能不会导致模块代码多次执行。这是一个重要功能。有了它,可以返回“部分完成”的对象,从而即使在可能导致循环的情况下,也可以加载传递性依赖项。

     

要让一个模块多次执行代码,导出一个函数并调用该函数。

您不必担心“每次实例化多个文件”。

关于清洁代码解决方案,要求使用当前正在使用的所有dep的一个文件不是一个好主意,因为您的代码将在将来更改,并且也许您将与该项目的其他人一起工作,因此最好将您的要求放在每个文件的顶部,因为它更具可读性。

您可以通过将路由(表达内容)与自定义函数分开,以在所有路由中重用它们来清理代码。

答案 1 :(得分:0)

野蛮人,但有效:

var fs = require('fs');

// file is included here:
eval(fs.readFileSync('tools.js')+'');