Vue.js 如何添加全局函數或變數?
使用了 vue-loader 構建一個大一點的應用, 但是這裡好像沒有後端常見的中間件或自定義基礎類庫. 有許多組件都涉及到的常量或函數時, 不想每個組件都重新寫一遍. 怎麼做才好?
寫個插件,給Vue.prototype掛上常量,比如Vue.prototype.Const = 你的那坨常量,甚至再來個Vue.prototype.utils。Plugins - vue.js文檔看這兒,這是1.0的。
參考 插件 - vue.js ,或者用 混合 - vue.js 做 AOP 。
插件
util.js
export default{
install(Vue,options)
{
Vue.prototype.getData = function () {
console.log("我是插件中的方法");
}
}
}
main.js 引入 並且全局註冊
import util from "./util"
Vue.use(util);
其他組件中使用
this.getData();
如果僅僅是常量和基礎類庫,難道不是寫一個公共的 util.js export出去,然後到處require就可以了嗎?
既然有人問,那就更新一個代碼片段,下面我們假設 main.js 和 util.js 在同級目錄,其餘情況按照相對路徑改一下,只舉例工具函數,變數和類是一個意思。
// type 1
// util.js
export function square(n) {
return n * n;
}
// main.js
import { square } from "./util.js"
console.log(square(2)); // 4
// type 2
// util.js
export function square(n) {
return n * n;
}
// main.js
import { square as calcSquare } from "./util.js"
console.log(calcSquare(2)); // 4
// type 3
// util.js
export default function square(n) {
return n * n;
}
// main.js
import square from "./util.js"
console.log(square(2)); // 4
import util from "jspath/common/util"
Vue.prototype.utilHelper = util
頁面調用:this.utilHelper.getLocalUrl()
不知道理解的是不是這個意思。
A、B、C組件都需要一個方法showconfigJudge(變數就用data:{}定義即可)。
vue.js配置中有個mixin選項,寫個mixin export一下放到需要使用的組件就行了,如下圖所示,第一個為定義被重複使用到的mixin,其中的配置與vue組件的配置一樣,可以寫data:{},methods:{}以及其他鉤子。
只需要在A、B、C組件中引入showConfigMixin然後在組件內的配置mixins:[showConfigMixin]就可以了。這樣子A、B、C三個組件都能使用到showconfigJudge方法了。
如果是全部組件都需要有的話,就可以在main.js中使用全局的mixin。
局部:全局:創建一個全局變數模塊 Global.vue,然後在需要的地方引用
我是寫在Vuex的store.state裡面的。不知道合適的做法,求其他大神指點。
既然提到了「大一點」 而且數據變數管理
那我們推薦 vuex 嘍,可以看看我們專欄裡面的 vuex 的文章有源碼和實戰全局函數放filters里, 用的時候Vue.filter("filtername")
全局變數放到單獨文件, export出去,用的時候import就
你問題里已經回答了,你感覺為了許多常量和函數重新寫組件不對的,如果其他答主的回答幫不了你,你想想你的解耦就行了。
直接在js中定義global.name = ... ,外邊require這個js,就可以全局用了
Vue.prototype 然後掛載 後面可以跟任何東西 調用的時候this 或者vm調用就好了
推薦閱讀:
※什麼樣的前端技術 leader 是稱職的?
※為什麼優酷在PC端瀏覽器依然用Flash?
※為什麼現在很多網站都不用原生的input輸入,而是用div模擬?
※前端構建工具是什麼?
※前端未來頁面布局發展方向是 Flexbox 還是 Grid?
TAG:前端開發 | JavaScript | Vuejs |