Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

📄 Universal rendering for Preact: render JSX and Preact components to HTML.

License

NotificationsYou must be signed in to change notification settings

preactjs/preact-render-to-string

Repository files navigation

NPMBuild status

Render JSX andPreact components to an HTML string.

Works in Node & the browser, making it useful for universal/isomorphic rendering.

>>Cute Fox-Related Demo(@ CodePen) <<


Render JSX/VDOM to HTML

import{render}from'preact-render-to-string';import{h}from'preact';/**@jsx h */letvdom=<divclass="foo">content</div>;lethtml=render(vdom);console.log(html);// <div>content</div>

Render Preact Components to HTML

import{render}from'preact-render-to-string';import{h,Component}from'preact';/**@jsx h */// Classical components workclassFoxextendsComponent{render({ name}){return<spanclass="fox">{name}</span>;}}// ... and so do pure functional components:constBox=({ type, children})=>(<divclass={`box box-${type}`}>{children}</div>);lethtml=render(<Boxtype="open"><Foxname="Finn"/></Box>);console.log(html);// <div><span>Finn</span></div>

Render JSX / Preact / Whatever via Express!

importexpressfrom'express';import{h}from'preact';import{render}from'preact-render-to-string';/**@jsx h */// silly example component:constFox=({ name})=>(<divclass="fox"><h5>{name}</h5><p>This page is all about{name}.</p></div>);// basic HTTP server via express:constapp=express();app.listen(8080);// on each request, render and return a component:app.get('/:fox',(req,res)=>{lethtml=render(<Foxname={req.params.fox}/>);// send it back wrapped up as an HTML5 document:res.send(`<!DOCTYPE html><html><body>${html}</body></html>`);});

Error Boundaries

Rendering errors can be caught by Preact viagetDerivedStateFromErrors orcomponentDidCatch. To enable that feature inpreact-render-to-string seterrorBoundaries = true

import{options}from'preact';// Enable error boundaries in `preact-render-to-string`options.errorBoundaries=true;

Suspense &lazy components withpreact/compat

npm install preact preact-render-to-string
exportdefault()=>{return<h1>Home page</h1>;};
import{Suspense,lazy}from'preact/compat';// Creation of the lazy componentconstHomePage=lazy(()=>import('./pages/home'));constMain=()=>{return(<Suspensefallback={<p>Loading</p>}><HomePage/></Suspense>);};
import{renderToStringAsync}from'preact-render-to-string';import{Main}from'./main';constmain=async()=>{// Rendering of lazy componentsconsthtml=awaitrenderToStringAsync(<Main/>);console.log(html);// <h1>Home page</h1>};// Execution & error handlingmain().catch((error)=>{console.error(error);});

License

MIT


[8]ページ先頭

©2009-2025 Movatter.jp