uni-app vue2 脚手架创建项目引入@vue/composition-api后 小红书环境下不支持

发布于 1周前 作者 nodeper 来自 Uni-App

uni-app vue2 脚手架创建项目引入@vue/composition-api后 小红书环境下不支持

类别 信息
产品分类 uniapp/小程序/微信
PC开发环境 Mac
操作系统版本 Version: 2.1.3
工具版本号 2.1.3
基础库版本号 3.106
项目创建方式 CLI
CLI版本号 @vue/cli 5.0.8

bug描述:

uniapp-vue 脚手架创建的项目,引入@vue/composition-api,小红书环境下不支持

Image

操作步骤:

预期结果:

正常运行

实际结果:

编译失败运行失败


1 回复

uni-app 中使用 Vue 2 脚手架创建项目并引入 @vue/composition-api 时,如果遇到小红书环境不支持的问题,这通常是因为小红书平台对前端框架和库的支持有限。不过,我们可以通过条件编译来确保在特定环境下不引入或执行不兼容的代码。

以下是一个如何在 uni-app 中使用 @vue/composition-api 并针对小红书环境进行条件编译的示例。

1. 安装 @vue/composition-api

首先,确保你已经安装了 @vue/composition-api。如果还没有安装,可以通过 npm 或 yarn 进行安装:

npm install @vue/composition-api --save

或者

yarn add @vue/composition-api

2. 在 main.js 中引入 @vue/composition-api

main.js 中,我们需要根据平台来判断是否引入 @vue/composition-api。这里使用 uni.getSystemInfoSync 来获取平台信息,但注意 uni-app 并没有直接提供 getSystemInfoSync 方法来获取小程序平台的具体名称(如小红书),所以我们通常通过预定义的平台标识来处理。

// main.js
import Vue from 'vue'
import App from './App'

// 条件编译,假设我们通过预定义变量来判断是否为小红书环境
#ifndef XIAOHONGSHU
import VueCompositionApi from '@vue/composition-api'

Vue.use(VueCompositionApi)
#endif

Vue.config.productionTip = false

App.mpType = 'app'

const app = new Vue({
    ...App
})
app.$mount()

3. 使用 Composition API

在你的组件中,你可以使用 Composition API,但同样需要使用条件编译来确保在小红书环境下不会执行不兼容的代码。

<template>
  <view>
    <text>{{ message }}</text>
  </view>
</template>

<script>
export default {
  #ifndef XIAOHONGSHU
  setup() {
    const message = 'Hello, Composition API!'
    return { message }
  },
  #else
  data() {
    return {
      message: 'Hello, Options API in Xiaohongshu!'
    }
  },
  #endif
}
</script>

注意

  • 上面的示例中,#ifndef XIAOHONGSHU 是条件编译指令,你需要在实际项目中定义这个宏(例如在 manifest.json 或构建脚本中)。
  • 由于小红书平台对 Vue 3 或 @vue/composition-api 的支持情况可能不同,实际项目中可能需要做更多的适配工作。
  • 确保在发布前充分测试,以验证应用在不同平台上的表现。
回到顶部