ModuleScript
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
A ModuleScript là một loại kịch bản trả về chính xác một giá trị bằng một cuộc gọi đến require() . ModuleScripts chạy một lần và chỉ một lần cho mỗi môi trường Luau và trả lại giá trị tương tự cho các cuộc gọi tiếp theo tới require() .
ModuleScripts là các đối tượng cốt lõi để tuân thủ nguyên tắc "Don't Repeat Yourself" (DRY), cho phép bạn viết một chức năng chỉ một lần và sử dụng nó ở khắp mọi nơi.Có nhiều bản sao của một chức năng là khó khăn khi bạn cần thay đổi hành vi của chúng, vì vậy bạn nên xác định chức năng hoặc nhóm chức năng trong và có cuộc gọi và của bạn trên các mô-đun đó.
Quan trọng là phải biết rằng các giá trị trả về từ ModuleScripts độc lập với Scripts và LocalScripts , và các môi trường khác như Thanh lệnh .Sử dụng require() trên một ModuleScript trong một LocalScript sẽ chạy mã trên máy khách, ngay cả khi một Script đã làm như vậy trên máy chủ.Do đó, hãy cẩn thận nếu bạn đang sử dụng một ModuleScript trên máy khách và máy chủ cùng một lúc, hoặc đang gỡ lỗi nó trong Studio.
Lưu ý rằng cuộc gọi đầu tiên đến require() sẽ không cho kết quả (tạm dừng) trừ khi ModuleScript đưa ra (các cuộc gọi task.wait() ví dụ), trong trường hợp đó, luồng truy cập hiện tại đã gọi require() sẽ cho đến khi ModuleScript trả về một giá trị.Nếu một ModuleScript đang cố gắng require() một ModuleScript khác mà trong lượt đó nó cố gắng require() nó, luồng sẽ treo và không bao giờ dừng lại (các cuộc gọi chu kỳ require() không tạo ra lỗi).Hãy lưu ý đến sự phụ thuộc của mô-đun trong các dự án lớn!
Nếu một ModuleScript được tải lên Roblox và mô-đun gốc có tên được đặt thành MainModule , nó có thể được tải lên như một mô hình và yêu cầu sử dụng require() với ID tài sản của mô hình.Sau đó nó có thể được tải vào trải nghiệm của bạn, mặc dù logic này chỉ hoạt động trên máy chủ và sẽ xảy ra lỗi trên khách hàng.Nếu người dùng khác muốn sử dụng mô-đun, nó phải công cộngkhai.
Mẫu mã
The code sample starts by creating a local variable holding an empty table. It then fills the table with two placeholder functions, and then finally returns the table. Using this code in a ModuleScript would make the my_functions table (and thus any functions, tables or other values within it) available to any Script, LocalScript or other ModuleScript.
-- Tables store multiple values in one variable
local MyFunctions = {}
-- Add a few functions to the table
function MyFunctions.foo()
print("Foo!")
end
function MyFunctions.bar()
print("Bar!")
end
-- ModuleScripts must return exactly one value
return MyFunctions
This code sample shows how to use the require function on a ModuleScript, then use the value that it returned. See the "Simple ModuleScript Example" for the code to go with this sample.
-- The require function is provided a ModuleScript, then runs
-- the code, waiting until it returns a singular value.
local MyFunctions = require(script.Parent.MyFunctions)
-- These are some dummy functions defined in another code sample
MyFunctions.foo()
MyFunctions.bar()
Tóm Tắt
Thuộc Tính
Mã sẽ được thực hiện.
Thuộc Tính
Source
Mã sẽ được thực hiện.
Nếu bạn muốn đọc hoặc chỉnh sửa một kịch bản mà người dùng đã mở, hãy xem xét sử dụng ScriptEditorService để tương tác với Trình soạn thảo kịch bản thay thế.