Как использовать установленный npm цезий для браузера

Цезий теперь на нпм. После npm install cesium входа в мой проект все коды попадают в node_modules.

В цезиевом hello world он включает cesium чем-то вроде <script src="your/path/to/Cesium.js"></script>

Мой вопрос, какие дополнительные шаги мне нужно сделать, чтобы использовать цезий из html?


person user2829759    schedule 04.02.2016    source источник


Ответы (1)


Есть несколько способов. Если обслуживается сама папка node_modules, то можно просто вытащить Cesium оттуда. Во время отладки используйте неминифицированную версию:

<script src="node_modules/cesium/Build/CesiumUnminified/Cesium.js"></script>
<style>
    @import url(node_modules/cesium/Build/CesiumUnminified/Widgets/widgets.css);
</style>

Но для производства используйте уменьшенную версию:

<script src="node_modules/cesium/Build/Cesium/Cesium.js"></script>
<style>
    @import url(node_modules/cesium/Build/Cesium/Widgets/widgets.css);
</style>

Есть и другой вариант. Вы можете использовать npm, чтобы получить копию require.js, а затем потребовать только определенные модули Cesium, которые вам нужны, из исходного дерева Cesium в node_modules\cesium\Source. Это приводит к тому, что ваш проект включает меньше JavaScript, чем при извлечении всего объединенного файла, и упрощает отладку из-за отдельных файлов. Но это приводит к большему количеству сетевых запросов, поэтому вы не хотели бы этого непосредственно в производственной среде без какой-либо системы сборки для объединения и минимизации файлов, которые вы используете.

В сообщении в блоге, посвященном npm cesium, есть дополнительная информация. (написано Мэттом Амато, который также оставил несколько комментариев ниже)

person emackey    schedule 04.02.2016
comment
Для модулей AMD вы не должны использовать node_modules/cesium/node_modules/requirejs/require.js, а вместо этого напрямую зависеть от requirejs в вашем package.json. - person Matthew Amato; 04.02.2016
comment
Кроме того, если вам не нравится AMD/requireJS, вы можете использовать Webpack, который становится одним из самых популярных сборщиков. Недавно у нас была запись в блоге об этом: cesiumjs.org/2016/01/ 26/Цезий-и-Вебпак - person Matthew Amato; 04.02.2016
comment
Спасибо, Мэтт. Я отредактировал ответ, чтобы люди могли использовать отдельный require.js. Дайте мне знать, если потребуются дальнейшие правки. - person emackey; 04.02.2016
comment
@emackey Спасибо за ответ! Действительно, мой вопрос возник после прочтения статьи Мэттью cesiumjs.org/2015/12/14/ Цезий-npm. Я хочу включить цезий в модули AMD. Хотелось бы иметь более подробные процедуры использования requirejs, так как у меня меньше опыта в разработке интерфейса. - person user2829759; 04.02.2016
comment
Моя рекомендация (и я не уверен, что Мэтт согласится) заключается в том, что менее опытные разработчики начинают с комбинированной версии, как показано в верхней части моего ответа. Там намного меньше того, что может пойти не так, и легко переключиться на неминифицированный для отладки и минимизированный для производства. - person emackey; 04.02.2016
comment
Было бы лучше ограничить статическую подачу только каталогом cesium Build: например. app.use(express.static(path.join(__dirname, 'node_modules/cesium/Build/'))); - person wulfgarpro; 25.04.2017
comment
@wulfgarpro Для использования комбинированного или минимизированного Cesium, да, вы можете ограничиться папкой Build или даже подпапкой Cesium или CesiumUnminified внутри Build. Но чтобы последовать совету Мэтта и использовать requirejs, вам потребуется доступ к папке Source над Build. Хорошая мысль о том, что остальные модули node_modules не обслуживаются, спасибо! - person emackey; 25.04.2017