# Guide
# Introduction
history-navigation-vue is a native-like Navigation for Web apps. It base on HTML5 History (opens new window) and implemented by Vue (opens new window).
- It is a multi-page architecture in the single-page apps.
- It supports Tabbar mode.
- It supports Modal mode.
- It supports "Press Back Again to Exit".
- It can set various transition effects at will.
- It can be perfectly combined with the system/browser back button.
- It is small, less than 9 KiB min+gzip(CSS + JS).
# Compatibility Note
# Browser / Webview
history-navigation-vue required HTML5 History API (opens new window) and not has fallback.
# Vue
Required Vue version is 2.1.8+.
Vue 3: Not currently supported.
# Installation
# NPM
npm install history-navigation-vue
# Load by Webpack
import 'history-navigation-vue/dist/history-navigation-vue.css';
import * as historyNavigationVue from 'history-navigation-vue';
# HTML Direct include
Simply download and include with a script tag. historyNavigationVue
will be registered as a global variable.
The built file is in the dist
directory of the project
<!-- css -->
<link rel="stylesheet" href="..somedir/history-navigation-vue.min.css" />
<!-- js -->
<script src="..somedir/history-navigation-vue.min.js"></script>
# Tutorials
# Hello World
- First you need set up the global config and Install as a Vue plugin.
- You will get a global component
<NavigationController>
, It's Root container. - You will also get another global component:
<Navigator>
, With it, You can use it to jump between different pages.
window.Vue.use(window.historyNavigationVue.plugin,
{
pages: [
{
path: '/',
component: {
template: `<div>
<h1>Hello</h1>
<Navigator url="/detail">To Detail</Navigator>
</div>`
}
},
{
path: '/detail',
component: {
template: `<div>
<h1>World!</h1>
<Navigator type="back">Back</Navigator>
</div>`
}
}
]
});
new window.Vue({
el: '#app',
template: '<NavigationController class="root" />'
});
# Tabbar
If there is a tab bar at the bottom of your project design. But it's a web project. How to do?
With this project, Just Add an tabBar
option:
{
pages: [
{
path: '/',
component: {
template: '<h1>Home</h1>'
}
},
{
path: '/me',
component: {
template: '<h1>Me</h1>'
}
}
],
tabBar: {
list: [
{ pagePath: "/", text: "Home" },
{ pagePath: "/me", text: "Me" }
]
}
}
# Modal
Do you want a modal box that can be closed when the back button is clicked?
<script type="text/x-template" id="modal">
<div class="modal">
<div class="modal-mask" @click="closeModal" />
<div class="modal-main">
<h1>{{text}}</h1>
<button style="font-size: 20px;" @click="close">Close</button>
</div>
</div>
</script>
<script>
var Modal = {
props: ['text'],
template: '#modal',
methods: {
close(){
this.$navigator.back();
}
}
};
var Index = {
template : '<button @click="showModal">showModal</button>',
methods: {
showModal(){
this.$navigator.modal({
component: Modal
propsData: {
text: 'Hello Modal!'
}
});
}
}
}
// ...
</script>
# Press Back Again to Exit
Do you want to be able to "Press Back Again to Exit" on PWA?
var config = {
pages: [
{
path: '/',
component: {
template: '<h1>Press Back Again to Exit</h1>'
}
}
],
backAgainToExit: {
maxInterval: 1500,
onFirstTrigger() {
window.$simpleTips.tips('Press Back Again to Exit');
}
}
}
// ...
# Transition
By default, this project provides some simple transitions. You can change it, Just modify the CSS.
WARNING
Please pay attention to performance, especially on mobile.
# Example
.h-nav-behavior-push > .h-nav-transition,
.h-nav-behavior-back > .h-nav-transition{
transition: all 1s ease;
}
.h-nav-behavior-push > .h-nav-transition > .h-nav-page-enter,
.h-nav-behavior-back > .h-nav-transition > .h-nav-page-leave-to{
transform: translateX(100%);
}
.h-nav-behavior-push > .h-nav-transition > .h-nav-page-leave-to,
.h-nav-behavior-back > .h-nav-transition > .h-nav-page-enter {
transform: translateX(-33%);
}