2
0

Installation.html 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <!DOCTYPE html>
  2. <html lang="ru">
  3. <head>
  4. <meta charset="utf-8">
  5. <base href="../../../"/>
  6. <script src="page.js"></script>
  7. <link type="text/css"
  8. rel="stylesheet"
  9. href="page.css"/>
  10. </head>
  11. <body>
  12. <h1>Установка ([name])</h1>
  13. <p>
  14. Вы можете установить three.js с помощью [link:https://www.npmjs.com/ npm] и современных инструментов сборки или
  15. быстро начните работу со статического хостинга или CDN. Для большинства пользователей установка из npm является
  16. лучшим выбором.
  17. </p>
  18. <p>
  19. Что бы вы ни выбрали, будьте последовательны и импортируйте все файлы из одной и той же версии библиотеки.
  20. Смешивание файлов из разных источников может привести к включению дублирующегося кода или даже к неожиданной
  21. поломке
  22. приложения.
  23. </p>
  24. <p>
  25. Все способы установки three.js зависят от модулей ES (см.
  26. [link:https://eloquentjavascript.net/10_modules.html#h_hF2FmOVxw7 Eloquent JavaScript: ECMAScript Modules]),
  27. которые
  28. позволяют включать в конечный проект только те части библиотеки, которые необходимы.
  29. </p>
  30. <h2>Установка из npm</h2>
  31. <p>
  32. Чтобы установить [link:https://www.npmjs.com/package/three three] модуль npm, откройте окно терминала в папке
  33. вашего
  34. проекта и запустите:
  35. </p>
  36. <code>
  37. npm install three
  38. </code>
  39. <p>
  40. Пакет будет загружен и установлен. Когда вы будете готовы импортировать его в свой код:
  41. </p>
  42. <code>
  43. // Вариант 1: Импортируйте весь three.js основная библиотека.
  44. import * as THREE from 'three';
  45. const scene = new THREE.Scene();
  46. // Вариант 2: Импортируйте только те детали, которые вам нужны.
  47. import { Scene } from 'three';
  48. const scene = new Scene();
  49. </code>
  50. <p>
  51. При установке из npm вы почти всегда будете использовать какой-либо
  52. [link:https://eloquentjavascript.net/10_modules.html#h_zWTXAU93DC bundling tool], чтобы объединить все пакеты,
  53. необходимые вашему проекту, в один файл JavaScript. В то время как любой современный пакет JavaScript можно
  54. использовать с three.js , самым популярным выбором является [link:https://webpack.js.org/ webpack].
  55. </p>
  56. <p>
  57. Не ко всем функциям можно получить доступ непосредственно через модуль <em>three</em> (также называемый "голым
  58. импортом"). Другие популярные части библиотеки, такие как элементы управления, загрузчики и эффекты
  59. постобработки,
  60. должны быть импортированы из подпапки [link:https://github.com/mrdoob/three.js/tree/dev/examples/jsm
  61. examples/jsm].
  62. Чтобы узнать больше, смотрите <em>Примеры</em> ниже.
  63. </p>
  64. <p>
  65. Узнайте больше о модулях npm по ссылке [link:https://eloquentjavascript.net/20_node.html#h_J6hW/SmL/a Eloquent
  66. JavaScript: Installing with npm](Выразительный JavaScript: Установка с помощью npm).
  67. </p>
  68. <h2>Установка с CDN или статического хостинга</h2>
  69. <p>
  70. В three.js библиотеку можно использовать без какой-либо системы сборки, либо загрузив файлы на свой собственный
  71. веб-сервер, либо используя существующий CDN. Поскольку библиотека полагается на модули ES, любой скрипт, который
  72. ссылается на нее, должен использовать <em>type="module"</em>, как показано ниже.
  73. Также требуется определить карту импорта, которая разрешает пустой модуль, указанный как `three`.
  74. </p>
  75. <code>
  76. &lt;script async src="https://unpkg.com/[email protected]/dist/es-module-shims.js">&lt;/script>
  77. &lt;script type="importmap">
  78. {
  79. "imports": {
  80. "three": "https://unpkg.com/three@&lt;version&gt;/build/three.module.js"
  81. }
  82. }
  83. &lt;/script>
  84. &lt;script type="module">
  85. import * as THREE from 'three';
  86. const scene = new THREE.Scene();
  87. &lt;/script>
  88. </code>
  89. <p>
  90. Поскольку импорт карт еще не поддерживается всеми браузерами, необходимо добавить полифил *es-module-shims.js*.
  91. </p>
  92. <h2>Дополнения</h2>
  93. <p>
  94. Ядро three.js сосредоточен на наиболее важных компонентах 3D-движка. Многие другие полезные компоненты, такие
  95. как элементы управления, загрузчики и эффекты постобработки, являются частью каталога
  96. [link:https://github.com/mrdoob/three.js/tree/dev/examples/jsm examples/jsm]. Они называются "дополнениями"(addons) (ранее назывались "примерами"(examples)),
  97. потому что, хотя вы можете использовать их в готовом виде, они также предназначены для ремиксов и кастомизации.
  98. Эти компоненты всегда синхронизируются с основной библиотекой, в то время как аналогичные пакеты сторонних
  99. разработчиков в npm поддерживаются разными пользователями и могут быть устаревшими.
  100. </p>
  101. <p>
  102. Дополнения не нужно <em>устанавливать</em> отдельно, но их нужно <em>импортировать</em> отдельно. Если three.js был
  103. установлен с помощью npm, вы можете загрузить компонент [page:OrbitControls](Управление орбитой) с помощью:
  104. </p>
  105. <code>
  106. import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
  107. const controls = new OrbitControls( camera, renderer.domElement );
  108. </code>
  109. <p>
  110. Если three.js был установлен с CDN, используйте тот же код, но с `three/addons/` в карте импорта.
  111. </p>
  112. <code>
  113. &lt;script async src="https://unpkg.com/[email protected]/dist/es-module-shims.js">&lt;/script>
  114. &lt;script type="importmap">
  115. {
  116. "imports": {
  117. "three": "https://unpkg.com/three@&lt;version&gt;/build/three.module.js",
  118. "three/addons/": "https://unpkg.com/three@&lt;version&gt;/examples/jsm/"
  119. }
  120. }
  121. &lt;/script>
  122. &lt;script type="module">
  123. import * as THREE from 'three';
  124. import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
  125. const controls = new OrbitControls( camera, renderer.domElement );
  126. &lt;/script>
  127. </code>
  128. <p>
  129. Важно, чтобы все файлы использовали одну и ту же версию. Не импортируйте разные дополнения(addons) из разных версий и
  130. не используйте дополнения(addons) из версии, отличной от three.js самой библиотека.
  131. </p>
  132. <h2>Совместимость</h2>
  133. <h3>CommonJS импорт</h3>
  134. <p>
  135. В то время как большинство современных пакетов JavaScript теперь поддерживают модули по умолчанию, некоторые
  136. старые
  137. инструменты сборки могут этого не делать. В этих случаях вы, вероятно, можете настроить пакет для подключения
  138. модулей ES: [link:http://browserify.org/ Browserify] просто нужен плагин [link:https://github.com/babel/babelify babelify] , как пример.
  139. </p>
  140. <h3>Node.js</h3>
  141. <p>
  142. Так как three.js создан для Интернета, он зависит от браузера и DOM API, которые не всегда существуют в Node.js.
  143. Некоторые из этих проблем могут быть решены с помощью прослоек, таких как
  144. [link:https://github.com/stackgl/headless-gl headless-gl], или путем замены компонентов, таких как
  145. [page:TextureLoader], пользовательскими альтернативами. Другие API-интерфейсы DOM могут быть глубоко переплетены
  146. с использующим их кодом, и обойти их будет сложнее.
  147. Мы приветствуем простые и поддерживаемые предложения `pull requests` для улучшения поддержки Node.js, но
  148. рекомендуем сначала открыть `issue`(вопрос), чтобы обсудить ваши улучшения.
  149. </p>
  150. <p>
  151. Обязательно добавьте `{ "type": "module" }` в свой `package.json`, чтобы включить модули ES6 в ваш проект.
  152. </p>
  153. </body>
  154. </html>