wechat-miniprogram / threejs-miniprogram 挖坑教程实录

本文详细介绍了如何在小程序中使用WebGL进行模型渲染,解决webviewer兼容性问题。通过安装和配置Three.js适配版,实现高质量的3D渲染效果。

1.背景

想用小程序做模型渲染,但是webviewer出现不兼容问题,所以改为原生webgl渲染。

2.安装

项目文件夹内,如果没有package.json则新建,格式如下:

{
  "name": "abc",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "eamon",
  "license": "",
  "dependencies": {
  }
}

“详情”=〉“本地设置”=〉勾选“使用npm模块”

控制台/终端打开项目文件夹,通过npm安装:

npm install --save threejs-miniprogram

菜单“工具”=>“构建npm”完成安装。

3.导入小程序适配版本的 Three.js

官方案例:

import {createScopedThreejs} from 'threejs-miniprogram'

Page({
  onReady() {
    wx.createSelectorQuery()
      .select('#webgl')
      .node()
      .exec((res) => {
        const canvas = res[0].node
        // 创建一个与 canvas 绑定的 three.js
        const THREE = createScopedThreejs(canvas)
        // 传递并使用 THREE 变量
      })
  }
})

官方说明:

  • 本项目当前使用的 Three.js 版本号为 0.108.0,如要更新 threejs 版本可发 PR 修改或 fork 后自行修改。
  • 该适配版本的 THREE 不在全局环境中,如使用 Three.js 的其他配套类库,需要自行传入 THREE 到类库中。
  • 如在使用过程中发现有适配问题,可通过 issue 反馈或发 PR 修复。

4.前端wxml页面

<canvas
  type="webgl"
  id="webgl"
  style="width: 100%; height: 100vh;"
></canvas>

5.配套类库

未完待续。。。

 

 

参考文章

<think>我们面对的问题是:在微信小程序的 pages/usercenter/index.json 文件中使用 tdesign-miniprogram 的 t-popup 组件时,提示组件未找到。错误信息中给出了几个路径,但都未找到组件。 根据错误信息,我们可以分析可能的原因: 1. 组件路径配置错误:在json文件中引入组件的路径不正确。 2. 组件未正确安装:可能没有正确安装 tdesign-miniprogram 组件。 3. 构建npm问题:如果使用了npm包,可能没有构建npm,导致组件没有生成到 miniprogram_npm 目录下。 4. 小程序配置问题:比如开发者工具没有开启使用npm模块。 根据引用[1]和[3]中的错误情况,它们分别提到了组件路径错误和未找到组件的问题。引用[2]是关于分包配置,引用[4]是关于uni-app的开发规范,虽然不直接相关,但可以借鉴多端兼容的规范。 解决步骤: 1. 确认组件安装: 首先,确保已经通过npm安装了tdesign-miniprogram。在项目根目录下执行: ```bash npm install tdesign-miniprogram -S --production ``` 2. 构建npm: 在微信开发者工具中,点击菜单栏的“工具” -> “构建npm”,将node_modules中的包构建到miniprogram_npm目录下。 3. 检查组件路径: 在json文件中引入组件时,路径应该是从miniprogram_npm开始的相对路径。对于tdesign-miniprogram的popup组件,正确的路径应该是: ```json "usingComponents": { "t-popup": "tdesign-miniprogram/popup/popup" } ``` 4. 注意路径大小写: 由于Windows系统不区分大小写,但微信开发者工具在模拟器环境中可能区分,所以确保路径大小写与实际目录一致。tdesign-miniprogram的组件目录通常是小写。 5. 检查项目配置: 在项目根目录的app.json中,检查是否设置了"miniprogramRoot",确保其指向正确的目录(如"miniprogram/")。同时,确认project.config.json中的"miniprogramRoot"设置正确。 6. 如果以上步骤都正确,尝试删除miniprogram_npm目录并重新构建npm,有时构建可能不完整。 7. 如果使用了分包,请确保在分包中引入组件的路径相对于当前分包,或者将组件放在主包中。根据引用[2]的分包配置,如果usercenter是一个分包,那么组件的路径应该从分包的根目录开始计算,但通常我们建议将公共组件放在主包中,或者在每个分包中单独引入(如果组件只在某个分包中使用)。如果tdesign-miniprogram是在主包中构建的,那么分包的页面中也可以使用,因为主包的miniprogram_npm是全局可用的。 8. 重新启动开发者工具:有时候开发者工具可能存在缓存,重启可以解决一些问题。 根据用户提供的错误信息,路径为:C:/Users/xiaoz/Documents/trae_projects/yiyi/yiyi_cloth/miniprogram-4/pages/usercenter/miniprogram_npm/tdesign-miniprogram/popup 这个路径看起来有问题,因为miniprogram_npm通常是在项目根目录下,而不是在pages/usercenter目录下。所以,在json文件中引入组件的路径应该是从根目录的miniprogram_npm开始,即: ```json "t-popup": "/miniprogram_npm/tdesign-miniprogram/popup/popup" ``` 或者相对路径可能是: ```json "t-popup": "../../miniprogram_npm/tdesign-miniprogram/popup/popup" ``` 但是,由于usercenter页面在pages/usercenter目录下,所以需要根据实际目录结构调整。如果miniprogram_npm在项目根目录,那么使用绝对路径(以/开头)更不容易出错。 因此,在pages/usercenter/index.json中,应该使用: ```json { "usingComponents": { "t-popup": "/miniprogram_npm/tdesign-miniprogram/popup/popup" } } ``` 总结:请按照以上步骤操作,特别是确保构建npm,并使用正确的绝对路径引入组件。 如果问题仍然存在,请检查tdesign-miniprogram的popup组件是否存在于miniprogram_npm/tdesign-miniprogram/popup目录下,以及该目录中是否有popup.js、popup.json、popup.wxml、popup.wxss文件。 §§相关问题§§ 1. 如何在小程序中正确安装和使用第三方UI组件库? 2. 微信小程序构建npm失败的可能原因及解决方法? 3. 如何在小程序分包中引用组件? </think> ### 解决小程序 t-popup 组件未找到问题 #### 问题分析 根据报错信息,组件未找到的主要原因可能有: 1. **组件路径引用错误**:JSON 配置的组件路径与实际路径不匹配 2. **NPM 构建问题**:未正确构建或更新 npm 依赖 3. **路径大小写敏感**:Windows 系统路径大小写不敏感,但开发工具可能区分 4. **组件安装不完整**:tdesign-miniprogram 未完整安装或版本不兼容 #### 解决方案步骤 1. **检查组件引用路径** 在 `pages/usercenter/index.json` 中修改路径为: ```json { "usingComponents": { "t-popup": "/miniprogram_npm/tdesign-miniprogram/popup/popup" } } ``` 📌 使用绝对路径 `/miniprogram_npm/` 开头确保全局访问 2. **重新构建 NPM** - 删除项目根目录的 `miniprogram_npm` 文件夹 - 微信开发者工具 → 菜单栏 → 工具 → 构建 npm - 检查控制台输出是否包含 `tdesign-miniprogram` 的成功构建提示 3. **验证组件安装** ```bash # 项目根目录执行 npm install tdesign-miniprogram@latest --save ``` 确保 `package.json` 中包含: ```json "dependencies": { "tdesign-miniprogram": "^1.0.0" // 版本号需≥1.0.0 } ``` 4. **检查文件路径大小写** 确认实际路径中的文件名大小写与代码一致: - 错误路径:`C:.../popup` - 正确路径应为:`C:.../popup`(注意 `popup` 为全小写) 5. **清除缓存并重启** - 开发者工具 → 编译 → 勾选 "重新编译时刷新所有文件缓存" - 点击 "清空文件缓存" 按钮 - 重启开发者工具 #### 补充说明 - 若使用**分包加载**,需在主包中声明组件(引用[2]) - 跨平台开发需遵循规范路径(引用[4]) - 组件路径必须包含完整文件名(如 `popup/popup` 而非仅 `popup`) > **示例配置** > 成功引用后的目录结构: > ``` > miniprogram_npm/ > └── tdesign-miniprogram/ > └── popup/ > ├── popup.js # 必须存在 > ├── popup.json > ├── popup.wxml > └── popup.wxss > ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值