Socket
Book a DemoInstallSign in
Socket

jelenjs-router

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jelenjs-router

File-based router for JelenJS framework

0.1.0
latest
npmnpm
Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

JelenJS Router

File-based routing for JelenJS framework, inspired by Next.js routing conventions.

Installation

npm install jelenjs-router

Basic Usage

1. Setup Router Component

import { createApp } from 'jelenjs';
import { Router } from 'jelenjs-router';

function App() {
  return <Router />;
}

createApp(App, '#app');

2. Create Page Components

Create your pages in a pages/ directory:

pages/
├── index.tsx          # / route
├── about.tsx          # /about route
├── blog/
│   ├── index.tsx      # /blog route
│   └── [slug].tsx     # /blog/:slug route
└── users/
    └── [id].tsx       # /users/:id route

3. Page Component Example

// pages/blog/[slug].tsx
import type { PageProps } from 'jelenjs-router';

export default function BlogPost({ params, query, navigate }: PageProps) {
  return (
    <div>
      <h1>Blog Post: {params.slug}</h1>
      <p>Query: {JSON.stringify(query)}</p>
      <button onClick={() => navigate('/blog')}>
        Back to Blog
      </button>
    </div>
  );
}

File-Based Routing Conventions

File PathRouteDescription
pages/index.tsx/Home page
pages/about.tsx/aboutStatic route
pages/blog/index.tsx/blogNested static route
pages/blog/[slug].tsx/blog/:slugDynamic route
pages/users/[id].tsx/users/:idDynamic route
pages/[...slug].tsx/*slugCatch-all route

Navigation

import { Link } from 'jelenjs-router';

function Navigation() {
  return (
    <nav>
      <Link to="/">Home</Link>
      <Link to="/about">About</Link>
      <Link to="/blog/my-post">Blog Post</Link>
    </nav>
  );
}

Programmatic Navigation

import { useRouter } from 'jelenjs-router';

function MyComponent() {
  const router = useRouter();

  const handleClick = () => {
    router.navigate('/about');
  };

  return <button onClick={handleClick}>Go to About</button>;
}

Hooks

useParams()

Get current route parameters:

import { useParams } from 'jelenjs-router';

function BlogPost() {
  const params = useParams(); // { slug: "my-post" }
  
  return <h1>Post: {params.slug}</h1>;
}

useQuery()

Get current query parameters:

import { useQuery } from 'jelenjs-router';

function SearchPage() {
  const query = useQuery(); // { q: "search term" }
  
  return <p>Searching for: {query.q}</p>;
}

useRouter()

Get router utilities:

import { useRouter } from 'jelenjs-router';

function MyComponent() {
  const router = useRouter();
  
  return (
    <div>
      <button onClick={() => router.navigate('/home')}>Home</button>
      <button onClick={() => router.back()}>Back</button>
      <button onClick={() => router.forward()}>Forward</button>
    </div>
  );
}

Integration with Vite

When using with jelenjs-vite, the router will automatically discover your page files:

// vite.config.js
import { defineConfig } from 'vite';
import jelenjs from 'jelenjs-vite';

export default defineConfig({
  plugins: [
    jelenjs({
      router: {
        enabled: true,
        pagesDir: 'src/pages'
      }
    })
  ]
});

Manual Route Registration

You can also register routes manually without file-based routing:

import { Router, createRoute } from 'jelenjs-router';

function HomePage() {
  return <div>Home</div>;
}

function AboutPage() {
  return <div>About</div>;
}

function App() {
  const routes = [
    createRoute('/', HomePage),
    createRoute('/about', AboutPage)
  ];

  return <Router routes={routes} />;
}

License

MIT

Keywords

router

FAQs

Package last updated on 24 May 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.