Vue – Router
Set up
To use vue-router, previous easy html does not work properly.
I set up simple environment using npm. Please follow
Install vue and vue-router
npm init npm install vue vue-router npm install http-server -D
http-server is to run server locally. (It’s easy to try route)
To run http-server easily, I changed a bit of npm command.
{ "name": "sample6", "version": "1.0.0", "description": "Vue Router Sample", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "http-server -o" }, "keywords": [ "Vue", "Router" ], "author": "DJ110", "license": "MIT", "dependencies": { "vue": "^2.5.13", "vue-router": "^3.0.1" }, "devDependencies": { "http-server": "^0.10.0" } }
Hash mode and HTML5 mode
This is same as Angular.
By default, vue router is hash mode.
Mode | Description |
---|---|
Hash mode | Add # tag under root URL |
HTML5 | No hash tag, normal type |
In this sample, I use HTML5 mode (not hash mode) to make URL simple.
We can set by code.
Sample Code
<html> <head> <script src="node_modules/vue/dist/vue.min.js"></script> <script src="node_modules/vue-router/dist/vue-router.min.js"></script> </head> <body> <div id="app"> <router-link to="/top">TopPage</router-link> <router-link to="/users">User List</router-link> <router-link :to="{ name: 'user', params: { userId: 123}}">User Details</router-link> <router-view></router-view> </div> <script> var router = new VueRouter({ mode: 'history', <!-- If delete, this is hash mode --> routes: [ { path: '/top', component: { template: '<div>Top page</div>' } }, { path: '/users', component: { template: '<div>User List</div>' } }, { path: '/user/:userId', name: 'user', component: { template: '<div>User Id: {{ $route.params.userId}}</div>' } } ] }) var app = new Vue({ router: router }).$mount('#app') </script> </body> </html>
router-view is changeable layout part.