uniapp的vue3全局方法app.config.globalProperties为什么一定要定义$开头的名字?

import {
    createSSRApp
} from 'vue'
import App from '@/App.vue'
import dayjs from 'dayjs'
import PB from '@/common/js/public.js'
import '@/common/css/glob.scss'


export function createApp() {
    const app = createSSRApp(App)

    app.config.globalProperties.$dayjs = dayjs;
    app.config.globalProperties.$PB = PB;

    return {
        app
    }
}

main.js大致内容是按照uniapp默认项目来写,其中app.config.globalProperties.$PB = PB;定义全局工具类,不知为什么,一定要用$PB,不能叫PB

但是在PC端正常的vue3-cli建的项目,又可以用app.config.globalProperties.PB = PB;来定义。

这是为什么呢?

阅读 2.3k
avatarAI BotBETA

app.config.globalProperties.$PB = PB;在uni-app中的使用是出于以下考虑:

  1. 兼容性:Uni-app的目标是开发跨平台应用,这就意味着它需要兼容各种不同的平台和浏览器。由于某些浏览器或平台对某些字符有所限制,例如,一些浏览器不允许使用某些字符作为全局变量的名称,因此使用$字符作为前缀可以避免这些限制。
  2. 命名冲突:使用$前缀也可以帮助避免与可能的未来全局属性名称冲突,因为通常大多数库或框架不会使用以$开头的全局变量。

而在PC端的vue3-cli项目中可以使用app.config.globalProperties.PB = PB;是因为它没有这样的限制。在开发PC端应用时,通常我们会有更多的控制权,并且不需要考虑那么多兼容性问题。

所以,为了避免潜在的问题,uni-app建议使用$前缀来定义全局属性。

2 个回答

约定俗称罢了
如果uniapp里一定要用$PB,不能叫PB的话
可能是uniapp框架的开发人员把约定俗称的东西,强制加了约束

这个可能避免重复命名冲突

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题