С недавним выпуском Node.js 8.5 в ядро Node.js появились три очень интересных новых функции. В коротком блоге вы узнаете о них!
Модули ECMAScript в Node.js!
Одной из наиболее востребованных функций Node.js была поддержка ESM. Это означает, что теперь вы можете использовать ключевое слово import
без транспиляции кода. Итак, с этого момента вы можете запускать такие фрагменты:
import fs from 'fs'
Единственные две вещи, на которые вы должны обратить внимание, - это дать вашему файлу имя с расширением mjs
и запустить Node.js с флагом --experimental-modules
.
На данный момент использование ESM в Node.js имеет некоторые ограничения:
import()
, ожидается более новый выпуск V8, используемый в Node.js,import.meta
, ожидая, пока V8 его реализует,require('./foo.mjs')
, не поддерживается.
Вы можете проверить соответствующий запрос на перенос здесь: https://github.com/nodejs/node/pull/14369/files. Спасибо за прекрасную работу Брэдли Фариасу, Гаю Бедфорду и Яну Кремсу!
Крючки производительности
Первоначальная реализация Performance Timing API также входит в Node.js 8.5.
Реализованы API-интерфейсы User Timing mark()
и measure()
, а также специфический для Node.js вариант Frame Timing для измерения длительности цикла событий.
Вы можете начать использовать его с Node.js 8.5 следующим образом:
const { performance } = require('perf_hooks')
performance.mark('A')
setTimeout(() => {
performance.mark('B')
performance.measure('A to B', 'A', 'B')
const entry = performance.getEntriesByName('A to B', 'measure')
console.log(entry.duration)
}, 10000)
Чтобы узнать больше, ознакомьтесь с официальной документацией здесь: https://nodejs.org/api/perf_hooks.html.
Вы можете проверить соответствующий запрос на перенос здесь: https://github.com/nodejs/node/pull/14680/files. Спасибо за прекрасную работу Джеймсу М. Снеллу!
Копирование файла с помощью модуля core fs
В Node.js 8.5 также добавлена новая функция файловой системы - теперь вы можете копировать файлы с помощью модуля core fs
!
const fs = require('fs')
fs.copyFile('source.txt', 'destination.txt', (err) => { if (err) { // handle error properly, not just console.log return console.error(err) } console.log('source.txt was copied to destination.txt') })
Вы можете проверить соответствующий запрос на перенос здесь: https://github.com/nodejs/node/pull/15034/files. Спасибо за прекрасную работу Колину Иригу!
Мы надеемся, что с помощью этих замечательных новых функций вы сможете создавать еще больше отличных библиотек и приложений с помощью Node.js! У вас уже есть библиотека, которая зависит от этих функций? Дайте нам знать об этом в комментариях!
Вы можете ознакомиться со всеми исправлениями и функциями, внесенными в Node.js 8.5, здесь: https://nodejs.org/en/blog/release/v8.5.0/.
Первоначально опубликовано на blog.risingstack.com 13 сентября 2017 г.