Lua Academy · บทเรียน

การจัดการเวอร์ชันและการพึ่งพา

ติดตามเวอร์ชันปลั๊กอินและตรวจสอบความเข้ากันได้ขณะโหลด

บทเรียน 4 จาก 413 ขั้นตอน

การจัดการเวอร์ชันและการพึ่งพา เป็นบทเรียน Lua Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Lua Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดการกำหนดรุ่นจึงสำคัญ

ปลั๊กอินมีการพัฒนาอยู่เสมอ ปลั๊กอินรุ่น 2.0 อาจเข้ากันไม่ได้กับเอพีไอรุ่น 1.0 การติดตามรุ่นช่วยป้องกันความล้มเหลวด้านความเข้ากันได้ที่เกิดขึ้นโดยไม่แจ้งเตือน

การกำหนดรุ่นแบบความหมาย

ใช้การกำหนดรุ่นแบบความหมาย: MAJOR.MINOR.PATCH การเปลี่ยนแปลงที่ทำให้เข้ากันไม่ได้จะเพิ่ม MAJOR ฟีเจอร์ใหม่จะเพิ่ม MINOR และการแก้ข้อผิดพลาดจะเพิ่ม PATCH

แมนนิเฟสต์ปลั๊กอินพร้อมรุ่น

ปลั๊กอินแต่ละรายการประกาศรุ่นของตนเองและรุ่นเอพีไอของแอปที่ต้องการ

return {
  name        = "auth",
  version     = "2.1.0",
  apiRequired = ">=1.0.0",
  deps        = { {name="logger", version=">=1.0.0"} },
  init        = function(app) -- ... end
}

การแยกวิเคราะห์รุ่น

แยกวิเคราะห์สตริงรุ่นออกเป็นองค์ประกอบที่สามารถเปรียบเทียบกันได้

local function parseVersion(v)
  local major, minor, patch = v:match("(%d+)%.(%d+)%.(%d+)")
  return {tonumber(major), tonumber(minor), tonumber(patch)}
end
local function versionGe(a, b)
  a, b = parseVersion(a), parseVersion(b)
  for i = 1, 3 do
    if a[i] ~= b[i] then return a[i] > b[i] end
  end
  return true
end

การตรวจสอบความเข้ากันได้

ขณะโหลดปลั๊กอิน ให้ตรวจสอบว่ารุ่นเอพีไอของแอปตรงตามข้อกำหนดของปลั๊กอิน

local APP_VERSION = "1.5.0"
local function checkCompatibility(plugin)
  local req = plugin.apiRequired or ">=0.0.0"
  local minVer = req:match(">=(.+)")
  if minVer and not versionGe(APP_VERSION, minVer) then
    error(("Plugin %s requires app >= %s, got %s"):format(
      plugin.name, minVer, APP_VERSION))
  end
end

การแก้กราฟการพึ่งพา

สร้างกราฟการพึ่งพาและทำการเรียงลำดับเชิงทอพอโลยีเพื่อกำหนดลำดับการโหลด

การตรวจจับการพึ่งพาแบบวนรอบ

ติดตามว่าปลั๊กอินใดกำลังอยู่ระหว่างการโหลด หากปลั๊กอินพึ่งพาปลั๊กอินที่กำลังโหลดอยู่แล้ว (อยู่ในวงจร) ให้แจ้งข้อผิดพลาด

local loading = {}
local function loadWithCycleCheck(name, plugins)
  if loading[name] then error("Circular dependency: " .. name) end
  loading[name] = true
  -- load deps then load plugin
  loading[name] = nil
end

แนวทางการอัปเกรด

จัดทำคู่มือการย้ายระบบสำหรับการเพิ่มรุ่น MAJOR พิจารณาจัดเตรียมชั้นเชื่อมความเข้ากันได้สำหรับเอพีไอปลั๊กอินรุ่นเก่าในช่วงเปลี่ยนผ่าน

รีจิสทรีปลั๊กอินพร้อมรุ่น

รีจิสทรีส่วนกลางจัดเก็บรุ่นของปลั๊กอินที่ติดตั้งไว้ทั้งหมด แก้ไขความขัดแย้งโดยเลือกรุ่นที่เข้ากันได้และมีหมายเลขสูงสุด

รูปแบบไฟล์ล็อก

เช่นเดียวกับไฟล์ล็อกแพ็กเกจของเอ็นพีเอ็ม ให้บันทึกรุ่นที่ใช้อย่างแน่นอนในการติดตั้งใช้งานจริง เพื่อให้สร้างซอฟต์แวร์ซ้ำได้ผลเหมือนเดิม

การเจรจารุ่นขณะทำงาน

อนุญาตให้ปลั๊กอินประกาศรุ่นเอพีไอที่เข้ากันได้หลายรุ่น แอปโฮสต์จะเจรจาและเลือกรุ่นสูงสุดที่ทั้งสองฝ่ายรองรับร่วมกัน

คำถามเรื่องการกำหนดรุ่น

การเพิ่มรุ่น MAJOR ในการกำหนดรุ่นแบบความหมายบ่งบอกอะไร

สรุป: การกำหนดรุ่นและการพึ่งพา

ใส่รุ่นและ apiRequired ไว้ในแมนนิเฟสต์ของปลั๊กอินทุกตัว แยกวิเคราะห์และเปรียบเทียบรุ่นขณะโหลด ตรวจจับการพึ่งพาแบบวนรอบ ใช้การเรียงลำดับเชิงทอพอโลยีเพื่อกำหนดลำดับการโหลด เก็บไฟล์ล็อกเพื่อให้การติดตั้งใช้งานจริงสร้างซ้ำได้ผลเหมือนเดิม

เริ่มต้นได้ฟรี

เรียนรู้ Lua ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
40
บทเรียน
159

คำถามที่พบบ่อย

บทเรียน “การจัดการเวอร์ชันและการพึ่งพา” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การจัดการเวอร์ชันและการพึ่งพา” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Lua Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การจัดการเวอร์ชันและการพึ่งพา”

ติดตามเวอร์ชันปลั๊กอินและตรวจสอบความเข้ากันได้ขณะโหลด คุณปฏิบัติ Lua Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Lua Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Lua Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การจัดการเวอร์ชันและการพึ่งพา” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Lua Academy นี้ได้ไหม

ได้ บทเรียน Lua Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การค้นหาและโหลดปลั๊กอิน
  2. API ปลั๊กอินและระบบฮุก
  3. การแซนด์บ็อกซ์การทำงานของปลั๊กอิน
  4. การจัดการเวอร์ชันและการพึ่งพา
← กลับไปที่ Lua Academy