mkdir Three.js-TypeScript-Tutorial cd Three.js-TypeScript-Tutorial npm initPress enter several times to accept all defaults.
Install the Three.js library.
npm install three --save-devimport * as THREE from 'three'
const scene = new THREE.Scene()
const camera = new THREE.PerspectiveCamera(
75,
window.innerWidth / window.innerHeight,
0.1,
1000
)
camera.position.z = 2
const renderer = new THREE.WebGLRenderer()
renderer.setSize(window.innerWidth, window.innerHeight)
document.body.appendChild(renderer.domElement)
const geometry = new THREE.BoxGeometry()
const material = new THREE.MeshBasicMaterial({
color: 0x00ff00,
wireframe: true,
})
const cube = new THREE.Mesh(geometry, material)
scene.add(cube)
window.addEventListener('resize', onWindowResize, false)
function onWindowResize() {
camera.aspect = window.innerWidth / window.innerHeight
camera.updateProjectionMatrix()
renderer.setSize(window.innerWidth, window.innerHeight)
render()
}
function animate() {
requestAnimationFrame(animate)
cube.rotation.x += 0.01
cube.rotation.y += 0.01
render()
}
function render() {
renderer.render(scene, camera)
}
animate(){
"compilerOptions": {
"moduleResolution": "node",
"strict": true
},
"include": ["**/*.ts"]
}npm install @types/three --save-devPrecisamos instalar vários módulos para que possamos usar o Webpack com eficácia.
npm install webpack webpack-cli webpack-dev-server webpack-merge ts-loader --save-devnpm install typescript --save-devAgora vamos adicionar algumas configurações do Webpack ao nosso cliente.
const path = require('path')
module.exports = {
entry: './src/client/client.ts',
module: {
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/,
},
],
},
resolve: {
extensions: ['.tsx', '.ts', '.js'],
},
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, '../../dist/client'),
},
}const { merge } = require('webpack-merge')
const common = require('./webpack.common.js')
const path = require('path');
module.exports = merge(common, {
mode: 'development',
devtool: 'eval-source-map',
devServer: {
static: {
directory: path.join(__dirname, '../../dist/client'),
},
hot: true,
},
}) "dev": "webpack serve --config ./src/client/webpack.dev.js",