jsx를 서버측 HTML 템플릿으로 사용
5945 단어 webjavascriptnode
// filename: newsletter.tsx
import { jsxToHtml } from '@incremental-html/jsx-to-html'
// server is an express router
server.get('/newsletter', async (req, resp) => {
const html: string = await jsxToHtml(<div>hello</div>);
resp.status(200).set({ 'Content-Type': 'text/html' }).end(html);
})
tsconfig.json
는 jsxToHtml을 사용하여 *.tsx
를 번역하려면 다음과 같이 구성해야 합니다.{
"compilerOptions": {
//...
"jsx": "react",
"jsxFactory": "jsxToHtml.createElement",
"jsxFragmentFactory": "jsxToHtml.Fragment",
//...
}
비동기 컨텍스트
jsxToHtml을 node.js의 대안으로 사용할 수 있습니다
async_hooks
.런타임 트릭이 없으며 모든 환경(deno, cloudflare 작업자 등 포함)에서 작동합니다.
test('component with context', async () => {
const C1 = async (props: {}, ctx: { msg: string }) => {
await new Promise<void>(resolve => resolve());
return <div>{ctx.msg}</div>
}
const result = <context msg="hello"><C1 /></context>
expect(await jsxToHtml(result, { msg: 'original msg' })).toBe('<div>\nhello\n</div>');
})
컨텍스트는 자동으로 트리 아래로 전달됩니다.
<context>
는 중간에 컨텍스트를 변경하는 내장 구성 요소입니다.
Reference
이 문제에 관하여(jsx를 서버측 HTML 템플릿으로 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/taowen/use-jsx-as-server-side-html-template-3k40텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)