Skip to content

Latest commit

 

History

History
143 lines (111 loc) · 4.11 KB

File metadata and controls

143 lines (111 loc) · 4.11 KB
title Run JavaScript Everywhere
layout home

Run JavaScript Everywhere

Node.js® is a free, open-source, cross-platform JavaScript runtime environment
that lets developers create servers, web apps, command line tools and scripts.
<div className="flex flex-col gap-2">
  <Button kind="special" className="!hidden dark:!block" href="/download">Get Node.j®</Button>

  <Button kind="primary" className="!block dark:!hidden" href="/download">Get Node.js®</Button>

  <Button kind="secondary" className="!block" href="/blog/announcements/node-18-eol-support">
    <span>Get security support</span>
    <br />
    <small className="!text-xs">for Node.js 18 and below</small>
  </Button>

  <div className="flex flex-row gap-2 justify-center xs:mt-6">
    <WithNodeRelease status="Current">
      {({ release }) =>
        <BadgeGroup size="small" badgeText={release.versionWithPrefix} href={`/blog/release/${release.versionWithPrefix}`}>
          Node.js Current
        </BadgeGroup>}
    </WithNodeRelease>

    <WithNodeRelease status="LTS">
      {({ release }) =>
        <BadgeGroup size="small" kind="warning" badgeText={release.versionWithPrefix} href={`/blog/release/${release.versionWithPrefix}`}>
          Node.js LTS
        </BadgeGroup>}
    </WithNodeRelease>
  </div>

  <span className="italic text-center text-xs! text-gray-500">
    <span>"LTS" stands for the long-term support version of Node.js. </span>
    <span>Learn more about Node.js releases <Link href="/about/previous-releases">here</Link>.</span>
  </span>
</div>
```js displayName="Create an HTTP Server" // server.mjs import { createServer } from 'node:http';
const server = createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello World!\n');
});

// starts a simple http server locally on port 3000
server.listen(3000, '127.0.0.1', () => {
  console.log('Listening on 127.0.0.1:3000');
});

// run with `node server.mjs`
```

```js displayName="Write Tests"
// tests.mjs
import assert from 'node:assert';
import test from 'node:test';

test('that 1 is equal 1', () => {
  assert.strictEqual(1, 1);
});

test('that throws as 1 is not equal 2', () => {
  // throws an exception because 1 != 2
  assert.strictEqual(1, 2);
});

// run with `node tests.mjs`
```

```js displayName="Read and Hash a File"
// crypto.mjs
import { createHash } from 'node:crypto';
import { readFile } from 'node:fs/promises';

const hasher = createHash('sha1');

hasher.setEncoding('hex');
// ensure you have a `package.json` file for this test!
hasher.write(await readFile('package.json'));
hasher.end();

const fileHash = hasher.read();

// run with `node crypto.mjs`
```

```js displayName="Streams Pipeline"
// streams.mjs
import { createReadStream, createWriteStream } from 'node:fs';
import { pipeline } from 'node:stream/promises';
import { createGzip } from 'node:zlib';

// ensure you have a `package.json` file for this test!
await pipeline(
  createReadStream('package.json'),
  createGzip(),
  createWriteStream('package.json.gz')
);

// run with `node streams.mjs`
```

```js displayName="Work with Threads"
// threads.mjs
import { Worker, isMainThread,
  workerData, parentPort } from 'node:worker_threads';

if (isMainThread) {
  const data = 'some data';
  const worker = new Worker(import.meta.filename, { workerData: data });
  worker.on('message', msg => console.log('Reply from Thread:', msg));
} else {
  const source = workerData;
  parentPort.postMessage(btoa(source.toUpperCase()));
}

// run with `node threads.mjs`
```
Learn more what Node.js is able to offer with our [Learning materials](/learn).