Vue.use()
官方文档
通过全局方法 Vue.use() 使用插件。它需要在你调用 new Vue() 启动应用之前完成:
// 调用 `MyPlugin.install(Vue)`Vue.use(MyPlugin)new Vue({// ...组件选项})
也可以传入一个可选的选项对象:
Vue.use(MyPlugin, { someOption: true })
Vue.use 会自动阻止多次注册相同插件,届时即使多次调用也只会注册一次该插件。
Vue.js 官方提供的一些插件 (例如 vue-router) 在检测到 Vue 是可访问的全局变量时会自动调用 Vue.use()。然而在像 CommonJS 这样的模块环境中,你应该始终显式地调用 Vue.use():
// 用 Browserify 或 webpack 提供的 CommonJS 模块环境时var Vue = require('vue')var VueRouter = require('vue-router')// 不要忘了调用此方法Vue.use(VueRouter)
源码
import { toArray } from '../util/index'export function initUse (Vue: GlobalAPI) {Vue.use = function (plugin: Function | Object) {const installedPlugins = (this._installedPlugins || (this._installedPlugins = []))// 已注册 - 遍历是否存在if (installedPlugins.indexOf(plugin) > -1) {return this}// additional parametersconst args = toArray(arguments, 1)// 头插args.unshift(this)// 判断install方法存在if (typeof plugin.install === 'function') {plugin.install.apply(plugin, args)} else if (typeof plugin === 'function') {plugin.apply(null, args)}// 注册 - 存入installedPlugins.push(plugin)return this}}
export function toArray (list: any, start?: number): Array<any> {start = start || 0let i = list.length - startconst ret: Array<any> = new Array(i)while (i--) {ret[i] = list[i + start]}return ret}
Vue-route
路由模式
- hash: http://localhost:8080/#/login
hash值指的是地址栏#号及后面的字符,其发生改变不会导致浏览器向服务器发送请求
hash值改变触发onhashchange事件,方便控制浏览器的进退控制
兼容IE8 - history:http://localhost:8080/login
利用HTML5 History Interface pushState()和replaceState()方法pushState(state, title, url)
浏览器不会向服务端请求数据,直接改变url地址,但会记录pushState的历史记录,可以使用浏览器的前进、后退
replaceState(state, title, url)
不同于pushState,replaceState仅仅是修改了对应的历史记录
刷新地址请求访问服务器
兼容IE10
