diff options
author | 2023-01-24 19:09:39 -0800 | |
---|---|---|
committer | 2023-01-24 19:09:39 -0800 | |
commit | ac7aff1b47b0b271d2afb010f3ffd199b9b6685d (patch) | |
tree | c6bfdae5dcca1e87fc951d06325da838f59cee4d | |
parent | d714df48f9f47208584e6d8b91271afbcd230f70 (diff) | |
download | bun-ac7aff1b47b0b271d2afb010f3ffd199b9b6685d.tar.gz bun-ac7aff1b47b0b271d2afb010f3ffd199b9b6685d.tar.zst bun-ac7aff1b47b0b271d2afb010f3ffd199b9b6685d.zip |
Add FileSystemRouter + React example (#1894)
-rwxr-xr-x | examples/react-file-system-router/bun.lockb | bin | 0 -> 4963 bytes | |||
-rw-r--r-- | examples/react-file-system-router/index.tsx | 24 | ||||
-rw-r--r-- | examples/react-file-system-router/package.json | 14 | ||||
-rw-r--r-- | examples/react-file-system-router/pages/index.tsx | 17 | ||||
-rw-r--r-- | examples/react-file-system-router/pages/one.tsx | 12 | ||||
-rw-r--r-- | examples/react-file-system-router/pages/two.tsx | 12 | ||||
-rw-r--r-- | examples/react-file-system-router/tsconfig.json | 20 |
7 files changed, 99 insertions, 0 deletions
diff --git a/examples/react-file-system-router/bun.lockb b/examples/react-file-system-router/bun.lockb Binary files differnew file mode 100755 index 000000000..ffe6b6c6a --- /dev/null +++ b/examples/react-file-system-router/bun.lockb diff --git a/examples/react-file-system-router/index.tsx b/examples/react-file-system-router/index.tsx new file mode 100644 index 000000000..a784c393b --- /dev/null +++ b/examples/react-file-system-router/index.tsx @@ -0,0 +1,24 @@ +// A simple way to connect FileSystemRouter to Bun#serve +// run with `bun run index.tsx` + +import { renderToReadableStream } from 'react-dom/server' +import { FileSystemRouter } from 'bun' + +export default { + port: 3000, + async fetch(request: Request) { + const router = new FileSystemRouter({ + dir: process.cwd() + "/pages", + style: "nextjs" + }) + + const route = router.match(request) + + const { default: Root } = await import(route.filePath) + return new Response( + await renderToReadableStream( + <Root {...route.params} /> + ) + ) + } +}
\ No newline at end of file diff --git a/examples/react-file-system-router/package.json b/examples/react-file-system-router/package.json new file mode 100644 index 000000000..36e0349c0 --- /dev/null +++ b/examples/react-file-system-router/package.json @@ -0,0 +1,14 @@ +{ + "name": "react-routes", + "module": "index.tsx", + "type": "module", + "devDependencies": { + "@types/react": "^18.0.27", + "@types/react-dom": "^18.0.10", + "bun-types": "^0.4.0" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + } +}
\ No newline at end of file diff --git a/examples/react-file-system-router/pages/index.tsx b/examples/react-file-system-router/pages/index.tsx new file mode 100644 index 000000000..b2d9e735e --- /dev/null +++ b/examples/react-file-system-router/pages/index.tsx @@ -0,0 +1,17 @@ +// reachable from http://localhost:3000/ + +export default () => ( + <html> + <head> + <title>index</title> + </head> + <body> + <h1> + <a href="/one" >one</a> + </h1> + <h1> + <a href="/two" >two</a> + </h1> + </body> + </html> +)
\ No newline at end of file diff --git a/examples/react-file-system-router/pages/one.tsx b/examples/react-file-system-router/pages/one.tsx new file mode 100644 index 000000000..68c9fb4b9 --- /dev/null +++ b/examples/react-file-system-router/pages/one.tsx @@ -0,0 +1,12 @@ +// reachable from http://localhost:3000/one + +export default () => ( + <html> + <head> + <title>one</title> + </head> + <body> + <p>one</p> + </body> + </html> +)
\ No newline at end of file diff --git a/examples/react-file-system-router/pages/two.tsx b/examples/react-file-system-router/pages/two.tsx new file mode 100644 index 000000000..09be9fa5c --- /dev/null +++ b/examples/react-file-system-router/pages/two.tsx @@ -0,0 +1,12 @@ +// reachable from http://localhost:3000/two + +export default () => ( + <html> + <head> + <title>two</title> + </head> + <body> + <p>two</p> + </body> + </html> +)
\ No newline at end of file diff --git a/examples/react-file-system-router/tsconfig.json b/examples/react-file-system-router/tsconfig.json new file mode 100644 index 000000000..c458f8fe8 --- /dev/null +++ b/examples/react-file-system-router/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "lib": [ + "ESNext" + ], + "module": "esnext", + "target": "esnext", + "moduleResolution": "nodenext", + "strict": false, + "downlevelIteration": true, + "skipLibCheck": true, + "jsx": "preserve", + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "allowJs": true, + "types": [ + "bun-types" // add Bun global + ] + } +}
\ No newline at end of file |