1.1.0 โ€ข Published 8 months ago

@closure-next/node v1.1.0

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
8 months ago

Closure Next Node.js Integration

Node.js compatibility layer for Closure Next, providing server-side rendering capabilities and module system compatibility.

Installation

npm install @closure-next/node

Usage

ESM

import { renderToString } from '@closure-next/node';
import { MyComponent } from './my-component';

const html = renderToString(MyComponent, {
  title: 'Server-rendered component'
});

ESM

import { renderToString } from '@closure-next/node';
import { MyComponent } from './my-component';

const html = renderToString(MyComponent, {
  title: 'Server-rendered component'
});

Features

  • ๐Ÿ–ฅ๏ธ Server-side rendering
  • ๐Ÿ“ฆ CommonJS support
  • ๐Ÿ”„ ESM compatibility
  • โšก๏ธ Full TypeScript support
  • ๐Ÿงน Automatic cleanup

API Reference

renderToString(ComponentClass, props?)

Renders a Closure Next component to an HTML string.

Parameters

  • ComponentClass: Constructor - The Closure Next component class
  • props?: Object - Props to pass to the component

Returns

A string containing the rendered HTML.

TypeScript Support

import { renderToString } from '@closure-next/node';
import type { Component } from '@closure-next/core';

interface MyComponentProps {
  title: string;
}

class MyComponent extends Component {
  // Implementation
}

const html = renderToString<MyComponent>(MyComponent, {
  title: 'Hello' // Type-checked
});

Server-Side Usage

Express Example

import express from 'express';
import { renderToString } from '@closure-next/node';
import { MyComponent } from './my-component';

const app = express();

app.get('/', (req, res) => {
  const html = renderToString(MyComponent, {
    title: 'Server-rendered page'
  });
  
  res.send(`
    <!DOCTYPE html>
    <html>
      <body>
        ${html}
      </body>
    </html>
  `);
});

Next.js API Route Example

import type { NextApiRequest, NextApiResponse } from 'next';
import { renderToString } from '@closure-next/node';
import { MyComponent } from './my-component';

export default function handler(req: NextApiRequest, res: NextApiResponse) {
  const html = renderToString(MyComponent, {
    title: 'API-rendered component'
  });
  
  res.status(200).json({ html });
}
1.1.0

8 months ago

1.0.6

9 months ago

1.0.5

9 months ago

1.0.4

9 months ago

1.0.3

9 months ago

1.0.2

9 months ago

1.0.1

9 months ago