With the recent release of Node.js 8.5, three very exciting new features landed in the Node.js core. In the short blogpost, you are going to learn about them!
One of the most requested features of Node.js was to provide support for ESM. What it means is that you can now use the **import**
keyword, without transpiling your code. So from now on, you can run snippets like these:
import fs from 'fs'
The only two things you have to pay attention to is to name your file with the mjs
extension and to run Node.js with the --experimental-modules
flag.
For now, using ESM has some limitation in Node.js:
import()
, pending newer V8 release used in Node.js,import.meta
, waiting for V8 to implement it,require('./foo.mjs')
, not supported.You can check the corresponding pull request here: https://github.com/nodejs/node/pull/14369/files. Thanks for the amazing work Bradley Farias, Guy Bedford and Jan Krems!
An initial implementation of the Performance Timing API is also shipped with Node.js 8.5.
The User Timing mark()
and measure()
APIs are implemented, as is a Node.js specific flavour of the Frame Timing for measuring event loop duration.
You can start using it with Node.js 8.5 this way:
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)
To learn more, check out the official documentation here: https://nodejs.org/api/perf_hooks.html.
You can check the corresponding pull request here: https://github.com/nodejs/node/pull/14680/files. Thanks for the amazing work James M Snell!
fs
moduleWith Node.js 8.5, a new File System feature is shipped as well — now you can copy files using the core fs
module!
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')})
You can check the corresponding pull request here: https://github.com/nodejs/node/pull/15034/files. Thanks for the amazing work Colin Ihrig!
We hope with these amazing new feature additions you can do even more great libraries and applications using Node.js! Do you already have a library which depends on these features? Let us know in the comments!
You can check out all the fixes and features what Node.js 8.5 brought here: https://nodejs.org/en/blog/release/v8.5.0/.
Originally published at blog.risingstack.com on September 13, 2017.