我有一个VUE2项目,它有许多(50)个单文件组件。我使用Vue路由器进行路由,Vuex用于状态。
有一个名为helpers.js的文件,其中包含一系列通用函数,例如将字符串的第一个字母大写。这个文件看起来像这样:
export default {
capitalizeFirstLetter(str) {
return str.charAt(0).toUpperCase() + str.slice(1);
}
}
我的主菜。js文件初始化应用程序:
import Vue from 'vue'
import VueResource from "vue-resource"
import store from "./store"
import Router from "./router"
import App from "./components/App.vue"
Vue.use(VueResource)
const app = new Vue({
router: Router,
store,
template: '<app></app>',
components: { App },
}).$mount('#app')
我的App.vue文件包含模板:
<template>
<navbar></navbar>
<div class="container">
<router-view></router-view>
</div>
</template>
<script>
export default {
data() {
return {
// stuff
}
}
}
</script>
然后我有一堆单文件组件,Vue路由器处理这些组件,导航到内部
现在让我们假设我需要在一个组件中使用
assetazeFirst信()
函数,该组件在omponent.vue.中定义为了做到这一点,我首先需要导入它:
<template>Some Component</template>
<script>
import {capitalizeFirstLetter} from '../helpers.js'
export default {
data() {
return {
myString = "test"
}
},
created() {
var newString = this.capitalizeFirstLetter(this.myString)
}
}
</script>
这很快就会成为一个问题,因为我最终将函数导入到许多不同的组件中,如果不是全部的话。这似乎是重复的,也使项目更难维护。例如,如果我想重命名帮助程序。js或其中的函数,然后我需要进入导入它的每个组件并修改import语句。
长话短说:如何在helpers中实现函数。js全局可用,这样我就可以在任何组件内调用它们,而不必先导入它们,然后在函数名前添加
this
?我基本上希望能够做到这一点:
<script>
export default {
data() {
return {
myString = "test"
}
},
created() {
var newString = capitalizeFirstLetter(this.myString)
}
}
</script>
创建一个新的混合:
"src/混合/通用ixin.js"
Vue.mixin({
methods: {
capitalizeFirstLetter(str) {
return str.charAt(0).toUpperCase() + str.slice(1);
}
}
})
然后将其导入到主应用程序中。比如:
import '@/mixins/generalMixin'
从现在起,您将能够使用类似这样的函数。在组件脚本中使用大写字母firstletter(str)
,或者在模板中不使用此。即。:
<template>
<div>{{ capitalizeFirstLetter('hello') }}</div>
</template>
您必须使用此
,因为您在主Vue实例中混合了一个方法。如果有方法删除此,它可能会涉及一些非常规的内容,那么这至少是一种有文档记录的共享功能的方法,对于任何未来的Vue开发人员来说,这对您的项目来说都很容易理解。
否则,您可以尝试让助手使用插件:
import Vue from 'vue'
import helpers from './helpers'
const plugin = {
install () {
Vue.helpers = helpers
Vue.prototype.$helpers = helpers
}
}
Vue.use(plugin)
在您的助手中。js
导出您的函数,方法如下:
const capFirstLetter = (val) => val.charAt(0).toUpperCase() + val.slice(1);
const img2xUrl = (val) => `${val.replace(/(\.[\w\d_-]+)$/i, '@2x$1')} 2x`;
export default { capFirstLetter, img2xUrl };
或
export default {
capFirstLetter(val) {
return val.charAt(0).toUpperCase() + val.slice(1);
},
img2xUrl(val) {
return `${val.replace(/(\.[\w\d_-]+)$/i, '@2x$1')} 2x`;
},
};
然后,您应该能够使用以下工具在组件中的任何位置使用它们:
这个$帮手。大写字母firstletter()
或应用程序中的任何地方使用:
Vue。帮手。大写字母firstletter()
你可以在留档中了解更多:https://vuejs.org/v2/guide/plugins.html
在任何组件中,而不必首先导入它们,然后将其前置到函数名中
你所描述的是混合。
Vue.mixin({
methods: {
capitalizeFirstLetter: str => str.charAt(0).toUpperCase() + str.slice(1);
}
})
这是一个全局混合。有了这个,你的所有组件都将有一个资本第一字母
方法,所以你可以从组件方法中调用this.capitalize第一字母(...)
或者你可以直接调用它作为资本第一字母(...)
在组件模板中。
工作示例:http://codepen.io/CodinCat/pen/LWRVGQ?editors=1010
请参阅这里的留档:https://vuejs.org/v2/guide/mixins.html
介绍 在很多Vue项目中,我们使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: '#container '}) 在每个页面内指定一个容器元素。 全局定义(Global definitions) 强制要求每个 component 中的命名不得重复 字符串模板(String templates) 缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \ 不支持
本文向大家介绍vuejs 单文件组件.vue 文件的使用,包括了vuejs 单文件组件.vue 文件的使用的使用技巧和注意事项,需要的朋友参考一下 vuejs 自定义了一种.vue文件,可以把html, css, js 写到一个文件中,从而实现了对一个组件的封装, 一个.vue 文件就是一个单独的组件。由于.vue文件是自定义的,浏览器不认识,所以需要对该文件进行解析。 在webpack构建中,需
如果你需要让一个工具函数在每个组件可用,可以把方法挂载到 Vue.prototype上。 注册 main.js 中 Vue.prototype.$method = function () {} 一般建议函数名使用 $ 前缀。像 vue-router 的 $route 和 $router。 使用 那么组件代码里 export default { created () { this.$m
本文向大家介绍浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件,包括了浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件的使用技巧和注意事项,需要的朋友参考一下 简介 Vue.use( plugin ):安装 Vue.js 插件。如果插件是一个对象,必须提供 install 方法。如果插件是一个函数,它会被作为 install 方法。install 方法将
VitePress自带一些可以全局使用的内置组件。你可以在你的markdown文件或自定义主题配置中使用这些组件。 Content Content组件显示渲染后的Markdown内容。 当你创建自定义主题时有用。 <template> <h1>Custom Layout!</h1> <Content /> </template> ClientOnly ClientOnly组件仅在客户端渲