2016-04-16 3 views
2

У меня была привычка требовать, чтобы все мои узловые модули были в начале файла 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= ...... 
. 
. 

Мой вопрос: Какой из них дает лучшую производительность?

ответ

1

Модули Кэширование концепция внутри node.js говорит:

модули кэшируются после первого раза они загружены. Это означает, что каждый вызов, требуемый ('foo'), получит точно тот же объект, который был возвращен, если он разрешит тот же файл .

Документацию можно увидеть здесь modules_caching

Это означает, что либо выбор require просто другой способ кодирования стиль.

0

Функция require является синхронной. Это означает, что это блокирование. Лучше использовать его в начале вашего файла, чтобы избежать блокировки вызовов во время работы вашей программы. Если модуль уже required, он кэшируется, поэтому операция не будет блокироваться. Но в большинстве случаев предпочтительнее использовать require поверх вашего модуля. Таким образом, вам не нужно отслеживать модули, которые были кэшированы, чтобы использовать require внутри функции без побочных эффектов

Смежные вопросы