61 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # vue-hot-reload-api
 | |
| 
 | |
| > Note: `vue-hot-reload-api@2.x` only works with `vue@2.x`
 | |
| 
 | |
| Hot reload API for Vue components. This is what [vue-loader](https://github.com/vuejs/vue-loader) and [vueify](https://github.com/vuejs/vueify) use under the hood.
 | |
| 
 | |
| ## Usage
 | |
| 
 | |
| You will only be using this if you are writing some build toolchain based on Vue components. For normal application usage, just use `vue-loader` or `vueify`.
 | |
| 
 | |
| ``` js
 | |
| // define a component as an options object
 | |
| const myComponentOptions = {
 | |
|   data () { ... },
 | |
|   created () { ... },
 | |
|   render () { ... }
 | |
| }
 | |
| 
 | |
| // assuming Webpack's HMR API.
 | |
| // https://webpack.js.org/guides/hot-module-replacement/
 | |
| if (module.hot) {
 | |
|   const api = require('vue-hot-reload-api')
 | |
|   const Vue = require('vue')
 | |
| 
 | |
|   // make the API aware of the Vue that you are using.
 | |
|   // also checks compatibility.
 | |
|   api.install(Vue)
 | |
| 
 | |
|   // compatibility can be checked via api.compatible after installation
 | |
|   if (!api.compatible) {
 | |
|     throw new Error('vue-hot-reload-api is not compatible with the version of Vue you are using.')
 | |
|   }
 | |
| 
 | |
|   // indicate this module can be hot-reloaded
 | |
|   module.hot.accept()
 | |
| 
 | |
|   if (!module.hot.data) {
 | |
|     // for each component option object to be hot-reloaded,
 | |
|     // you need to create a record for it with a unique id.
 | |
|     // do this once on startup.
 | |
|     api.createRecord('very-unique-id', myComponentOptions)
 | |
|   } else {
 | |
|     // if a component has only its template or render function changed,
 | |
|     // you can force a re-render for all its active instances without
 | |
|     // destroying/re-creating them. This keeps all current app state intact.
 | |
|     api.rerender('very-unique-id', myComponentOptions)
 | |
| 
 | |
|     // --- OR ---
 | |
| 
 | |
|     // if a component has non-template/render options changed,
 | |
|     // it needs to be fully reloaded. This will destroy and re-create all its
 | |
|     // active instances (and their children).
 | |
|     api.reload('very-unique-id', myComponentOptions)
 | |
|   }
 | |
| }
 | |
| ```
 | |
| 
 | |
| ## License
 | |
| 
 | |
| [MIT](http://opensource.org/licenses/MIT)
 | 
