Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

uniapp开发小程序什么支持vue3 jsx开发模式 #2245

Closed
tangly1991 opened this issue Nov 5, 2020 · 13 comments
Closed

uniapp开发小程序什么支持vue3 jsx开发模式 #2245

tangly1991 opened this issue Nov 5, 2020 · 13 comments
Labels
enhancement New feature or request

Comments

@tangly1991
Copy link

在某些特殊情况下jsx的形式要比普通的vue模板要更好,也更可控
隔壁taro都已经支持vue3 jsx了,希望官方能尽快支持jsx

@tangly1991 tangly1991 added the enhancement New feature or request label Nov 5, 2020
@tangly1991 tangly1991 changed the title uniapp小程序什么支持vue3 jsx开发模式 uniapp开发小程序什么支持vue3 jsx开发模式 Nov 5, 2020
@NomadBin
Copy link

+1 希望能支持jsx

@Ttou
Copy link

Ttou commented Jun 24, 2021

在某些特殊情况下jsx的形式要比普通的vue模板要更好,也更可控
隔壁taro都已经支持vue3 jsx了,希望官方能尽快支持jsx

隔壁怎么支持的,试了不行啊

@hyccpq
Copy link

hyccpq commented Jul 16, 2021

在某些特殊情况下jsx的形式要比普通的vue模板要更好,也更可控
隔壁taro都已经支持vue3 jsx了,希望官方能尽快支持jsx

隔壁怎么支持的,试了不行啊

隔壁可以的,装个vue官方jsx插件@vue/babel-plugin-jsx,和web配置一毛一样小程序就可以用了

@Ttou
Copy link

Ttou commented Jul 17, 2021

在某些特殊情况下jsx的形式要比普通的vue模板要更好,也更可控
隔壁taro都已经支持vue3 jsx了,希望官方能尽快支持jsx

隔壁怎么支持的,试了不行啊

隔壁可以的,装个vue官方jsx插件@vue/babel-plugin-jsx,和web配置一毛一样小程序就可以用了

看看这个issue,还在合并中

@hyccpq
Copy link

hyccpq commented Jul 17, 2021

在某些特殊情况下jsx的形式要比普通的vue模板要更好,也更可控
隔壁taro都已经支持vue3 jsx了,希望官方能尽快支持jsx

隔壁怎么支持的,试了不行啊

隔壁可以的,装个vue官方jsx插件@vue/babel-plugin-jsx,和web配置一毛一样小程序就可以用了

看看这个issue,还在合并中

这仅仅只是还不支持.jsx文件,.vue文件里面是可以的,return直接返回jsx一点问题都没有,我们项目里面从3.0一开始就一直在用了。去年11月份时候,我们技术选型时候就是因为uniapp不能写jsx才没有选的uniapp,我们原有项目太多jsx的东西了,迁移贼麻烦。

@Ttou
Copy link

Ttou commented Jul 19, 2021

@hyccpq 如果用 jsx 写,是不是编译不了 h5?

@tangly1991
Copy link
Author

@hyccpq 如果用 jsx 写,是不是编译不了 h5?
h5的话可以直接使用原版vue3写,装@vue/babel-plugin-jsx创建就能支持jsx/tsx
uniapp的vue3版刚出来的时候用过一下,一些vue3变更的模板语法居然被官方替换成vue2的,搞得后面切换原版vue3改了好久,有蛮长时间没用uniapp了,现在不知道改了这个没有
如果还是一样的话,建议开发h5就不要用uniapp了,跟着vue官方的走好些

@Lisheri
Copy link

Lisheri commented Jul 28, 2021

在某些特殊情况下jsx的形式更好普通的vue模板要,也可以更远
隔壁芋头已经支持vue3jsx了,希望官方能尽快支持jsx

隔壁怎么支持的,试了不行啊

隔墙可以的,装个vue官方jsx插件@vue/babel-plugin-jsx,和web配置一毛一样小程序就可以用了

看看这个问题,还在合并中

这虽然还不支持.jsx文件,.vue文件里面是可以的,直接返回jsx一点问题都没有,我们项目里面从3.0一开始就一直在用了。去年1月份的时候,我们技术选型的时候就是因为uni不能选的uniapp写jsx才没有选的uniapp,我们本来项目jsx的东西了,迁移贼麻烦。

老哥, 我用的2.x的vue, 配置了babel-plugin-jsx, 但是会报编译错误

这是我的配置:

const plugins = ["@vue/babel-plugin-jsx"]

if (process.env.UNI_OPT_TREESHAKINGNG) {
  plugins.push(require('@dcloudio/vue-cli-plugin-uni-optimize/packages/babel-plugin-uni-api/index.js'))
}

if (
  (
    process.env.UNI_PLATFORM === 'app-plus' &&
    process.env.UNI_USING_V8
  ) ||
  (
    process.env.UNI_PLATFORM === 'h5' &&
    process.env.UNI_H5_BROWSER === 'builtin'
  )
) {
  const path = require('path')

  const isWin = /^win/.test(process.platform)

  const normalizePath = path => (isWin ? path.replace(/\\/g, '/') : path)

  const input = normalizePath(process.env.UNI_INPUT_DIR)
  try {
    plugins.push([
      require('@dcloudio/vue-cli-plugin-hbuilderx/packages/babel-plugin-console'),
      {
        file (file) {
          file = normalizePath(file)
          if (file.indexOf(input) === 0) {
            return path.relative(input, file)
          }
          return false
        }
      }
    ])
  } catch (e) {}
}

process.UNI_LIBRARIES = process.UNI_LIBRARIES || ['@dcloudio/uni-ui']
process.UNI_LIBRARIES.forEach(libraryName => {
  plugins.push([
    'import',
    {
      'libraryName': libraryName,
      'customName': (name) => {
        return `${libraryName}/lib/${name}/${name}`
      }
    }
  ])
})
module.exports = {
  presets: [
    [
      '@vue/app',
      {
        modules: 'commonjs',
        useBuiltIns: process.env.UNI_PLATFORM === 'h5' ? 'usage' : 'entry'
      }
    ],
    // * jsx插件合集
    ["@vue/babel-preset-jsx", { compositionAPI: true }],
  ],
  plugins
}

我使用了'@vue/composition-api', 开了compositionAPI, 这个是正常的, 但是都不能在render函数中返回一段jsx, 只要有就会报错, 并不是直接的jsx文件, 就是一个.vue文件内, 而且是用的optionsAPI

@Ttou
Copy link

Ttou commented Aug 18, 2021

@Lisheri 他说的是隔壁那个,uniapp 不支持 jsx

@MrLeihe
Copy link

MrLeihe commented Oct 15, 2021

我在 babel 中添加可选链插件 @babel/plugin-proposal-optional-chaining,打包后依然报错提醒我安装 @babel/plugin-proposal-optional-chaining,请问 uni-app 里需要怎么处理

@Lisheri
Copy link

Lisheri commented Oct 15, 2021

@Lisheri 他说的是隔壁那个,uniapp 不支持 jsx

是的, 我发现了, 还有很多和vue不一样的地方

@fxy060608
Copy link
Collaborator

App,H5 平台可以支持jsx,tsx
小程序平台暂无计划支持

@Otto-J
Copy link
Member

Otto-J commented Jan 12, 2024

#4683

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

8 participants