mtrpcic/pathjs
mtrpcic/pathjs has 1,094 GitHub stars and 175 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-09 10:23 UTC. Last push 2017-02-26.
Simple, lightweight routing for web browsers
What you can do
- Supports the HTML5 History API, the 'onhashchange' method, and graceful degredation
- Supports root routes, rescue methods, paramaterized routes, optional route components (dynamic routes), and Aspect Oriented Programming
- Well Tested (tests available in the ./tests directory)
- Compatible with all major browsers (Tested on Firefox 3.6, Firefox 4.0, Firefox 5.0, Chrome 9, Opera 11, IE7, IE8, IE9)
Measured star growth
- in 24h
- 0
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalPathJS
PathJS is a lightweight, client-side routing library that allows you to create "single page" applications using Hashbangs and/or HTML5 pushState.
Features
- Lightweight
- Supports the HTML5 History API, the 'onhashchange' method, and graceful degredation
- Supports root routes, rescue methods, paramaterized routes, optional route components (dynamic routes), and Aspect Oriented Programming
- Well Tested (tests available in the
./testsdirectory) - Compatible with all major browsers (Tested on Firefox 3.6, Firefox 4.0, Firefox 5.0, Chrome 9, Opera 11, IE7, IE8, IE9)
- Independant of all third party libraries, but plays nice with all of them
Using PathJS - A Brief Example
function clearPanel(){
// You can put some code in here to do fancy DOM transitions, such as fade-out or slide-in.
}
Path.map("#/users").to(function(){
alert("Users!");
});
Path.map("#/comments").to(function(){
alert("Comments!");
}).enter(clearPanel);
Path.map("#/posts").to(function(){
alert("Posts!");
}).enter(clearPanel);
Path.root("#/posts");
Path.listen();
Documentation and Tips
Any of the examples above confuse you? Read up on the details in the wiki.
Examples
You can find examples on the official Github Page.
Running Tests
To run the tests, simply navigate to the ./tests folder and open the HTML file in your browser. Please note that the HTML5 History API is not compatible with the
file:// protocol, and to run the tests in the tests/pushstate folder, you will need to run them through a webserver such as nginx or Apache.
Next Steps
- Adding support for "after" callbacks
- Deprecating the "enter" callback in favour of "before"
Pull Requests
To make a pull request, please do the following:
- Mention what specific version of PathJS you were using when you encountered the issue/added the feature. This can be accessed by doing
Path.versionin a debugger console - Provide a pastie or gist that demonstrates the bug/feature
- Make sure you update the test suite with your changes. All tests must pass
- Make sure to update the minified version of the source
- Do not modify the
Path.versionattribute. I will modify that manually when merging the request
Disclaimer
This code is provided with no warranty. While I strive to maintain backwards compatibility, the code is still under active development. As this is the case, some revisions may break break compatibility with earlier versions of the library. Please keep this in mind when using PathJS.
Copyright and Licensing
Copyright (c) 2011 Mike Trpcic, released under the MIT license.
Explore related projects
freeCodeCamp/freeCodeCamp
freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.
458,821 starsdonnemartin/system-design-primer
Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.
377,440 starsreact/react
The library for web and native user interfaces.
252,444 starsvuejs/vue
This is the repo for Vue 2. For Vue 3, go to https://github.com/vuejs/core
212,624 stars