Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
T treasure
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 13
    • Issues 13
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • External wiki
    • External wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • FE
  • treasure
  • Issues
  • #244

Closed
Open
Created Jun 28, 2024 by lizijian@lizijian

uniapp的微信小程序分包异步化踩坑

分包异步化可以跨分包去引用其他分包的组件。解决了一些公用组件必须放到主包的问题,大大降低了主包尺寸。 但是使用下来发先uniapp编译微信小程序,只有pages.json文件可以配置页面属性,自定义组件没有提供类似.json的文件配置属性,导致分包异步化只能作用在页面级别夸分包,如果存在引用嵌套组件,且内部组件是垮分包的话,就会报错找不到路径。但是有一个临时解决方案下面会讲,但是有局限性,最好是等uniapp更新(可能遥遥无期)

页面垮分包引用组件使用方法:

  1、在pages.json页面路由配置,比如views/create/entry用到V1FormInput组件,那就添加componentPlaceholder属性组件占位,
     view是占位的标签。注意v1-form-input写法,而不是V1FormInput!!!
  {	
    "path": "views/create/entry",
    "style": {
      "navigationBarBackgroundColor": "#FFFFFF",
      "navigationBarTitleText": "",
      "componentPlaceholder": {
        "v1-form-input" : "view"
      }
    }
  },
  2、views/create/entry页面引用。
    import V1FormInput from 'src/pages/subPagesComponents/components/Form/V1FormInput/index.vue';

    components: {
      V1FormInput
    }

嵌套组件内引用垮分包组件使用方法:

以上方法在uniapp中只限于页面级别夸分包引用组件(因为uniapp没有组件的.json文件配置componentPlaceholder属性原因), 如果页面引用的组件嵌套了其他分包的组件时,使用该方法,但是只限垮一个分包。

解决方案:

将该页面引用的组件移动到目标分包内,然后重复1和2步骤跨分包引用该页面组件, 代码可参考location-space-mp商业直租小程序目录src/pages/subPagesComponents/components/Business/site-selection/RecommendLocation.vue的组件引用,该组件里引用了src/pages/subPagesComponents/components/Form/V1FormAddress/index.vue的组件,所以将RecommendLocation组件移动到了subPagesComponents分包下(该方式有弊端,只能引用主包或者subPagesComponents分包下的组件)

Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking