@formidablejs/next-bridge v0.3.0-alpha.1
Next.js Bridge
React server-side rendering for Formidable with Next.js framework.
Requirements
- @formidablejs/craftsman:
>=0.2.1-alpha.2 - @formidablejs/framework:
>=0.2.1-alpha.2 - next:
>=11.1.2 - react-dom:
>=17.0.2 - react:
>=17.0.2
Install
npm install @formidablejs/next-bridge next react react-dom --savePublish
craftsman publish --package @formidablejs/next-bridge -c -vConfiguration
Add NextjsServiceResolver in the config/app.imba config under resolvers:
...
resolvers: {
...
require('@formidablejs/next-bridge').NextjsServiceResolverNote,
NextjsServiceResolvermust be added after/app/Resolvers/RouterServiceResolver.
Then, register the next.imba config file in the config/index.imba file:
...
import next from './next'
export class Config < ConfigRepository
# All of the configuration items.
#
# @type {Object}
get registered
{
...
next
}Assuming that you installed next-bridge in a new project, you can replace the default / route in the routes/api.imba file with the following route:
import { next } from '@formidablejs/next-bridge'
import { Route } from '@formidablejs/framework'
Route.get '/', next!When done, you can run the following command to start the server:
craftsman serve --devVisit http://localhost:3000/ to see the rendered page.
Usage
To register a new Next.js route, just return next helper method from your route:
import { next } from '@formidablejs/next-bridge'
import { Route } from '@formidablejs/framework'
Route.get '/', next!This route will load the resources/js/pages/index.js file.
Note: A route path is used as a page path. For example, if our route path was
'/about', next-bridge would look for aresources/js/pages/about.jsfile.
Dynamic Routes
When defining dynamic routes, next-bridge will automatically map your routes to your Next.js pages.
Consider the following route:
import { next } from '@formidablejs/next-bridge'
import { Route } from '@formidablejs/framework'
Route.get '/post/:id', next!In order for a post page to be loaded for this route, you need to create a resources/js/pages/post/[id].js page:
export function getServerSideProps(request) {
return {
props: { params: request.params ?? { } }
};
}
const Post = (props) => {
const id = props.params.id
return <p>Post: {id}</p>
}
export default PostNow, when visiting /post/10, the Post page will be loaded and the :id will be replaced by 10.
For more information on dynamic routes, see the Next.js documentation.
All your pages are be loaded from the
resources/js/pagesfolder.
Credits
This Formidable plugin uses fastify-nextjs under the hood.
License
The Formidable framework is open-sourced software licensed under the MIT license.
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago