相关疑难解决方法(0)

将公共变量传递到Node.js中的单独模块的最佳方法是什么?

我使用单独的路由器文件作为主应用和auth app的模块.我无法获得将变量(db client)传递到路由器的最佳方法.我不想硬编码或传递它:

module.exports = function(app, db) {
Run Code Online (Sandbox Code Playgroud)

也许这是使用单例寄存器或使用全局db变量的最佳方法?

您对设计模式的体验是什么?哪种方式最好,为什么?

design-patterns node.js

59
推荐指数
1
解决办法
3万
查看次数

鉴于ES2015,依赖注入和库抽象,2016年我的理想模块应该是什么样子?

如果没有,首先,我会全力以赴编写我的所有模块

import A from './a.js';

var B = function(){
  //use A
};

export default B;
Run Code Online (Sandbox Code Playgroud)

然后使用编译器将其构建为某种浏览器或服务器格式.

然而,我的一个问题与上面的明确规范./a.jsimport.

我理解为什么规范这样做1,赞成静态分析.但是有两个非常实际的原因可以解释为什么在模块的文件名路径中烘焙都很麻烦.

  1. 正如此处已经提到的那样,当从项目到项目频繁地回收模块时,您很可能无法在项目树中维护到该资源的一致路径.将一个导入调用粘贴import myModule from './../../vendor/lib/dist/mod.js'到模块的代码中并不能完全让我感到前瞻性.
  2. 除了路径本身,指定文件名也会让你失望.像这样的东西似乎是无辜的:

    import $ from 'vendor/jquery.js'

    但是,当我想使用Zepto而不是jQuery时呢?我发现抽象,尤其是供应商库的抽象,在处理大型代码库,自以为是的开发人员和不断变化的JavaScript生态系统时非常有用.我今天可能想要将React导入我的组件库,但明天呢?如果我要在客户端和服务器上使用相同的模块,但是我需要不同版本的依赖库,该怎么办?

我在团队中坚持强大(但清晰且一致)的抽象.通常,抽象采取某种命名空间的形式.我幻想一下这个:

//BAD: Bakes React into my component modules
import ComponentLib from './React.js';

//GOOD: Leaves me free to use any React-like library
import ComponentLib from 'vendor.lib.component';
Run Code Online (Sandbox Code Playgroud)

其中 …

javascript dependency-injection module ecmascript-6

38
推荐指数
1
解决办法
917
查看次数

NodeJS和Javascript(requirejs)依赖注入

我目前正在使用requirejs来管理模块js/css依赖项.我想发现节点通过集中配置文件执行此操作的可能性.所以不要手动做类似的事情

define([    
'jquery'
'lib/somelib'
'views/someview']
Run Code Online (Sandbox Code Playgroud)

在每个模块内.

我有节点注入依赖关系,即

require('moduleA').setDeps('jquery','lib/somelib','views/someview')
Run Code Online (Sandbox Code Playgroud)

无论如何,我对任何寻找节点依赖注入的项目感兴趣.

谢谢

javascript dependency-injection node.js requirejs express

6
推荐指数
2
解决办法
3598
查看次数