Import-via-modules.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <base href="../../../" />
  6. <script src="list.js"></script>
  7. <script src="page.js"></script>
  8. <link type="text/css" rel="stylesheet" href="page.css" />
  9. </head>
  10. <body>
  11. <h1>[name]</h1>
  12. <p>
  13. While importing three.js via script tags is a great way to get up and running fast, it has a few drawbacks for longer lived projects, for example:
  14. <ul>
  15. <li>You have to manually fetch and include a copy of the library as part of your project's source code</li>
  16. <li>Updating the library's version is a manual process</li>
  17. <li>When checking in a new version of the library your version control diffs are cluttered by the many lines of the build file</li>
  18. </ul>
  19. </p>
  20. <p>Using a dependency manager like npm avoids these caveats by allowing you to simply download and import your desired version of the library onto your machine.</p>
  21. <h2>Installation via npm</h2>
  22. <p>Three.js is published as an npm module, see: [link:https://www.npmjs.com/package/three npm]. This means all you need to do to include three.js into your project is run "npm install three"</p>
  23. <h2>Importing the module</h2>
  24. <p>Assuming that you're bundling your files with a tool such as [link:https://webpack.github.io/ Webpack] or [link:https://github.com/substack/node-browserify Browserify], which allow you to "require('modules')" in the browser by bundling up all of your dependencies.</p>
  25. <p>
  26. You should now be able to import the module into your source files and continue to use it as per normal.
  27. </p>
  28. <code>
  29. var THREE = require('three');
  30. var scene = new THREE.Scene();
  31. ...
  32. </code>
  33. <p>
  34. You're also able to leverage [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import ES6 import syntax]:
  35. </p>
  36. <code>
  37. import * as THREE from 'three';
  38. const scene = new THREE.Scene();
  39. ...
  40. </code>
  41. <p>
  42. or if you wish to import only select parts of three.js library, for example Scene:
  43. </p>
  44. <code>
  45. import { Scene } from 'three';
  46. const scene = new Scene();
  47. ...
  48. </code>
  49. <h2>Importable Examples</h2>
  50. <p>
  51. The core of three.js is focused on the most important components of a 3D engine. Many other components like loaders or controls are part of the
  52. examples directory. three.js ensures that these files are kept in sync with the core but users have to import them separately if they are required
  53. for their project. However, not all files are modules which makes their usage in certain cases inconvenient. In order to address this issue,
  54. we are working to provide all the examples as modules in the [link:https://github.com/mrdoob/three.js/tree/master/examples/jsm examples/jsm] directory.
  55. If you install three.js via npm, you can import them like so:
  56. </p>
  57. <code>
  58. import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
  59. </code>
  60. <p>
  61. The following examples files are already available as modules:
  62. <ul>
  63. <li>animation
  64. <ul>
  65. <li>AnimationClipCreator</li>
  66. <li>CCDIKSolver</li>
  67. <li>MMDAnimationHelper</li>
  68. <li>MMDPhysics</li>
  69. <li>TimelinerController</li>
  70. </ul>
  71. </li>
  72. <li>cameras
  73. <ul>
  74. <li>CinematicCamera</li>
  75. </ul>
  76. </li>
  77. <li>controls
  78. <ul>
  79. <li>DeviceOrientationControls</li>
  80. <li>DragControls</li>
  81. <li>EditorControls</li>
  82. <li>FirstPersonControls</li>
  83. <li>FlyControls</li>
  84. <li>MapControls</li>
  85. <li>OrbitControls</li>
  86. <li>OrthographicTrackballControls</li>
  87. <li>PointerLockControls</li>
  88. <li>TrackballControls</li>
  89. <li>TransformControls</li>
  90. </ul>
  91. </li>
  92. <li>curves
  93. <ul>
  94. <li>CurveExtras</li>
  95. <li>NURBSCurve</li>
  96. <li>NURBSSurface</li>
  97. <li>NURBSUtils</li>
  98. </ul>
  99. </li>
  100. <li>effects
  101. <ul>
  102. <li>AnaglyphEffect</li>
  103. <li>AsciiEffect</li>
  104. <li>OutlineEffect</li>
  105. <li>ParallaxBarrierEffect</li>
  106. <li>PeppersGhostEffect</li>
  107. <li>StereoEffect</li>
  108. </ul>
  109. </li>
  110. <li>exporters
  111. <ul>
  112. <li>ColladaExporter</li>
  113. <li>DRACOExporter</li>
  114. <li>GLTFExporter</li>
  115. <li>MMDExporter</li>
  116. <li>OBJExporter</li>
  117. <li>PLYExporter</li>
  118. <li>STLExporter</li>
  119. <li>TypedGeometryExporter</li>
  120. </ul>
  121. </li>
  122. <li>geometries
  123. <ul>
  124. <li>BoxLineGeometry</li>
  125. <li>ConvexGeometry</li>
  126. <li>DecalGeometry</li>
  127. <li>ParametricGeometries</li>
  128. <li>TeapotBufferGeometry</li>
  129. </ul>
  130. </li>
  131. <li>interactive
  132. <ul>
  133. <li>SelectionBox</li>
  134. <li>SelectionHelper</li>
  135. </ul>
  136. </li>
  137. <li>lights
  138. <ul>
  139. <li>LightProbeGenerator</li>
  140. <li>RectAreaLightUniformsLib</li>
  141. </ul>
  142. </li>
  143. <li>lines
  144. <ul>
  145. <li>Line2</li>
  146. <li>LineGeometry</li>
  147. <li>LineMaterial</li>
  148. <li>LineSegments2</li>
  149. <li>LineSegmentsGeometry</li>
  150. <li>Wireframe</li>
  151. <li>WireframeGeometry2</li>
  152. </ul>
  153. </li>
  154. <li>loaders
  155. <ul>
  156. <li>ctm
  157. <ul>
  158. <li>CTMLoader</li>
  159. </ul>
  160. </li>
  161. <li>deprecated
  162. <ul>
  163. <li>LegacyGLTFLoader</li>
  164. <li>LegacyJSONLoader</li>
  165. </ul>
  166. </li>
  167. <li>3MFLoader</li>
  168. <li>AMFLoader</li>
  169. <li>AWDLoader</li>
  170. <li>AssimpJSONLoader</li>
  171. <li>AssimpLoader</li>
  172. <li>BabylonLoader</li>
  173. <li>BasisTextureLoader</li>
  174. <li>BVHLoader</li>
  175. <li>ColladaLoader</li>
  176. <li>DDSLoader</li>
  177. <li>DRACOLoader</li>
  178. <li>EXRLoader</li>
  179. <li>EquirectangularToCubeGenerator</li>
  180. <li>FBXLoader</li>
  181. <li>GCodeLoader</li>
  182. <li>GLTFLoader</li>
  183. <li>HDRCubeTextureLoader</li>
  184. <li>KMZLoader</li>
  185. <li>KTXLoader</li>
  186. <li>LWOLoader</li>
  187. <li>MD2Loader</li>
  188. <li>MMDLoader</li>
  189. <li>MTLLoader</li>
  190. <li>NRRDLoader</li>
  191. <li>OBJLoader</li>
  192. <li>PCDLoader</li>
  193. <li>PDBLoader</li>
  194. <li>PlayCanvasLoader</li>
  195. <li>PLYLoader</li>
  196. <li>PRWMLoader</li>
  197. <li>PVRLoader</li>
  198. <li>RGBELoader</li>
  199. <li>STLLoader</li>
  200. <li>SVGLoader</li>
  201. <li>TDSLoader</li>
  202. <li>TGALoader</li>
  203. <li>TTFLoader</li>
  204. <li>VRMLLoader</li>
  205. <li>VRMLoader</li>
  206. <li>VTKLoader</li>
  207. <li>XLoader</li>
  208. </ul>
  209. </li>
  210. <li>math
  211. <ul>
  212. <li>ColorConverter</li>
  213. <li>ConvexHull</li>
  214. <li>ImprovedNoise</li>
  215. <li>Lut</li>
  216. <li>SimplexNoise</li>
  217. </ul>
  218. </li>
  219. <li>misc
  220. <ul>
  221. <li>CarControls</li>
  222. <li>ConvexObjectBreaker</li>
  223. <li>GPUComputationRenderer</li>
  224. <li>Gyroscope</li>
  225. <li>MD2Character</li>
  226. <li>MD2CharacterComplex</li>
  227. <li>MorphAnimMesh</li>
  228. <li>MorphBlendMesh</li>
  229. <li>Ocean</li>
  230. <li>RollerCoaster</li>
  231. <li>Volume</li>
  232. <li>VolumeSlice</li>
  233. </ul>
  234. </li>
  235. <li>modifiers
  236. <ul>
  237. <li>ExplodeModifier</li>
  238. <li>SimplifyModifier</li>
  239. <li>SubdivisionModifier</li>
  240. <li>TessellateModifier</li>
  241. </ul>
  242. </li>
  243. <li>objects
  244. <ul>
  245. <li>Fire</li>
  246. <li>Lensflare</li>
  247. <li>Reflector</li>
  248. <li>Refractor</li>
  249. <li>ReflectorRTT</li>
  250. <li>ShadowMesh</li>
  251. <li>Sky</li>
  252. <li>Water</li>
  253. <li>Water2</li>
  254. </ul>
  255. </li>
  256. <li>pmrem
  257. <ul>
  258. <li>PMREMCubeUVPacker</li>
  259. <li>PMREMGenerator</li>
  260. </ul>
  261. </li>
  262. <li>postprocessing
  263. <ul>
  264. <li>AdaptiveToneMappingPass</li>
  265. <li>AfterimagePass</li>
  266. <li>BloomPass</li>
  267. <li>BokehPass</li>
  268. <li>ClearPass</li>
  269. <li>CubeTexturePass</li>
  270. <li>DotScreenPass</li>
  271. <li>EffectComposer</li>
  272. <li>FilmPass</li>
  273. <li>GlitchPass</li>
  274. <li>HalftonePass</li>
  275. <li>MaskPass</li>
  276. <li>OutlinePass</li>
  277. <li>RenderPass</li>
  278. <li>SAOPass</li>
  279. <li>SavePass</li>
  280. <li>ShaderPass</li>
  281. <li>SMAAPass</li>
  282. <li>SSAARenderPass</li>
  283. <li>SSAOPass</li>
  284. <li>TAARenderPass</li>
  285. <li>TexturePass</li>
  286. <li>UnrealBloomPass</li>
  287. </ul>
  288. </li>
  289. <li>renderers
  290. <ul>
  291. <li>CSS2DRenderer</li>
  292. <li>CSS3DRenderer</li>
  293. <li>Projector</li>
  294. <li>SoftwareRenderer</li>
  295. <li>SVGRenderer</li>
  296. <li>RaytracingRenderer</li>
  297. <li>WebGLDeferredRenderer</li>
  298. </ul>
  299. </li>
  300. <li>shaders
  301. <ul>
  302. <li>AfterimageShader</li>
  303. <li>BasicShader</li>
  304. <li>BleachBypassShader</li>
  305. <li>BlendShader</li>
  306. <li>BokehShader</li>
  307. <li>BokehShader2</li>
  308. <li>BrightnessContrastShader</li>
  309. <li>ColorCorrectionShader</li>
  310. <li>ColorifyShader</li>
  311. <li>ConvolutionShader</li>
  312. <li>CopyShader</li>
  313. <li>DepthLimitedBlurShader</li>
  314. <li>DigitalGlitch</li>
  315. <li>DOFMipMapShader</li>
  316. <li>DotScreenShader</li>
  317. <li>FilmShader</li>
  318. <li>FocusShader</li>
  319. <li>FreiChenShader</li>
  320. <li>FresnelShader</li>
  321. <li>FXAAShader</li>
  322. <li>GammaCorrectionShader</li>
  323. <li>GodRaysShader</li>
  324. <li>HalftoneShader</li>
  325. <li>HorizontalBlurShader</li>
  326. <li>HorizontalTiltShiftShader</li>
  327. <li>HueSaturationShader</li>
  328. <li>KaleidoShader</li>
  329. <li>LuminosityHighPassShader</li>
  330. <li>LuminosityShader</li>
  331. <li>MirrorShader</li>
  332. <li>NormalMapShader</li>
  333. <li>OceanShaders</li>
  334. <li>ParallaxShader</li>
  335. <li>PixelShader</li>
  336. <li>RGBShiftShader</li>
  337. <li>SAOShader</li>
  338. <li>SepiaShader</li>
  339. <li>SkinShader</li>
  340. <li>SMAAShader</li>
  341. <li>SobelOperatorShader</li>
  342. <li>SSAOShader</li>
  343. <li>TechnicolorShader</li>
  344. <li>TerrainShader</li>
  345. <li>ToneMapShader</li>
  346. <li>ToonShader</li>
  347. <li>TranslucentShader</li>
  348. <li>TriangleBlurShader</li>
  349. <li>UnpackDepthRGBAShader</li>
  350. <li>VerticalBlurShader</li>
  351. <li>VerticalTiltShiftShader</li>
  352. <li>VignetteShader</li>
  353. <li>VolumeShader</li>
  354. <li>WaterRefractionShader</li>
  355. </ul>
  356. </li>
  357. <li>utils
  358. <ul>
  359. <li>BufferGeometryUtils</li>
  360. <li>GeometryUtils</li>
  361. <li>MathUtils</li>
  362. <li>SceneUtils</li>
  363. <li>ShadowMapViewer</li>
  364. <li>SkeletonUtils</li>
  365. <li>TypedArrayUtils</li>
  366. <li>UVsDebug</li>
  367. </ul>
  368. </li>
  369. <li>vr
  370. <ul>
  371. <li>deprecated
  372. <ul>
  373. <li>DaydreamController</li>
  374. <li>GearVRController</li>
  375. </ul>
  376. </li>
  377. <li>PaintViveController</li>
  378. <li>ViveController</li>
  379. </ul>
  380. </li>
  381. </ul>
  382. </p>
  383. <p>
  384. Note: When using code from the examples directory, it's important that all files match the version of
  385. your three.js main file. For example, it's not acceptable to use *GLTFLoader* and *OrbitControls* from R96 together
  386. with three.js R103. You can easily keep your files in sync by using the modules from the JSM directory. If the file
  387. is not available as a module, you can still use third-party npm packages or convert the file to a module by yourself.
  388. In both cases, ensure the code is compatible with your three.js main file.
  389. </p>
  390. </body>
  391. </html>