Haxe: ความลับสุดยอดของการพัฒนาข้ามแพลตฟอร์ม
เผยแพร่แล้ว: 2022-03-11ภาษาการเขียนโปรแกรมสมัยใหม่ Haxe เป็นที่รู้จักกันดีในบางวงการ แต่หลายคนที่อ่านเรื่องนี้ไม่เคยได้ยินเรื่องนี้มาก่อน อย่าปล่อยให้สถานะเฉพาะของมันหลอกคุณ นับตั้งแต่ปรากฏตัวครั้งแรกในปี 2548 ได้มีการทดสอบการต่อสู้โดยผู้ภักดี—หากค่อนข้างเงียบ—การติดตาม มีการผสมผสานคุณลักษณะที่เป็นประโยชน์สำหรับการพัฒนาธุรกิจ เกม และแม้แต่บริบททางวิชาการ
Disney, Hasbro และ BBC กำลังใช้ Haxe เหตุใดนักพัฒนาจึงไม่เคยได้ยินเรื่องนี้อีก บางทีความเก่งกาจของมันหมายความว่าไม่มี "แอพนักฆ่า" เดียวสำหรับภาษาการเขียนโปรแกรม Haxe
หรืออาจเป็นเพราะหนึ่งในแอพนักฆ่าที่เก่าที่สุด ซึ่งเป็นเส้นทางการโยกย้ายที่อยู่ห่างไกลจากแพลตฟอร์ม Flash ที่กำลังจะตาย เป็นช่องโหว่เล็กน้อยในบางวิธี ตลาดเกมสบาย ๆ ที่น่ายกย่องได้รับการแย่งชิงในช่วงไม่กี่ปีที่ผ่านมาภายใต้เงาของความไม่แน่นอนของ Adobe และในที่สุดมันก็ชัดเจนว่าอะไรก็ตามที่ใช้ Flash จะต้องเคลื่อนไหวอย่างเป็นทางการในปี 2020
วิศวกรซอฟต์แวร์ธุรกิจและนักพัฒนาเว็บ—ที่จริงแล้ว ผู้พัฒนาเกมจำนวนมากเช่นกัน—อาจได้ยิน "Flash" และปรับแต่งทันที ดังนั้นมูลนิธิ Haxe จึงใช้ FlashDevelop IDE และทำการรีแบรนด์ให้เป็น Haxe IDE, HaxeDevelop มากขึ้น
แต่อาจเป็นเรื่องยากที่จะสลัดความสัมพันธ์ออกไป โดยเฉพาะอย่างยิ่งเมื่อความสัมพันธ์ยังคงมีความเกี่ยวข้องอยู่ ตัวอย่างเช่น FlowPlay ซึ่งเกมโซเชียลมีผู้ใช้ 75 ล้านคน เลือก Haxe เหนือ Unity และ HTML5 สำหรับการเปลี่ยนโค้ด 1.4 ล้านบรรทัดจาก Flash ในช่วงสองปีล่าสุด (รายละเอียดเพิ่มเติมมีอยู่ในกรณีศึกษา)
อาจเป็นเรื่องยากสำหรับ Haxe Foundation ที่จะสามารถเน้นกรณีการใช้งานเช่นนี้ ในขณะที่ยังคงดึงดูดนักพัฒนาซอฟต์แวร์ที่ไม่ใช่เกม แต่อย่าปล่อยให้สิ่งนั้นขัดขวางคุณจากการสำรวจเพียงเล็กน้อย
อะไรคือเรื่องใหญ่กับ Haxe?
โครงการ Debian อธิบาย Haxe ว่าเป็น "ภาษาโปรแกรมสากล" มีหลายแง่มุมที่
โดยทั่วไปแล้ว ภาษา Haxe หมายถึงการนำโค้ดกลับมาใช้ใหม่ (ดี) โดยที่ฉันหมายถึง: คุณสามารถใช้รหัส Haxe ซ้ำได้ในหลายแพลตฟอร์ม คุณสามารถรวมเข้ากับรหัส Haxe และไม่ใช่ Haxe ที่มีอยู่ และสำหรับ good ภาษา Haxe ทำให้มีกระบวนทัศน์ที่พิสูจน์แล้วและเป็นจริงมากมาย เช่น ความปลอดภัยประเภท
ต่อจากหัวข้อความเก่งกาจ สิ่งนี้แปลเป็นกรณีการใช้งานหลักหลายหมวดหมู่—แน่นอนว่าการย้ายย้าย Flash นั้นแยกจากกัน
การพัฒนาแอพหรือเกมข้ามแพลตฟอร์มตั้งแต่เริ่มต้น Haxe สามารถกำหนดเป้าหมายแพลตฟอร์มเดสก์ท็อป อุปกรณ์เคลื่อนที่ และเว็บได้จากฐานแหล่งที่มาภาษาเดียว ภาษาการเขียนโปรแกรมข้ามแพลตฟอร์มไม่มีอะไรใหม่ และมีโซลูชันพิเศษสำหรับเดสก์ท็อปและแอพมือถือและเกมข้ามแพลตฟอร์ม แต่ Haxe ทำสิ่งที่พิเศษกว่าเล็กน้อยในแง่ที่ว่ามันสามารถกำหนดเป้าหมายไม่ใช่แค่หลายแพลตฟอร์ม แต่มีหลายกระบวนทัศน์ เช่น HTML5 และไบนารีเนทีฟ
ภาษาเดียว “ปกครองพวกเขาทั้งหมด” ให้อภัยการอ้างอิงของโทลคีน แต่เช่นเดียวกับ Node.js ที่ยกย่องยุคของการใช้ภาษาเดียวกันที่ส่วนหน้าและส่วนหลังของเว็บไซต์ โครงการใดๆ ที่มีสิ่งที่คล้ายกับสถาปัตยกรรมไคลเอนต์-เซิร์ฟเวอร์สามารถใช้ Haxe สำหรับทั้งสองส่วนได้
ตัวอย่างเช่น เว็บแอป FontStruct ใช้ Haxe ทั้งในการวาดภาพบนแคนวาส HTML5 ที่ส่วนหน้าและผ่าน Java2D ที่ส่วนหลัง (แต่ดังที่กล่าวไว้ วิธีการนี้เป็นทางเลือก — Haxe เล่นได้ดีกับโค้ดที่ไม่ใช่ Haxe ที่มีอยู่ด้วย เพราะได้รับการออกแบบมาเพื่อไม่ให้ผูกมัดคุณ) การรักษาแอป เกม ธุรกิจ และแม้แต่ตรรกะการเรนเดอร์ให้สอดคล้องกันในทุกบริบท แพลตฟอร์ม และภาษาที่ส่งออกจะง่ายกว่ามากด้วยวิธีนี้
หนีจาก JavaScript ไปสู่ความปลอดภัยในการพิมพ์ เดี๋ยวก่อน นี่ไม่ใช่สิ่งที่ TypeScript มีไว้เพื่อ? ใช่ หากคุณต้องการจำกัดเอาต์พุต JavaScript ในทางกลับกัน ภาษา Haxe ยังสามารถแปลงเป็น Java, C++, C#, Python และ Lua ได้อีกด้วย
ในขณะเดียวกัน ภาษาการเขียนโปรแกรม Haxe นั้นง่ายพอที่จะเรียนรู้จาก JavaScript—วากยสัมพันธ์ของมันไม่ได้หมายถึงการเปลี่ยนกระบวนทัศน์ครั้งใหญ่เช่นพูดของ Rebol ประโยชน์ของการเปลี่ยนแปลงดังกล่าวแม้ว่า Dr. Andy Li ผู้พัฒนาหลักของ Haxe ได้เขียนการเปรียบเทียบเชิงลึกระหว่าง TypeScript และ Haxe ที่ยังคงมีความเกี่ยวข้องในปัจจุบัน แม้ว่าทั้งสองภาษาจะยังคงพัฒนาต่อไป
เวิร์กโฟลว์ค่อนข้างเร็วสำหรับคอมไพเลอร์ นี่เป็นส่วนที่เพิ่มเข้ามาเมื่อเร็ว ๆ นี้ (แม้ว่า Neko จะเป็นตัวเลือกก่อนหน้านี้): HashLink เป็นเครื่องเสมือนข้ามแพลตฟอร์ม (VM) ที่ดูเหมือนว่าจะสร้างสมดุลระหว่างการคอมไพล์อย่างรวดเร็วมาก แต่ยังมีประสิทธิภาพเพียงพอที่รันไทม์สำหรับสิ่งต่าง ๆ เช่นการเล่นเกม 3 มิติ แต่แม้ในฝั่งเว็บ Haxe ก็สามารถทำงานได้ดีกว่า TypeScript ทั้งในเวลาคอมไพล์และตอนรันไทม์
ชายแดนที่น่าตื่นเต้น Haxe นั้นเป็นโอเพ่นซอร์สและมีชุมชนที่ใช้งานได้ โดยมีการเพิ่มคุณสมบัติภาษาใหม่ตลอดเวลา ความลับย่อยที่เก็บไว้อย่างดีที่สุดอาจเป็นแค่ระบบแมโครเวลาคอมไพล์ ซึ่งมีกรณีการใช้งานที่น่าสนใจมากมาย ให้คุณสร้างโปรแกรมเมตาได้ตามใจคุณ (ฉันพูดถึงตัวอย่างด้านล่าง)
ใครบ้างที่ใช้ Haxe?
สำหรับผู้เริ่มต้น ผู้พัฒนาเกม แน่นอน Madden NFL Mobile, Evoland II, Double Kick Heroes…เกมเหล่านี้และเกมอื่น ๆ ที่เผยแพร่อีกหลายร้อยเกมได้รับการพัฒนาโดยใช้ Haxe แต่ Haxe ยังสร้างกระแสนอกขอบเขตการเล่นเกม:
- ย้อนกลับไปในปี 2014 TiVo ใช้ Haxe เพื่อเพิ่มประสิทธิภาพในกล่อง TiVo Premiere ของพวกเขามากกว่า 30%
- Massive Interactive ซึ่งมีลูกค้ารวมถึงระบบ “สมาร์ททีวี” ของ DAZN และ Telecine สำหรับ Haxe (ซึ่งมีฐานผู้ใช้ขนาดใหญ่ทั้งคู่) ใช้ Haxe มาหลายปีแล้ว Philippe Elsass สถาปนิก UI ของพวกเขาตั้งข้อสังเกตกับฉันว่าจากประสบการณ์ของเขาในการทำงานกับโครงการเว็บขนาดใหญ่ Haxe มีแนวโน้มที่จะใช้ง่ายกว่า TypeScript และเกี่ยวกับลำดับความสำคัญในการคอมไพล์เร็วกว่า
- Synolia ใช้ภาษา Haxe สำหรับเครื่องมือปรับแต่งออนไลน์ Heidi ซึ่งใช้โดย แบรนด์ฝรั่งเศสรายใหญ่อย่าง Carrefour และ La Fnac รวมถึงตู้เพลง Synolia กล่าว ชุดเครื่องมือ Haxe ช่วยให้พวกเขาจัดการการเปลี่ยนจาก Flash เป็น HTML5 ได้อย่างมีประสิทธิภาพ ในขณะเดียวกันก็สามารถใช้โอกาสในการพัฒนาธุรกิจใหม่ๆ ในด้านอุปกรณ์พกพา Heidi เป็นแอปพลิเคชัน SaaS ชุดเครื่องมือ Haxe อนุญาตให้แชร์ซอร์สโค้ดทั่วไประหว่างเลเยอร์และบริการต่างๆ ของแอป
- องค์กรข้ามชาติ Docler Holding กลายเป็นหุ้นส่วนเชิงกลยุทธ์ของมูลนิธิ Haxe ในปี 2560
ระบบนิเวศ Haxe เป็นอย่างไร?
เมื่อพูดถึงการเล่นเกมและ Haxe มันเป็นโลกกว้างในแง่ของเฟรมเวิร์กโอเพนซอร์สและไลบรารี ตั้งแต่ทีมอินดี้อิสระไปจนถึงสตูดิโอที่ประสบความสำเร็จกับลูกค้าต่างประเทศ ผู้ใช้ Haxe แบ่งปันรหัสกันทุกที่:
- Flambe ถูกใช้โดยแบรนด์ต่างๆ เช่น Disney, Coca-Cola และ Toyota เพื่อพัฒนาเกม HTML5
- Heaps คือเฟรมเวิร์กเกมประสิทธิภาพสูงที่อยู่เบื้องหลังกลยุทธ์ 3D ที่ได้รับความนิยมจาก Northgard
- ไลบรารีการพัฒนาอย่างรวดเร็ว awe6 ที่เพิ่มพลังให้กับการเล่นเกมมือถือนับล้านอาจเป็นอัญมณีที่ซ่อนอยู่ภายในอัญมณีที่ซ่อนอยู่
- Kha ซึ่งสามารถกำหนดเป้าหมายไปที่ XBox One, Nintendo Switch และ PlayStation 4 นอกเหนือจากเดสก์ท็อปและมือถือ มีเอ็นจิ้นเกมมากกว่า 20 ตัวที่สร้างขึ้น ซึ่งรวมถึง Armory ซึ่งมีการรวม Blender เต็มรูปแบบและเพิ่งกลายเป็นโอเพ่นซอร์ส
- HaxeFlixel สร้างแบบจำลองตามไลบรารี Flixel เก่าสำหรับ Flash เป็นตัวเลือกยอดนิยมที่อยู่เบื้องหลังเกมอย่าง Defender's Quest ที่ได้รับความนิยม
- Starling ของ Gamua ซึ่งเป็นเฟรมเวิร์กที่ใช้สำหรับพอร์ต Facebook ของ Angry Birds เมื่อไม่กี่ปีก่อน ตอนนี้มีพอร์ต Haxe โอเพ่นซอร์ส
- OpenFL ซึ่งใช้ Flash API จะเป็นวิธีกำหนดเป้าหมายคอนโซลหลายเครื่องในไม่ช้า เช่น PlayStation 4, PlayStation Vita, XBox One และ Nintendo Switch โดยไม่ต้องเสียค่าธรรมเนียมใบอนุญาตเพิ่มเติม HaxeFlixel และ Starling สร้างขึ้นบน OpenFL แต่บางเกมได้รับการพัฒนาบน OpenFL โดยตรง เช่น Papers, Please ที่ได้รับรางวัล
- Native Media Engine, NME ซึ่ง OpenFL ถูกแยกออกเมื่อหลายปีก่อน ยังคงเปิดตัวเวอร์ชันหลักเช่นกัน
- บางทีคุณอาจเห็นเมื่อ HaxePunk (สืบเชื้อสายมาจาก FlashPunk) ปรากฏบนบล็อก Release Radar ของ GitHub
- Nape Physics Engine ที่ปรับให้เหมาะสมที่สุดนั้นยอดเยี่ยมสำหรับเอ็นจิ้นเกม 2 มิติหรือเครื่องจำลองที่ต้องการฟิสิกส์ที่ซับซ้อนกว่านี้
จริงอยู่ที่ ฉากการพัฒนาเกมเป็นส่วนที่มองเห็นได้ชัดเจนยิ่งขึ้นในระบบนิเวศของภาษา Haxe (บางทีนี่อาจเป็นเพราะธรรมชาติของเกมติดขัดอย่าง Ludum Dare?) แต่ธุรกิจและแม้แต่ฝ่ายองค์กรก็แสดงให้เห็นเช่นกัน ตัวอย่างเช่น:
- เฟรมเวิร์กแอพโมดูลาร์ hexMachina รองรับการใช้งานภาษาเฉพาะโดเมน (DSL) และสถาปัตยกรรม model-view-controller (MVC) รวมถึงคุณสมบัติอื่นๆ อีกมากมาย
- เอ็นจิ้นเลย์เอาต์ UI HaxeUI กำลังพัฒนาอย่างแข็งขันและมีการสนับสนุนองค์กร ผลิตภัณฑ์อย่าง 3DVista และ Kaizen for Pharma ได้จัดส่งแอปการผลิตด้วย
- ไม่ใช่เพียงอันเดียว แต่ไลบรารี thx.core และญาติของมันให้ส่วนขยายเอนกประสงค์แก่ Haxe เหมือนกับที่ Lodash ทำกับ JavaScript
- เมื่อพูดถึง JavaScript โปรเจ็กต์ Haxe ที่กำหนดเป้าหมายอาจได้รับประโยชน์จากการใช้ประโยชน์จาก Haxe Modular ซึ่งช่วยให้ทั้ง Telecine และ FlowPlay ขยายขนาดโปรเจ็กต์ขนาดใหญ่ของพวกเขาในขณะที่ทำให้พวกเขาโหลดได้อย่างรวดเร็วในฝั่งไคลเอ็นต์
- ระบบนิเวศของ Haxe ยังคงพัฒนาอย่างต่อเนื่องเพื่อเชื่อมต่อกับเทคโนโลยีปัจจุบัน เช่น ขณะนี้มีห้องสมุด GraphQL
- สุดท้ายนี้ ทิงเกอร์เบลล์ที่เป็นแบบอย่างใช้ประโยชน์จากระบบมาโครของ Haxe สำหรับงานที่มีประโยชน์ทุกประเภท มีเฟรมเวิร์กสำหรับการกำหนดเส้นทางเว็บ การทดสอบหน่วย และการฝัง SQL รวมถึงไลบรารีสำหรับทุกอย่างตั้งแต่การแยกเทมเพลตและตัวเลือก CSS ไปจนถึง async/await และการจัดการสถานะปฏิกิริยาตอบสนองของเส้นโค้งการเรียนรู้ที่ต่ำกว่า
นี่เป็นเพียงไฮไลท์ของคำแนะนำบางส่วนที่ผู้ใช้ภาษา Haxe ได้นำไปใช้ Haxe.org รักษารายชื่อห้องสมุดทั้งหมดโดยจัดเรียงตามความนิยม ซึ่งคุณสามารถเรียกดูตามแท็กได้ แต่ก็ยังคุ้มค่าที่จะเน้นย้ำถึงสองโครงการที่มูลนิธิ Haxe เองดูแล:
- สำหรับมุม DevOps มี Haxe Docker repo อย่างเป็นทางการ
- ในด้านความเสถียร แม้จะมีการอัปเดตเวอร์ชันหลักก็ตาม Haxe 4 จะมีความช่วยเหลือด้านความเข้ากันได้สำหรับผู้ที่มีโปรเจ็กต์ที่พึ่งพา Haxe 3
ฟังดูดี แต่สภาพแวดล้อมการพัฒนาในระบบของคุณเป็นอย่างไร

Haxe เริ่มต้นอย่างรวดเร็ว
ไม่ว่าจะเป็น Win, Mac หรือ Linux ขั้นตอนแรกคือการดาวน์โหลด Haxe โปรแกรมติดตั้งจะจัดเตรียมสิ่งต่าง ๆ สองสามอย่าง:
- คอมไพเลอร์ Haxe เอง ซึ่งจะช่วยให้คุณเรียกใช้
haxe
จากเทอร์มินัลหรือพรอมต์คำสั่งของคุณ - ไลบรารีมาตรฐาน Haxe อนุญาตให้ใช้พื้นฐานระดับต่ำ แต่ยังสนับสนุนวัตถุประสงค์ทั่วไประดับสูงกว่าด้วย ตัวอย่างเช่น XML, การประมวลผล ZIP และการเข้าถึง MySQL ได้รับการอำนวยความสะดวกที่นี่
- ตัวจัดการแพ็คเกจ Haxelib ซึ่งให้คุณติดตั้งแพ็คเกจใหม่ผ่านคำสั่ง
haxelib
(หมายเหตุ: คุณควรลองใช้ lix สำหรับการจัดการแพ็คเกจขั้นสูงมากกว่าที่ Haxelib มีให้ด้วย โดยเฉพาะอย่างยิ่งหากคุณกำลังพิจารณาใช้ Haxe ในบริบทที่เป็นมืออาชีพ) - Neko เป้าหมายเครื่องเสมือนที่ช่วยให้คอมไพล์และแก้ไขจุดบกพร่องได้อย่างรวดเร็วและมีประสิทธิภาพ
(ที่กล่าวว่ามีวิธีการตั้งค่ามากกว่าหนึ่งวิธี หากคุณได้ติดตั้ง npm
แล้ว เช่น คำแนะนำในการติดตั้ง OpenFL มีตัวเลือกในการติดตั้ง Haxe ผ่านคำสั่ง Yeoman Homebrew และ Chocolatey มีเส้นทางที่คล้ายกันด้วย)
อย่างไรก็ตาม เมื่อคุณมี Haxe แล้ว คุณสามารถใช้มันจากบรรทัดคำสั่งได้ด้วยตัวเอง แต่นักพัฒนามักเลือกใช้ IDE FlashDevelop/HaxeDevelop ยังคงรองรับเฉพาะใน Windows เท่านั้น ตัวเลือกอื่นๆ ส่วนใหญ่เป็นแบบข้ามแพลตฟอร์ม (Win/Mac/Linux):
- ปลั๊กอิน Haxe ของ VSCode ได้รับการสนับสนุนอย่างดี
- IntelliJ IDEA มีปลั๊กอิน Haxe ด้วย
- เกมเฟรมเวิร์ก Kha มี IDE ของตัวเองชื่อ Kode Studio (Win/Mac/Linux)
- Sublime Text และ Atom ต่างก็มีปลั๊กอิน Haxe เช่นเดียวกับตัวแก้ไขอื่น ๆ ซึ่งบางตัวเป็นแบบเฉพาะของแพลตฟอร์ม
สำหรับวัตถุประสงค์ของคู่มือเริ่มต้นฉบับย่อนี้ เราจะใช้ VSCode มันอาจจะง่ายที่สุดที่จะได้รับ Haxe Extension Pack ผ่าน Ctrl+P และ ext install haxe-extension-pack
แต่ถ้าคุณเป็นมินิมัลลิสต์คุณอาจต้องการ ext install vshaxe
สำหรับปลั๊กอิน Haxe พื้นฐานและเลือกอะไรก็ได้ ส่วนอื่นๆ ของชุดที่คุณต้องการ
การสร้างโครงการ Haxe
เนื่องจากภาษา Haxe สามารถถ่ายโอนไปยังเป้าหมายได้มากมาย การจัดการวิธีการดำเนินการสำหรับแต่ละภาษาจึงทำได้ง่ายขึ้นโดยใช้ไฟล์บิลด์ อย่างไรก็ตาม ในการเริ่มต้น สิ่งที่เราต้องมีคือไฟล์คลาส Haxe ไฟล์เดียวที่มีนามสกุล . .hx
สำหรับโค้ดที่เราจะใส่เข้าไป ให้นำตัวอย่าง Array Comprehension จาก try.haxe.org มาใส่ในไฟล์ชื่อ Test.hx
:
class Test { static function main() { var a = [for (i in 0...10) i]; trace(a); // [0,1,2,3,4,5,6,7,8,9] var i = 0; var b = [while(i < 10) i++]; trace(b); // [0,1,2,3,4,5,6,7,8,9] } }
ตอนนี้ จากตำแหน่งของ Test.hx
คุณสามารถเรียกใช้ Haxe ในโหมดการตีความ นั่นคือโดยไม่ต้อง transpiling เลย เพื่อดูผลลัพธ์ของการเรียก trace()
ทั้งสองนั้น:
$ haxe -main Test --interp Test.hx:4: [0,1,2,3,4,5,6,7,8,9] Test.hx:8: [0,1,2,3,4,5,6,7,8,9]
เยี่ยม มันได้ผล!
การแปลง Haxe Code เป็น JavaScript
สมมติว่าคุณต้องการแบ่งปันสิ่งนี้กับคนทั้งโลกผ่าน JavaScript บนหน้าเว็บของคุณ ที่รวมอยู่ใน Haxe และง่ายเหมือน:
$ haxe -main Test -js haxe-test.js
หากคุณติดตั้ง Node.js ไว้ คุณสามารถตรวจสอบผลลัพธ์จากบรรทัดคำสั่งดังนี้:
$ node my-cool-test.js [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
มิฉะนั้น โค้ดใน haxe-test.js
ก็พร้อมใช้ หากคุณรวมโค้ดไว้ในหน้าเว็บ คุณจะเห็นผลลัพธ์ในคอนโซลนักพัฒนาซอฟต์แวร์ของเว็บเบราว์เซอร์ขณะโหลด
การถ่ายทอดและรวบรวมเป็นไบนารีดั้งเดิม
สมมติว่าคุณต้องการไบนารีดั้งเดิมสำหรับเดสก์ท็อปที่คุณกำลังพัฒนา ในการทำเช่นนี้ เราจะแปลงไปยังเป้าหมาย C++ เพื่อให้เราสามารถใช้ C++ (สมมติว่าคุณติดตั้งไว้) เพื่อคอมไพล์เอาต์พุต .cpp
เป็นไบนารีดั้งเดิม เพื่อที่เราต้องการ hxcpp
ดังนั้นเราจะต้องติดตั้ง:
$ haxelib install hxcpp
หลังจากนั้น เราสามารถทำการ transpilation และคอมไพล์ได้พร้อมกันด้วยคำสั่งนี้:
$ haxe -main Test -cpp bin
จากนั้นไบนารีของเราก็พร้อมที่จะทำงาน:
$ bin/Test Test.hx:4: [0,1,2,3,4,5,6,7,8,9] Test.hx:8: [0,1,2,3,4,5,6,7,8,9]
(บน Windows นี่จะเป็น bin\Test.exe
แทน)
การสร้างไฟล์ Haxe Build (.hxml)
แม้จะมีนามสกุลที่ชี้นำ แต่ไฟล์ .hxml
ไม่ใช่ XML ซึ่งแตกต่างจากไฟล์ .hxproj
ที่ใช้โดย HaxeDevelop และ FlashDevelop แต่ฉันจะไม่กล่าวถึงในบทความนี้ นี่คือสิ่งที่ build-all.hxml
ดูเหมือนว่าจะทำให้ transpiling ที่เราทำข้างต้นสำเร็จ:
-main Test # tells Haxe our main class is Test (case-sensitive) --each # all of the above commands will be applied to each target -js haxe-test.js # our first transpilation target --next # no other options, time to move to the next target -cpp bin # our second transpilation (and compilation) target
สังเกตความแตกต่างของคำนำหน้า: -main
, -js
และ -cpp
คือพารามิเตอร์แต่ละตัวที่คุณจะส่งผ่านไปยัง haxe
โดยตรง ในขณะที่ --each
และ --next
(ยัติภังค์สองตัว) อยู่ในระดับเมตา ซึ่งบอกคอมไพเลอร์ว่าต้องทำอย่างไร กับพารามิเตอร์อื่นๆ
ตอนนี้คุณสามารถเข้าถึงทั้ง JavaScript และเป้าหมายดั้งเดิมได้ง่ายๆ โดยการเรียกใช้ haxe build-all.hxml
หากคุณต้องการ transpile ไปยัง JavaScript แล้วเรียกใช้ผลลัพธ์ทันทีโดยใช้ Node คุณสามารถเรียกใช้ haxe run-js.hxml
โดยที่ run-js.hxml
มีลักษณะดังนี้:
-main Test -js haxe-test.js -cmd node haxe-test.js
ในทำนองเดียวกัน "สร้างและเรียกใช้" สำหรับไบนารีดั้งเดิมจะมีลักษณะดังนี้ (บน Linux นั่นคือ - จำเป็นต้องมีรูปแบบอื่นสำหรับ Windows):
-main Test -cpp bin -cmd bin/Test
แล้ว VSCode ล่ะ? ส่วนนั้นเรียบง่าย: ส่วนขยายที่คุณติดตั้งจะรับไฟล์ .hxml
เหล่านี้โดยอัตโนมัติ ให้คุณสร้างงานบิลด์อัตโนมัติ (ไม่มี tasks.json
) ในเมนูดรอปดาวน์ ให้คุณเลือกไฟล์บิลด์ที่จะใช้
หมายเหตุ: โปรดใช้ความระมัดระวังหากคุณเปิด VSCode หลายหน้าต่าง ในขณะที่เขียนนี้ อาจทำให้เกิดปัญหากับการสร้างผ่าน Ctrl+B (คุณยังสามารถใช้บรรทัดคำสั่งได้ ไม่มีปัญหา)
Haxe 4
หากคุณปฏิบัติตามการตั้งค่าข้างต้น คุณอาจสังเกตเห็นว่าหน้าดาวน์โหลดมีลิงก์ไปยังทั้งสาขา 3.x และ 4.x ของตัวติดตั้ง Haxe
คอมไพเลอร์ Haxe เวอร์ชัน 4 ที่ทันสมัยมาพร้อมคุณสมบัติใหม่มากมาย ในกรณีหนึ่ง นี่ยังเป็นข้อพิสูจน์ถึงพลังของระบบมาโครด้วย: คอมไพเลอร์ Haxe เคยขาดการสนับสนุนฟังก์ชัน lambda แบบสั้น ดังนั้นไลบรารี slambda จึงมีการสนับสนุนผ่านทางมาโคร ในเวอร์ชัน 4 การสนับสนุนถูกสร้างขึ้นในคอมไพเลอร์ และไลบรารีกำลังถูกเลิกใช้
แล้ว Haxe 4 นำอะไรมาอีกบ้าง?
ไม่จำเป็นต้องดึงดูดความสนใจมากเกินไป แต่ Haxe 4 มีการปรับปรุงเล็กๆ น้อยๆ มากมายแทน ท้ายที่สุด Haxe เอง ก็เป็น เทคโนโลยีที่ค่อนข้างเป็นผู้ใหญ่ ซึ่งพัฒนาโดยทีมที่เล็กกว่าและมุ่งเน้นมากกว่า บางที อาจเป็นมากกว่าโครงการที่คล้ายคลึงกัน และอาจใช้เวลานานหน่อยที่จะเรียกโครงการใดๆ ที่ คล้าย กับ Haxe
คุณลักษณะที่น่าสนใจที่สุดหลายอย่างมีอยู่แล้วในขณะนี้ ตัวอย่างเช่น ฉันได้กล่าวไว้ข้างต้นว่า Haxe มีเวิร์กโฟลว์ที่รวดเร็วผ่าน Neko หรือ HashLink แต่ตั้งแต่ปี 2016 ก็มีเซิร์ฟเวอร์การคอมไพล์ด้วย ซึ่งหมายความว่าสำหรับเป้าหมายที่ไม่ใช่ VM การคอมไพล์โปรเจ็กต์ใหม่ซึ่งขึ้นอยู่กับไลบรารีขนาดใหญ่จะเร็วขึ้นมากเนื่องจากการแคชในหน่วยความจำ ซึ่งสามารถใช้ประโยชน์จาก Haxe IDEs เพื่อให้โค้ดสมบูรณ์ได้
แต่โดยเฉพาะอย่างยิ่ง Haxe 4 จะเห็น:
- การประมวลผลมาโครเร็วขึ้น 4 เท่า
- การสนับสนุน PHP5 ลดลง
- การอัปเดตทางวากยสัมพันธ์บางอย่างทำได้โดยผู้ใช้ TypeScript อาจยินดี แม้ว่าพวกเขาจะแตกต่างกันเล็กน้อยระหว่างสองภาษา กล่าวคือ ฟังก์ชันลูกศรและไวยากรณ์ประเภทฟังก์ชันใหม่
บทเรียน Haxe
แม้ว่าคุณจะสามารถดำดิ่งลงในเอกสาร API มาตรฐานหรือเอกสารไวยากรณ์ของ Haxe ได้เสมอ แต่ก็ยังมีเอกสาร Haxe ที่เป็นมิตรกับผู้เริ่มต้นใช้งานอีกด้วย
หากคุณต้องการเน้นที่วิดีโอ การประชุมสุดยอด Haxe US Summit 2018 ในซีแอตเทิลมีการจัดเวิร์กช็อปควบคู่ไปกับเวิร์กชอปจากปีอื่นๆ เพื่อให้ได้มุมมองจากคนวงในมากขึ้น
แต่บางครั้งสิ่งที่คุณอาจช่วยให้คุณเริ่มต้นได้ง่ายขึ้นก็คือบทช่วยสอนที่เฉพาะเจาะจงมากขึ้น เช่นเดียวกับบทช่วยสอนแบบเริ่มจนจบเกี่ยวกับวิธีสร้างเกมรวบรวมข้อมูลดันเจี้ยนใน HaxeFlixel นอกจากนี้ยังมีชุดบทช่วยสอน HaxeFlixel ที่จะอธิบายเพิ่มเติมเกี่ยวกับสิ่งที่เกิดขึ้นเบื้องหลังขณะดำเนินการ ในส่วน 3D มีบทแนะนำ Haxe เกี่ยวกับการเริ่มต้นใช้งาน Armory
หรือบางทีคุณอาจต้องการแค่บทช่วยสอน Haxe เกี่ยวกับการประมวลผล XML ที่รวดเร็ว นี่เป็นหนึ่งในบทช่วยสอนมากมายที่ตอนนี้มีอายุไม่กี่ปี แต่ก็ยังมีความเกี่ยวข้องอยู่มาก ดังที่ฉันได้กล่าวไว้ก่อนหน้านี้ แม้ว่าจะมีขอบเขตมากมาย แต่พื้นฐานหลายอย่างของการพัฒนาใน Haxe ก็มีเสถียรภาพ ณ จุดนี้ ดังนั้นบทช่วยสอนจึงไม่จำเป็นต้องล้าสมัยไปอย่างรวดเร็ว (โดยปกติมาจากการพึ่งพาไลบรารีเฉพาะ ไม่ใช่บนแกน Haxe)
อย่างที่คุณเห็น คุณสามารถใช้ภาษา Haxe หรือนำคุณไปในทิศทางต่างๆ ได้มากมาย ฉันหวังว่าคุณจะสนุกกับการแนะนำโลกที่หลากหลายและน่าสนใจของ Haxe นี้ และฉันหวังว่าจะได้ยินสิ่งที่คุณทำด้วยเทคโนโลยีของ Haxe!