uni-app踩坑(暂停更新)

173 阅读2分钟
  1. HBuilderX创建的项目仅支持在HBuilderX中编译,其他环境需使用vue-cli。
  2. uni_modules依赖需手动维护。更新时参考模块package.json文件中版本,已为最新版本不会覆盖。
  3. uni-app中vue文件(除App.vue)style标签默认scoped,若要取消需使用:scoped="false"
  4. uni-app中页面的父元素uni-page-body默认不具有height: 100%,可通过page选择器添加,但组件的page选择器在微信小程序中会警告,建议在App.vue中全局设置。
  5. uni-app H5端若要支持rpx计算,需设置pages.json中globalStyle下列属性为页面最大宽度:
属性类型默认值说明支持的平台
rpxCalcMaxDeviceWidthnumber960rpx最大支持宽度App、H5
rpxCalcBaseDeviceWidthnumber375rpx超出最大支持宽度后参考宽度App、H5
maxWidthnumber页面最大宽度H5
  1. 内置组件与uni-ui组件考虑微信小程序兼容性,尽量使用属性控制样式,而非css。
  2. input在H5端非原生组件,需使用placeholder-style属性。

uni-ui

  1. uni-icons属性size和color具有行内默认值,可使用空属性清除(不推荐,微信小程序会警告),例如:
<uni-icons type="search" size color />
属性名类型默认值说明
sizenumber | string16string类型支持单位,number类型单位为px
colorstringrgb(51,51,51)
  1. uni-icons在H5端具有同名class,微信小程序端没有。

vue-cli创建的项目

  1. uni_modules、static、pages和components目录位于src下。
  2. H5 dev模式下由于编译前后static目录位置不同,动态引用文件不会自动处理(静态无影响),可使用vite代理解决:
// vite.config.ts
// https://vitejs.dev/config
// ...
export default defineConfig({
    // ...
    server: {
        // ...
        proxy: {
            '/static': {
                target: 'http://localhost:5173',
                rewrite: path => path.replace(/^\/Test/, '/src/static')
            }
        }
    }
})
  1. sass、pinia需使用npm等外部包管理器安装。若报错Conflicting peer dependency,可尝试--legacy-peer-deps选项。
  2. VS Code打开带有注释的pages.json和manifest.json报错:
{
    // .vscode/settings.json
    "files.associations": {
        "pages.json": "jsonc",
        "manifest.json": "jsonc"
    }
}

微信小程序(暂停更新)

  1. wxss不支持万能选择器*组件样式不支持标签选择器、id选择器、属性选择器[]
  2. v-for不加:key会警告。
  3. 需使用uni.getMenuButtonBoundingClientRect()手动适配菜单按钮,具体参考

HBuilderX

  1. 若遇uni.scss自动导入失效,重启HBuilderX。
  2. 若需取消vue文件style标签最外层缩进,可使用官方prettier插件替换内置js-beautify。