dieverka
Куратор
- Регистрация
- Дек 7, 2024
- Сообщения
- 73
- Репутация
- 2
- Discord
- dieverka
- Тема Автор
- #1
Привет, разработчики!
Мы рады сообщить о новой функции Luau, доступной в движке Roblox: импорт модулей по строковому пути! С помощью этой функции вы сможете подключать модули, используя строковые пути вместо навигации через объекты Instances. Это сделает ваш код совместимым с Luau-кодом, написанным для других сред выполнения, а также упростит чтение и написание.
Кроме того, теперь можно импортировать объекты Instance, содержащие
Часто задаваемые вопросы (FAQ)
Ссылка на оригинальную статью
Мы рады сообщить о новой функции Luau, доступной в движке Roblox: импорт модулей по строковому пути! С помощью этой функции вы сможете подключать модули, используя строковые пути вместо навигации через объекты Instances. Это сделает ваш код совместимым с Luau-кодом, написанным для других сред выполнения, а также упростит чтение и написание.
Подробности
Разрешение строковых путей
Импорт по строковому пути (require-by-string) позволяет подключать модули с использованием относительных путей.- Символ
/
используется в качестве разделителя в путях. - Относительные пути должны начинаться с
./
или../
.
LUA:
local Module = require(script.Parent.Parent.Folder.ModuleScript)
local SameModule = require("../Folder/ModuleScript")
Поддержка файлов Init
Важно: Некоторые сторонние инструменты, такие как Rojo, используют другую семантику для файлов с именемinit.luau
. Дополнительную информацию можно найти в разделе FAQ.Кроме того, теперь можно импортировать объекты Instance, содержащие
ModuleScript
с именем Init
или init
. Это поведение соответствует тому, как обрабатываются папки во внешнем Luau-коде, где скрипт init.luau
внутри папки используется как точка входа. Благодаря этому изменению вы можете организовывать код в папки и импортировать всю папку целиком, упрощая структуру проекта!Автодополнение
Чтобы упростить разработку, в редакторе скриптов (Script Editor) теперь отображаются подсказки автодополнения по мере ввода путей в выраженияхrequire
.Проверка типов
При включенном строгом режиме (strict mode) вы также получите ошибку типа для любого пути, который не может быть разрешен вModuleScript
.Часто задаваемые вопросы (FAQ)
Нет, но ожидание события
game.Loaded
, используя game.Loaded:Wait()
, будет достаточным, если ваши скрипты находятся не в Workspace
. В противном случае, для ручной синхронизации можно использовать Instance:WaitForChild()
.Нет. Мы намерены сохранять совместимость с open-source версией Luau, которая не поддерживает абсолютные пути. Однако мы уже работаем над решениями, которые упростят доступ к общим библиотекам независимо от расположения ваших скриптов в проекте или файловой системе.
Пока нет, но мы работаем над этим! Поддержка алиасов в путях подключения — это важный шаг к полной кроссплатформенной совместимости.
Мы решили сохранить текущее поведение для файлов
Для большинства сторонних инструментов вы сможете использовать импорт по строковому пути без проблем. Однако некоторые инструменты используют другую семантику для файлов
В частности, инструмент Rojo обрабатывает файлы
Чтобы решить этот вопрос, мы планируем внедрить импорт относительно проекта, который обеспечит единый способ ссылаться на файлы в Roblox, файловой системе и при использовании сторонних инструментов, таких как Rojo. Мы расскажем больше об этом в будущем. Однако на данный момент это лишь первый шаг к согласованности между различными средами выполнения Luau.
init
, чтобы обеспечить согласованность с тем, как Luau работает за пределами Roblox. Хотя это решение может не полностью охватывать все случаи использования, оно помогает избежать поломки существующих проектов и является первым шагом к унифицированной экосистеме Luau.Для большинства сторонних инструментов вы сможете использовать импорт по строковому пути без проблем. Однако некоторые инструменты используют другую семантику для файлов
init
, что может привести к проблемам совместимости.В частности, инструмент Rojo обрабатывает файлы
init
так, как если бы они представляли собой саму директорию, преобразовывая их в объекты ModuleScript
с дочерними элементами при импорте в Roblox. Подробнее об этом можно узнать в разделе Rojo: Sync Details 20. Вы все равно сможете использовать импорт по строковому пути с Rojo, но следует учитывать эту потенциальную проблему при импорте проектов.Чтобы решить этот вопрос, мы планируем внедрить импорт относительно проекта, который обеспечит единый способ ссылаться на файлы в Roblox, файловой системе и при использовании сторонних инструментов, таких как Rojo. Мы расскажем больше об этом в будущем. Однако на данный момент это лишь первый шаг к согласованности между различными средами выполнения Luau.
Ссылка на оригинальную статью