Skip to content

uniapp全局方法样式使用

全局方法使用

(version:0.0.1版本)这里我选择的是采用vue2结合vue3的挂载方式getCurrentInstance()中的proxy方法

🔺 注册全局方法

JS
//引入 
import config from '@/utils/config';

//挂载
Vue.prototype.$config=config;
app.config.globalProperties.$config = config;

🔺 全局方法使用

JS
$config

🔺挂载vue2

JS
Vue.prototype.$config = config;

👉vue2测试和使用

JS
<template>
	<div></div>
</template>
<script>
	export default {
		data() {
			return {
				
			}
		},
		mounted() {
		  console.log(this.$config)  // 获取全局配置
		}
	}
</script>

👉输出的结果

JS
// 输出的结果
{
    baseURL: "http://127.0.0.1:8888",
    webname: "社区"
    ...
    __proto__: Object
}

🔺挂载vue3

JS
app.config.globalProperties.$config = config;

👉vue3输出报错

JS
ReferenceError: $config is not defined

👉原因

在vue3之中我们需要官方提供给我们的proxy方法,来获取全局变量

JS
<template>
	<div></div>
</template>
<script setup>
import { getCurrentInstance } from 'vue'
const { proxy } = getCurrentInstance()
console.log('版本号:', proxy.$config)
</script>

👉输出的结果

JS
{
    baseURL: "http://127.0.0.1:8888",
    webname: "社区"
    ...
}

🔺挂载到uni全局对象

JS
// main.js
uni.$config = {   // 直接挂载到 uni 对象
  apiUrl: 'https://XXX.com',
  version: '1.0.0'
}

👉使用

JS
<script setup>
// 无需任何引入,直接使用
console.log(uni.$config.apiUrl)  
// 输出: https://XXX.com
</script>

全局样式

👉自定义全局原子化样式

接下来我们建立一个公共样式文件夹,这个文件夹存储所有的css样式 根目录下面新建一个styles文件夹,下面新建立一个文件uniapp.css 在我们的根目录uni.scss下面引入

js
@import '/static/styles/uniapp.css'; //注意路径是否正确

尝试一下

js
 .mgttop20{
  margin-top: 40rpx;
}

错误处理

image.png 这里我们运行一下以后发现一直报错,我们移除uni.scss之中的样式,然后在页面之中单独引入

js
  @import '@/common/common.css'; //注意路径是否正确

使用可以发现,写的公共样式已经生效了!

Released under the MIT License.