要求文件开头的节点模块

时间:2016-04-16 06:00:36

标签: node.js require

我习惯在app.js文件的开头要求我所有的节点模块。

var express=require('express'),
bodyParser = require( 'body-parser' ),
cookieParser = require( 'cookie-parser' ),
compression = require( 'compression' ),
.
.

但是有些模块在单个函数中用于单个作业,因此我可以从头开始删除它们并将它们内联。

var express=require('express'),
bodyParser = require( 'body-parser' ),
cookieParser = require( 'cookie-parser' ),
compression = require( 'compression' ),
.
.
function myfunc(){
require( 'https' ).get( "https://www.google.com/recaptcha/api/siteverify?secret= ......
.
.

而不是

var express=require('express'),
bodyParser = require( 'body-parser' ),
cookieParser = require( 'cookie-parser' ),
compression = require( 'compression' ),
https=require('https'),
.
.
function myfunc(){
https.get( "https://www.google.com/recaptcha/api/siteverify?secret= ......
.
.

我的问题:哪一个能带来更好的表现?

2 个答案:

答案 0 :(得分:2)

在node.js中的模块缓存概念说:

  

模块在第一次加载后进行缓存。这意味着   (除此之外)每次调用require('foo')都会得到   返回完全相同的对象,如果它将解析为相同   文件。

可在此处查看文档modules_caching

这意味着[NC]的选择只是编码风格的不同方式。

答案 1 :(得分:1)

require函数是同步操作。这意味着阻止。最好在文件的开头使用它,以避免在程序运行时阻塞调用。如果模块已经required,那么它将被缓存,以便操作不会被阻止。但大多数情况下,最好在模块顶部使用require。这样您就不需要跟踪已缓存的模块,以便在没有副作用的函数内使用require