Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在vue组件中导入和使用three.js库

在vue组件中导入和使用three.js库
EN

Stack Overflow用户
提问于 2017-12-16 20:20:05
回答 6查看 22.9K关注 0票数 11

有没有人能给我解释一下如何在vue组件中正确地导入和使用 three.js库?

经过多次搜索,我发现大多数人使用下面这行代码来导入vue组件中的three.js,但是我认为它已经过时了(对于旧版本的three.js document 或旧版本的vue中使用的,使用usef)。

代码语言:javascript
运行
AI代码解释
复制
import * as THREE from './js/three.js';

不幸的是,这似乎对我不起作用,因为在之后编译我的vue项目时,我得到了以下警告。(请注意,项目实际上没有正确编译,当我浏览到它时,我得到一个空文件)。

我尝试了许多其他常见的方法来导入three.js,但都不起作用!

我根本不是Vue专家,但是three.js包含了下面的导出代码块,我认为这可能会影响我需要导入这个库的方式,以避免编译警告。

代码语言:javascript
运行
AI代码解释
复制
exports.WebGLRenderTargetCube = WebGLRenderTargetCube;
exports.WebGLRenderTarget = WebGLRenderTarget;
exports.WebGLRenderer = WebGLRenderer;
exports.ShaderLib = ShaderLib;
exports.UniformsLib = UniformsLib;
exports.UniformsUtils = UniformsUtils;
exports.ShaderChunk = ShaderChunk;
exports.FogExp2 = FogExp2;
exports.Fog = Fog;
exports.Scene = Scene;
(and so one...)

我在项目中使用的The complete Vue component file

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-12-16 20:29:44

您可以使用如下的require语句:

代码语言:javascript
运行
AI代码解释
复制
const THREE = require('THREE')

但是一些插件假定THREE在window上可用,因此您可能想要执行window.THREE = require('THREE')

我没有太多使用import语句的经验,但上面的方法应该可以工作。

票数 4
EN

Stack Overflow用户

发布于 2018-03-15 09:11:54

对于任何只想尝试基本设置的人来说。这是一个vue组件'ThreeTest‘中的three.js示例。项目设置为vue-cli 'vue init webpack项目名‘,'cd项目名’,'npm install three --save‘,并将'HelloWorld’组件替换为这个组件:

代码语言:javascript
运行
AI代码解释
复制
<template>
    <div id="container"></div>
</template>

<script>
import * as Three from 'three'

export default {
  name: 'ThreeTest',
  data() {
    return {
      camera: null,
      scene: null,
      renderer: null,
      mesh: null
    }
  },
  methods: {
    init: function() {
        let container = document.getElementById('container');

        this.camera = new Three.PerspectiveCamera(70, container.clientWidth/container.clientHeight, 0.01, 10);
        this.camera.position.z = 1;

        this.scene = new Three.Scene();

        let geometry = new Three.BoxGeometry(0.2, 0.2, 0.2);
        let material = new Three.MeshNormalMaterial();

        this.mesh = new Three.Mesh(geometry, material);
        this.scene.add(this.mesh);

        this.renderer = new Three.WebGLRenderer({antialias: true});
        this.renderer.setSize(container.clientWidth, container.clientHeight);
        container.appendChild(this.renderer.domElement);

    },
    animate: function() {
        requestAnimationFrame(this.animate);
        this.mesh.rotation.x += 0.01;
        this.mesh.rotation.y += 0.02;
        this.renderer.render(this.scene, this.camera);
    }
  },
  mounted() {
      this.init();
      this.animate();
  }
}
</script>

<style scoped>
    //TODO give your container a size.
</style>
票数 53
EN

Stack Overflow用户

发布于 2019-06-10 22:36:03

由于给定的答案对我不起作用,我将分享对我起作用的初始设置。我在我的示例中使用了Nuxt.js。

如果这个方法有效,应该会出现一个绿色的旋转立方体。

代码语言:javascript
运行
AI代码解释
复制
<template>
  <div id="container"></div>
</template>
<script>
import * as THREE from 'three'

export default {
  name: 'ThreeTest',
  data() {
    return {
      cube: null,
      renderer: null,
      scene: null,
      camera: null
    }
  },
  methods: {
    init: function() {
      this.scene = new THREE.Scene()
      this.camera = new THREE.PerspectiveCamera(
        75,
        window.innerWidth / window.innerHeight,
        0.1,
        1000
      )

      this.renderer = new THREE.WebGLRenderer()
      this.renderer.setSize(window.innerWidth, window.innerHeight)
      document.body.appendChild(this.renderer.domElement)

      const geometry = new THREE.BoxGeometry(1, 1, 1)
      const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 })
      this.cube = new THREE.Mesh(geometry, material)
      this.scene.add(this.cube)

      this.camera.position.z = 5

      const animate = function() {}
    },
    animate: function() {
      requestAnimationFrame(this.animate)

      this.cube.rotation.x += 0.01
      this.cube.rotation.y += 0.01

      this.renderer.render(this.scene, this.camera)
    }
  },
  mounted() {
    this.init()
    this.animate()
  }
}
</script>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47849626

复制
相关文章
元宇宙相关产业有哪些?
产业元宇宙,注重生产、能效、协作关系,连接各行各业的产业生态,解决问题,带来经济效益。
TalkPython
2022/11/21
8280
java常量有哪些_Java中的常量有哪些?
JAVA常量就是在程序中固定不变的值,是不能改变的数据。例如数字1、字符“a”、浮点数3.2等。那么java的常量有哪些呢?在Java中,常量包括整型常量、浮点数常量、布尔常量、字符常量等。
全栈程序员站长
2022/09/08
4.5K0
java常量有哪些_Java中的常量有哪些?
跟DNS相关的常见攻击类型有哪些?
什么是DNS?DNS是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS自出现以来,一直被认为是最重要的互联网服务之一,几乎所有的网络服务都依托于DNS服务将域名解析为IP地址。DNS如此重要,但很多企业对DNS安全却并不是很重视,导致DNS经常被不法分子利用,发起各种网络攻击。今天墨者安全就来说说跟DNS相关的常见攻击类型有哪些?
墨者盾
2019/03/09
3.5K0
跟DNS相关的常见攻击类型有哪些?
不同类型的DDoS攻击对应的防御措施有哪些?
DDoS的攻击方式有很多种,最常见的就是利用大量僵尸网络模拟真实流量访问服务器,从而占用服务器资源和带宽拥堵,导致正常用户无法访问。很多互联网企业都有部署DDoS防御措施,但并不是一套方案就可以一劳永逸的。现在DDoS攻击大多数是复合式攻击,越来越复杂化,不同攻击方式对应的防御措施也不一样,今天墨者安全就来分享一下不同类型的DDoS攻击对应的防御措施有哪些?
墨者盾
2019/03/13
1.3K0
不同类型的DDoS攻击对应的防御措施有哪些?
mysql改变主键字段类型吗_mysql修改字段类型有哪些?
mysql修改字段类型有:1、添加字段【alter table table1(表名)add No_id(字段名)】;2、修改字段类型【t1(表名) alter column a(字段名)】;3、删除某表的字段【drop ‘cpid’】。
全栈程序员站长
2022/08/14
8.4K0
mysql改变主键字段类型吗_mysql修改字段类型有哪些?
【职业】与大数据相关的工作职位有哪些?
上一篇我们回答了《现在学习大数据晚吗?》,我们陆续收到了大家的一些反馈,针对大家的问题,我们后续会继续挑一些有代表性的问题继续回答。 在回答《与大数据相关的工作职位有哪些?》,让我们先看一段对话: 小袁:我是一只苦逼的程序猿,俗称技术屌丝男,还属于码农阶段,起早贪黑不分时间,没房没车没对象,每天除了代码,就是BUG,觉得暗无天日,没有钱途,现在想换相关的职业,不知道DOCTOR V有什么可以介绍的? Doctor V:云计算的实现,咱们迎来了大数据时代,而基于数据处理和开发,有几个职位想必你会感兴趣,
小莹莹
2018/04/23
3.5K0
【职业】与大数据相关的工作职位有哪些?
Kaizen的好处有哪些?
在今天的大多数公司中,都有一种减少浪费和提高质量的一致动力。Kaizen方法的好处远远不止于减少浪费或提高质量,虽然很多不同的质量工具都能让你走到这一步,但是Kaizen可以让你走得更远。适当地实施Kaizen方法可以在组织的所有层次上以各种方式取得积极的结果。实施Kaizen的好处包括但不限于:
用户9972271
2022/12/19
8570
Hash 算法有哪些?
Hash ,一般叫做散列算法,就是把任意长度的输入通过散列算法,变换成固定长度的输入,相当于一种压缩映射,将任意长度的消息压缩到某一固定长度的消息摘要的函数。
王小明_HIT
2020/08/10
4K0
编程有哪些语言???
一、机器语言:一种计算机可以直接识别的二进制代码,机器语言的优点是运行速度快,占用少量计算机内存资源,但是这种语言的可读性较低,代码操作起来也比较复杂。
用户10352932
2023/07/09
2490
Lombok 有哪些坑 ?
简单来讲,就是在项目中使用 Lombok 可以减少很多重复代码的书写。比如说 getter/setter/toString 等方法的编写。
周三不加班
2019/06/03
4.3K0
SpringBoot有哪些优点?
当下,Java Web开发领域,毫无疑问SpringBoot已经只手遮天,面试必问,本期就来分享一道高频面试题:为什么选择SpringBoot?它有哪些优点?
甲蛙全栈
2021/03/30
5.4K0
Java有哪些异常?
在 Java 中,所有的异常都有一个共同的祖先 java.lang 包中的 Throwable 类。Throwable 类有两个重要的子类 Exception(异常)和 Error(错误)。Exception 能被程序本身处理(try-catch), Error 是无法处理的(只能尽量避免)。Exception 和 Error 二者都是 Java 异常处理的重要子类,各自都包含大量子类。
黑洞代码
2021/01/14
1.9K0
Java有哪些异常?
测试有哪些陷阱?
所谓的反模式, 是指用来解决问题的带有共同性的不良方法。它们已经经过研究并分类,以防止日后重蹈覆辙,并能在研发尚未投产时辨认出来。
周辰晨
2023/03/02
1.2K0
测试有哪些陷阱?
Adobe有哪些软件?
Adobe是一家知名的软件公司,其产品广泛应用于图像处理、视频制作、网页设计等领域。以下是Adobe公司旗下的一些主要软件:
IT胶囊
2023/04/17
1.1K0
python优势有哪些?
1. 简单 Python的语法非常优雅,甚至没有像其他语言的大括号,分号等特殊符号,代表了一种极简主义的设计思想。阅读Python程序像是在读英语。
全栈程序员站长
2022/11/09
1.5K0
约束文件有哪些
对于一个完整的FPGA设计,既要有时序约束,也要有物理约束(例如:管脚分配与管脚电平设置)。Xilinx建议将这两类约束分开写在不同的约束文件中。此外,考虑到某些设计中可能会用到手工布局,从而会有相应的Floorplan约束(对应Pblock,可理解为面积约束)。同时,在大多数情形下都需要对FPGA设计进行调试,这样就会用到ILA,同时需要对相应的net设置MARK_DEBUG属性,这可理解为第三种约束即调试约束。因此一个完备的约束会包含时序约束、物理约束和调试约束,如下图所示。
Lauren的FPGA
2020/04/27
2.1K0
HTTP 的常见头字段有哪些?说说它们的作用
今天带大家学习一些 HTTP 常见的头字段,谈谈它们的作用,并附带一些实际使用场景。
前端西瓜哥
2022/08/18
9310
HTTP 的常见头字段有哪些?说说它们的作用
java有哪些服务器_java服务器有哪些?
应用服务器主要为应用程序提供运行环境,为组件提供服务。Java 的应用服务器很多,从功能上分为两大类,JSP 服务器和 Java EE 服务器,也可分其他小类。
全栈程序员站长
2022/06/27
8.8K0
java有哪些服务器_java服务器有哪些?
单点登录落地实现技术有哪些,有哪些流行的登录方案搭配?
实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效
艾编程
2020/06/10
3.5K0
chatGPT-4有哪些优势,有哪些使用chatGPT-4的方案
本文详细介绍了GPT-4和chatGPT的区别,GPT-4相对于chatGPT有哪些进步和提升,GPT-4到底有哪些强大之处,GPT-4提供了哪些新功能和新变化,GPT-4具有什么特点和应用场景,GPT-4会产生哪些影响。
网络精灵
2023/03/28
2.1K0
chatGPT-4有哪些优势,有哪些使用chatGPT-4的方案

相似问题

demo 运行不了?

3222

发票开错公司了,怎么处理?

1280

不小心买错系统了?

1244

连接不了服务器了?

1329

为啥关注了还看不了文章“”????

1129
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档