Node.js - широко используемая технология для создания высокоскоростных и надежных приложений. Основанный на движке JavaScript V8 от Google, также известном как среда выполнения браузера Chrome, Node.js в последние годы приобрел огромную популярность среди крупных предприятий.

Однако для приложений нового поколения нам необходимо убедиться, что приложения работают быстрее, чем обычно.

Вот 5 советов по созданию высокопроизводительных приложений на Node.js

1. Используйте параллельное выполнение.

При разработке производственных приложений всегда требуется работать с модулями, которым требуется несколько внутренних вызовов различных API.

Один из способов решить эту проблему - настроить различное промежуточное программное обеспечение для каждой функции. Как мы все знаем, JavaScript асинхронен. Таким образом, он не будет ждать последующего выполнения функций.

Это увеличивает время, необходимое для получения ответа, что снижает производительность приложения. Следовательно, лучший способ оптимизировать приложение - использовать преимущества параллельных функций с помощью пакета с именем async.js.

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

Вот фрагмент, который показывает, как различные функции могут выполняться параллельно с помощью async.js:

function executeFuncParallel(){
    async.parallel([
        getUserProfile,
        getComments,
        getActivity
    ], function(err,results){
//This callback function runs when all the functions complete
    })
}

2. Используйте async / await.

Функции async / await были введены в node.js версии 8. В функции async вы можете дождаться завершения выполнения любого обещания.

Во-первых, давайте посмотрим на пример функции обещания:

function handler(req, res) {
    return request(`https://jsonplaceholder.typeicode.com/posts/${req.postId}`)                                                                                                                                  .catch((err) => {
    console.error(‘Post not found’, err);
    throw err;
})
.then((userPost) => request.patch(`https://jsonplaceholder.typeicode.com/posts/${req.postId}`))
.catch((err) => {
    console.error(‘Error while update post’, err);
    throw err;
})
.then((updatedPost) => res.send(updatedPost))
.catch((err) => {
    console.error(‘Error’, err);
    return res.status(500).send();
})
}

Теперь давайте преобразуем вышеуказанные обещания в async / await. Преобразованный код будет выглядеть, как показано ниже: -

async function handler(req, res) {
    let userPost;
    try {
        userPost = await request(`https://jsonplaceholder.typeicode.com/posts/${req.postId}`)
} catch (err) {
    console.error(‘Post not found’, err);
    return res.status(404).send();
}
let updatePost;
try {
    updatePost = await request.patch(`https://jsonplaceholder.typeicode.com/posts/${req.postId}`)
} catch (err) {
    console.error(‘Error while update post’, err);
    return res.status(500).send();
}
return res.send(updatePost);
}

3. Визуализировать статические объекты

Одним из важнейших советов по повышению производительности может стать рендеринг ваших статических ресурсов, таких как CSS и изображения, на стандартном веб-сервере, таком как Nginx.

Организовав Nginx для обслуживания статического контента, вы значительно снизите нагрузку на свой экземпляр Node.js, тем самым повысив производительность приложения.

4. Использование рендеринга на стороне клиента

Вместо использования рендеринга шаблонов на стороне сервера можно также использовать рендеринг на стороне клиента. Базовая архитектура будет заключаться в создании HTML-шаблона и соответствующей бизнес-логики на стороне клиента (с использованием мощных фреймворков, таких как Angular, React.js, vue.js, и т. Д.).

Уровень бизнес-логики будет отвечать за соединение модели данных и шаблона. Когда HTTP-вызов выполняется на уровне сервера (который является приложением node.js), сервер возвращает ответ JSON, который привязан к модели данных на стороне клиента.

Используя эту архитектуру, мы можем избежать рендеринга на стороне сервера, который отправляет HTML-страницу в ответ на вызовы API и дополнительно снижает производительность.

5. Код должен быть небольшим и легким

Компактный код означает, что приложение выполняется быстрее. Более быстрое приложение означает лучшую производительность. Но как сделать код компактным? Один из способов оптимизировать и сделать это - минимизировать (или объединить) и объединить несколько файлов JS в один.

Минификация - это процесс объединения нескольких файлов js в один файл (обфускация кода) и преобразования всех переменных и значений в псевдонимы.

Это не только уменьшит размер приложения, но и повысит безопасность за счет ограничения читаемости кода.
Вы можете узнать больше о реализации обфускации кода в опубликованном ранее посте:



Кроме того, основным преимуществом с точки зрения производительности приложений является то, что количество вызовов службы, которое первоначально было кратным 100, теперь будет сокращено до одной цифры.

Мы в DLT Labs разработали собственный инструмент для внутренней минимизации кода. Этот инструмент также заботится об обфускации кода.

Надеюсь, этот блог поможет вам повысить производительность вашего приложения!

Теперь, когда вы создали свое высокопроизводительное приложение node.js, вас может заинтересовать простой, но эффективный способ его отладки. Узнайте, как это сделать, здесь:



Автор - Алли Сантош Кумар, DLT Labs

Об авторе: Алли - разработчик программного обеспечения в лабораториях DLT, в настоящее время работает в нашей команде DL Certify. Талантливый разработчик стеков, он любит читать книги, слушать музыку и играть на гитаре.