首页 > 其他分享 >使用parcel搭建three.js开发环境

使用parcel搭建three.js开发环境

时间:2023-07-05 22:14:01浏览次数:59  
标签:const parcel THREE js three new

目录

为了方便模块化进行three.js项目的学习和开发,又不用学习太多的配置,增加学习成本,所以就使用Parcel这个web应用打包工具。

Parcel官网:https://v2.parceljs.cn/getting-started/webapp/

1、安装

​ 在开始之前,您需要安装 Node 和 npm,并为您的项目创建一个目录。然后,使用 npm 将 Parcel 安装到您的应用程序中:

npm install parcel-bundler --save-dev

image-20230705205443576

2、项目设置

​ 现在已经安装了 Parcel,让我们为我们的应用程序创建一些源文件。Parcel 接受任何类型的文件作为入口点,但 HTML 文件是一个很好的起点。Parcel 将从那里遵循您的所有依赖项来构建您的应用程序。

​ 创建src文件夹,并且创建index.html文件

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link rel="stylesheet" href="./assets/css/style.css" />
  </head>
  <body>
    <script src="./main/main.js" type="module"></script>
  </body>
</html> 

image-20230705210409058

  • 设置1个css文件

    *{
       margin: 0; 
       padding: 0;
    }
    body{
      background-color: skyblue;  
    }
    

    image-20230705210549537

  • 创建一个main.js

import * as THREE from "three";

//console.log(THREE);

// 目标:了解three.js最基本的内容

// 1、创建场景
const scene = new THREE.Scene();

// 2、创建相机
const camera = new THREE.PerspectiveCamera(
  75,
  window.innerWidth / window.innerHeight,
  0.1,
  1000
);

// 设置相机位置
camera.position.set(0, 0, 10);
scene.add(camera);

// 添加物体
// 创建几何体
const cubeGeometry = new THREE.BoxGeometry(1, 1, 1);
const cubeMaterial = new THREE.MeshBasicMaterial({ color: 0xffff00 });
// 根据几何体和材质创建物体
const cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
// 将几何体添加到场景中
scene.add(cube);

// 初始化渲染器
const renderer = new THREE.WebGLRenderer();
// 设置渲染的尺寸大小
renderer.setSize(window.innerWidth, window.innerHeight);
// console.log(renderer);
// 将webgl渲染的canvas内容添加到body
document.body.appendChild(renderer.domElement);

// 使用渲染器,通过相机将场景渲染进来
renderer.render(scene, camera);


3、打包脚本

到目前为止,我们一直在parcel直接运行 CLI,但在您的package.json文件中创建一些脚本以简化此操作会很有用。我们还将设置一个脚本来使用该命令构建您的应用程序以进行生产。parcel build最后,您还可以使用该字段在一个地方声明您的条目source,这样您就不需要在每个parcel命令中重复它们。

  • package.json:
{
  "name": "01-three_basic",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "parcel src/index.html",
    "build": "parcel build src/index.html"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "parcel-bundler": "^1.12.5"
  }
}

image-20230705211551348

image-20230705213251437

image-20230705213924381

标签:const,parcel,THREE,js,three,new
From: https://www.cnblogs.com/U204-zzq/p/17529933.html

相关文章

  • js 异步 任务 题目解析(chatgpt bug了?)
    最近遇到一道题如下,求输出结果感觉还是蛮有意思的,找chatgpt做了一下我是题asyncfunctionasync1(){console.log('1');awaitasync2();console.log('2');}asyncfunctionasync2(){console.log('3');}console.log('4')setTimeout(func......
  • js如何动态清除form表单中input款下的错误信息
    form表单<formaction=""method="post"novalidateid="myform">{%csrf_token%}{%forforminform_obj%}<divclass="form-group"><labelfor="{{form.i......
  • 前端文件流下载--mockjs污染全局问题
    参考文章https://blog.csdn.net/daotian2016/article/details/123670179 项目场景:项目场景:VUE工程,做了一个代码自动生成可以导出zip的功能。问题描述导出的zip文件打开提示“不可预料的压缩文件末端”,文件打不开。 exportfunctiondownLoadZip(str,filename){ varurl=......
  • API6中JS UI实现富文本组件居右显示
    ​ 【关键字】RichText、富文本组件、API6、JS UI、居右显示 【关键代码如下】index.hml<divclass="container"><divclass="top"><richtext@start="onLoadStart"@complete="onLoadEnd"class="rich">{{con......
  • VUE 2项目使用vue-json-excel导出数据
    记录一下后端返回的json数据转成excel导出这里外面使用的是vue-json-excel1.安装包npminstallvue-json-excel2.组件中使用<download-excelclass="btnbtn-default":data="json_data":fields="json_fields"worksheet="MyWorksheet"name=&......
  • js 实现 EventBus 事件总线
     EventBus一般用做单例,EventEmiter一般在组件或模块内使用<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0">&l......
  • egg.js
    引入joi进行参数校验按照依赖:npminstalljoi基本使用:constJoi=require('joi');constaddCatalogSchema=Joi.object({catalog:Joi.string().required(),});module.exports={addCatalogSchema,};//使用constctx=this.ctx;const{catalog}=ct......
  • 给第一行单元格赋值 + WPS JS获取工作表的总行数 + WPS JS获取工作表的总行数
    戳我,了解更多相关办公的小技巧给第一行单元格赋值1、在计算机中有一种ASCII编码,其中A在计算机中的表示的数字是65,a的ascii码是97,b的ascii码是98。2、从A1到F1可以看到第一个字母在变化,第2个数字始终是1,A的ascii码是65,F的ascii码是70。3、我们定义letter=65,使letter逐渐靠近70即可。......
  • JavaScript发展历史(JS)
    JavaScript发展历史1994年,网景公司(Netscape)发布了Navigator浏览器0.9版,这是世界上第一款比较成熟的网络浏览器,轰动一时。但是这是一款名副其实的浏览器--只能浏览页面,浏览器无法与用户互动,当时解决这个问题有两个办法,一个是采用现有的语言,许他们直接嵌入网页。另一个是发明一......
  • web js 播放rtsp视频流方案
    场景需要在web端预览海康无线摄像头视频流,所以采用海康自身提供的websdk无法使用方案1rtsp流推送到应用服务器,应用服务器再通过ffmpeg推送到nginx,js再去拉流缺点:多了一层转发,造成了一定的延迟方案2通过webRTC方案,使用现有开源插件webrtc-streamerhttps://github......