React and React Native
Next.js เฟรมเวิร์คเว็บ React แบบ server side render (SSR) ออกเวอร์ชั่น 10.0 โดยมีฟีเจอร์ใหม่เพิ่มขึ้นหลายอย่าง เช่น
โครงการ ReactJS ประกาศออกเวอร์ชั่น 17 ที่ระบุชัดว่าไม่มีฟีเจอร์ใหม่ แต่เป็นการปรับโครงสร้างเพื่อรองรับการอัพเกรดทีละส่วน และฟีเจอร์ใหม่ทั้งหมดถูกดันออกไปใน ReactJS 18
เดิมแอปที่พัฒนาด้วย ReactJS จะต้องอัพเกรดตัวเฟรมเวิร์คพร้อมกันทั้งแอป แต่หลายครั้งโค้ดบางส่วนไม่ได้พัฒนามานานทำให้ไม่สามารถอัพเกรดได้ ใน ReactJS 17 จะเปิดทางให้แอปสามารถดาวน์โหลด React เวอร์ชั่นเก่าขึ้นมาใช้งานบางส่วนได้ ทาง React เตรียมแอปสาธิตเอาไว้ โดยสามารถรัน React JS 17.0 ในแอปหลัก และรัน ReactJS 16.8 หรือเก่ากว่านั้นในบาง component ได้
เก็บตกข่าวความเคลื่อนไหวฝั่ง React Native นะครับ ตัวโครงการ React Native ที่พัฒนาโดย Facebook รองรับเพียงแค่ 2 แพลตฟอร์มมือถือคือ Android และ iOS
แต่เมื่อปีที่แล้ว ไมโครซอฟท์อาสาเข้ามาทำ React Native for Windows โดยรองรับทั้งการสร้างแอพแบบ WPF และ UWP
Josh Larson วิศวกร Vox Media สร้างเฟรมเวิร์ค Flareact เป็นเฟรมเวิร์คทดลองที่ได้รับแรงบันดาลใจมาจาก Next.js เพื่อให้แอปพลิเคชั่นแบบ React สามารถเรนเดอร์ด้วย Cloudflare Workers ได้
ปกติแล้ว React ออกแบบสำหรับสร้างแอปพลิเคชั่นที่เรนเดอร์ฝั่งเบราว์เซอร์ทั้งหมด หลายครั้งประสิทธิภาพบนเบราว์เซอร์ไม่ดีนัก และบริการหลายตัวที่ต้องการอ่าน HTML โดยไม่สามารถเรนเดอร์ React ได้ก็จะได้ข้อมูลไม่ครบ การทำ server side rendering (SSR) จึงเป็นฟีเจอร์สำคัญที่หลายเว็บใช้งานกัน เช่น Next.js ที่ได้รับความนิยมสูง
ไมโครซอฟท์เปิดตัว Fluent Design ตั้งแต่ปี 2017 และเริ่มนำมาใช้งานในแอพของตัวเองมากขึ้นเรื่อยๆ โดยเฉพาะในรอบปีที่ผ่านมา
Facebook เปิดตัวหน้าเว็บ facebook.com โฉมใหม่ในงาน F8 2019 เมื่อ 1 ปีที่แล้วพอดี หลังจากทดสอบมายาวนานครบปี บริษัทก็ประกาศเริ่มปล่อยหน้าเว็บโฉมใหม่ให้ผู้ใช้ทั่วโลกแล้ว และจะเปิดใช้งานครบทุกคนในอีกไม่กี่สัปดาห์ข้างหน้า
การเปลี่ยนแปลงสำคัญของหน้าเว็บ facebook.com โฉมใหม่คือ
Wikipedia ถือกำเนิดมาตั้งแต่ปี 2001 โดยใช้ซอฟต์แวร์ MediaWiki ที่เขียนขึ้นในยุคนั้น ซึ่งปัจจุบันก็มีหลายส่วนที่เริ่มล้าสมัยแล้ว
มูลนิธิ Wikimedia Foundation ในฐานะผู้ดูแลโครงการ Wikipedia จึงพยายาม "ยกเครื่อง" ซอฟต์แวร์ MediaWiki ให้ทันสมัยขึ้น หนึ่งในแผนการคือเปลี่ยนมาใช้เฟรมเวิร์คจาวาสคริปต์ตัวใหม่ๆ แทน jQuery ที่ใช้มานาน และเฟรมเวิร์คของตัวเองที่ชื่อ OOUI
คณะทำงานมีเกณฑ์การคัดเลือกเฟรมเวิร์คหลายข้อ เช่น ต้องนิยาม UI แบบ declarative, ตัว UI ต้องอัพเดตแบบ reactive (ตามการป้อนข้อมูลของผู้ใช้), เป็นโครงการโอเพนซอร์สที่มีชุมชนเหนียวแน่น, ประสิทธิภาพสูง, ยืดหยุ่นต่อการใช้งานหลายสถานการณ์
เฟซบุ๊กประกาศเปิดซอร์สโครงการ Hermes JS Engine เอนจินจาวาสคริปต์สำหรับรันโค้ดบนโทรศัพท์มือถือ โดยเฉพาะแอนดรอยด์และเฟรมเวิร์ค React Native
จุดสำคัญของ Hermes คือมันไม่ได้โหลดโค้ดจาวาสคริปต์มาคอมไพล์ขณะที่รันครั้งแรกเหมือนเอนจินอื่นๆ แต่อาศัยการคอมไพล์ไว้ล่วงหน้าเป็นไบต์โค้ด เมื่อติดตั้งแอปแล้วตัวเอนจินจึงโหลดไบต์โค้ดมารัน ทำให้กระบวนการเปิดแอปเร็วขึ้น นอกจากความเร็วในการรันครั้งแรก Hermes ยังปรับการใช้หน่วยความจำให้ประหยัดหน่วยความจำขึ้น ลดเวลาการรัน garbage collection (GC) เพื่อให้แอปตอบสนองเร็ว
เป้าหมายของ Hermes คือรองรับ ECMAScript 6 แต่ตอนนี้ยังมีบางฟีเจอร์ที่ React Native ไม่ได้ใช้จึงเลือกที่จะไม่อิมพลีเมนต์ โดยเฉพาะฟังก์ชั่น eval ที่ถูกตัดออกไป
React Native เป็นเฟรมเวิร์คที่พัฒนาโดย Facebook ตั้งแต่ปี 2015 เพื่อใช้ภาษา JavaScript สร้างแอพมือถือบน iOS/Android แบบเนทีฟ และได้รับความนิยมอย่างสูงจนถึงปัจจุบัน
ในปี 2016 React Native รองรับแพลตฟอร์ม UWP ของไมโครซอฟท์ ที่เป็น C# แต่ก็ไม่ได้รับความนิยมมากนักเพราะ UWP รันได้เฉพาะบน Windows 10 แต่ล่าสุดปี 2019 ไมโครซอฟท์เปิดตัว React Native for Windows เต็มรูปแบบ ที่สามารถสร้างแอพแบบ WPF แท้ๆ และรันบน Windows 7-10 ได้ด้วย (ตราบเท่าที่เครื่องนั้นมี .NET Framework 4.6 ติดตั้งไว้)
หลังจากมีข้อถกเถียงถึงสัญญาอนุญาตการใช้งานของ React ซึ่งเป็นจาวาสคริปต์เฟรมเวิร์คที่ได้รับความนิยมในอันดับต้นๆสำหรับพัฒนาส่วนต่อประสานกับผู้ใช้หรือ User Interface ที่พัฒนาโดยบริษัท Facebook
โดยปัจจุบัน React ได้ใช้สัญญาอนุญาตการใช้งานแบบ BSD + Patents license ด้วยสัญญาอนุญาตการใช้งานที่พ่วงมากับ BSD นั้น มีใจความเกี่ยวกับการอนุญาตและการเพิกถอนสิทธิ์การใช้งาน ด้วยเหตุนี้ React จึงไม่ใช่โอเพนซอร์สโดยสมบูรณ์ จึงทำให้นักพัฒนาเกิดความลังเลและความไม่แน่นอนที่จะใช้งาน
เฟสบุ๊คได้ออกมาประกาศว่า ในสัปดาห์หน้าจะทำการเปลี่ยนสัญญาอนุญาตของไลบรารี่ชื่อดัง React, Jest, Flow และ Immutable.js ไปเป็นแบบ MIT
ปัจจุบันไลบรารีดังกล่าวใช้สัญญาอนุญาต BSD + เงื่อนไขสิทธิบัตร ส่งผลให้นักพัฒนาหลายกลุ่มตัดสินใจไม่ใช้ไลบรารีเหล่านี้ เช่น โครงการ Gutenberg ของ Wordpress การเปลี่ยนแปลงครั้งนี้อาจทำให้นักพัฒนาหันมาสนใจมากขึ้น
อย่างไรก็ตามไลบรารีอื่นๆ ของเฟสบุ๊กนอกเหนือจากที่กล่าวมา จะยังคงใช้สัญญาอนุญาต BSD อยู่ครับ
ที่มา - Facebook Code
Matt Mullenweg ประกาศในบล็อกของเขาว่า Automattic ตัดสินใจที่จะเขียน editor สำหรับ Wordpress รุ่นต่อไปที่ใช้ชื่อโครงการว่า Gutenberg เสียใหม่ โดยจะตัด React ออกจากโครงการและเปลี่ยนไปใช้ไลบรารีตัวอื่น ทำให้โครงการ Gutenberg อาจจะออกไม่ทันปีนี้ และโครงการ Wordpress.com รุ่นต่อไป (Calyso) ก็จะเขียนใหม่โดยใช้ไลบรารีเดียวกับ Gutenberg
ทีมพัฒนา Skype จากไมโครซอฟท์ประกาศโอเพนซอร์ส ReactXP ไลบรารีสำหรับสร้างแอพข้ามแพลตฟอร์ม (cross-platform) ที่ถูกสร้างขึ้นโดยใช้ React JS และ React Native ของ Facebook เป็นฐาน โดยมีจุดเด่นที่ต่างไปจากโครงการ React ต้นน้ำคือ ตัวไลบรารี ReactXP จะช่วยให้นักพัฒนาสามารถแชร์โค้ด UI ของเว็บแอพและแอพแบบ native ได้ทั้งส่วนที่เป็นลอจิกและรวมถึงส่วนที่เป็นการแสดงผลด้วย
โครงการ ReactXP มีที่มาจากการที่ Skype มีแอพอยู่บนหลากหลายแพลตฟอร์ม ซึ่งการพัฒนาหน้า UI แต่ละไคลเอนต์เดิมทีต้องเขียนโค้ดด้วยภาษา native เฉพาะของแต่ละแพลตฟอร์มแยกกัน ดังนั้นเพื่อให้การพัฒนาเป็นไปอย่างรวดเร็วและมีประสิทธิภาพมากขึ้น ทีม Skype จึงได้สำรวจแนวทางการพัฒนาใหม่ๆ โดยมีจุดมุ่งหมายเพื่อลดการเขียนโค้ดฟีเจอร์เดียวกันซ้ำๆ บนแต่ละแพลตฟอร์มให้ได้มากที่สุด
Facebook ประสบความสำเร็จอย่างสูงกับ React เฟรมเวิร์คจาวาสคริปต์ชื่อดังสำหรับสร้างเว็บแอพ (และภายหลังพัฒนาต่อมาเป็น React Native สำหรับสร้างแอพมือถือ) แต่เมื่อ React ถูกนำไปใช้งานอย่างกว้างขวาง ข้อจำกัดของมันเรื่องประสิทธิภาพก็เริ่มเด่นชัด
Facebook แก้ปัญหานี้ด้วยการเขียนแกนของ React ใหม่หมด โดยใช้ชื่อว่า React Fiber
React Fiber มีข้อดีเหนือกว่า React ตัวเดิมหลายอย่าง ทั้งประสิทธิภาพดีกว่า การมีขนาดไฟล์ที่เล็กกว่า ควบคุมตัวแปรและข้อผิดพลาดได้ง่ายกว่า แถมยังการันตีว่า backward compatible กับ React ตัวเดิมทั้งหมด 100% ส่งผลให้นักพัฒนาไม่ต้องแก้ไขโค้ดเก่าแต่อย่างใด
Facebook ขยายผลิตภัณฑ์ในสาย React เพิ่มอีกตัว เปิดตัว React VR ไลบรารีสำหรับสร้างเนื้อหาแบบ VR ผ่านเว็บด้วยจาวาสคริปต์
React VR เป็นตัวกลางให้เราสร้างเนื้อหา VR บนเทคโนโลยี WebVR และ WebGL โดยไม่ต้องเขียนเองทั้งหมด และยังใช้สไตล์การเขียนโปรแกรมแบบ React/React Native ที่นักพัฒนาจำนวนมากคุ้นเคย งานที่ได้จะออกมาเป็นฉาก 3 มิติที่มีมุมมองพานอรามา 360 องศา รวมถึงแสดงวิดีโอและเล่นเสียงแบบ immersive รอบทิศทางได้ด้วย
Facebook บอกว่าเลือกสร้างไลบรารี VR สำหรับเว็บขึ้นมาบน React ซึ่งเป็นเฟรมเวิร์คที่ได้รับความนิยมอยู่แล้ว มีชุมชนผู้ใช้งานจำนวนมาก และใช้ประโยชน์จากสถาปัตยกรรมประมวลผลกราฟิกของ React Native ที่แสดงผลภาพโดยเฟรมเรตไม่ตก แม้ทำงานแบบเธร็ดเดียวก็ตาม
Facebook ได้เปิดตัวเครื่องมือ Create React Native App ซึ่งเป็นเครื่องมือที่ช่วยให้เริ่มต้นโปรเจค React Native ได้ง่ายขึ้น ซึ่งเป็นโครงการที่ต่อยอดมาจาก Create React App
Automattic ผู้พัฒนา WordPress และพัฒนาปลั๊กอินหลายๆ ตัวที่มีชื่อเสียง ล่าสุดได้ประกาศว่าจะนำ React.js มาใช้พัฒนาปลั๊กอิน Jetpack ส่วนผู้ดูแลระบบ ซึ่งขณะนี้อยู่ในช่วงเบต้าและปล่อยให้ทดสอบในกลุ่มผู้ใช้บางส่วนแล้ว
ใครที่ต้องการร่วมทดสอบ Jetpack Beta เวอร์ชัน 4.3 สามารถลงทะเบียนได้ที่ https://jetpack.com/beta/ หากพบปัญหาในการใช้งานรวมถึงแจ้งบั๊กได้ที่ Github ของ Jetpack หรือที่ Beta Feedback
ที่มา : WP Tavern
Facebook ออกเครื่องมือตัวใหม่ที่ช่วยสร้างแอพพลิเคชันด้วย React อย่างรวดเร็ว เครื่องมือตัวนี้ใช้ชื่อตรงไปตรงมาว่า Create React App
Create React App เป็นคำสั่งคอมมานด์ไลน์ที่ช่วยอำนวยความสะดวกกับคนที่ต้องการสร้างแอพง่ายๆ ด้วย React แต่ขี้เกียจมาเสียเวลาคอนฟิก ขั้นตอนมีแค่การลงแพ็กเกจ create-react-app ในระบบ npm (ตัวจัดการแพ็กเกจของ Node.js) แล้วสั่ง create-react-app my-app ตามด้วย npm start ก็จะได้เว็บแอพรันอยู่ใน localhost:3000 ของเครื่องเราทันที
งาน Facebook F8 ปีที่แล้ว บริษัทเปิดตัว React Native ไลบรารีสำหรับสร้าง Native UI บนระบบปฏิบัติการต่างๆ ด้วยภาษา JavaScript (เขียนเป็น JavaScript แล้วไลบรารีแปลงเป็น Native UI ให้)
ที่ผ่านมา React Native รองรับ iOS และ Android เพียงสองระบบเท่านั้น แต่เมื่อคืนนี้ในงาน F8 เราก็ได้เห็น Facebook จับมือกับไมโครซอฟท์ พัฒนาให้ React Native รองรับการสร้างแอพ Universal Windows Platform (UWP) เป็นระบบที่สาม
เมื่อต้นปีนี้ Facebook เปิดตัว React Native ไลบรารีจาวาสคริปต์สำหรับสร้าง UI แอพมือถือแบบเนทีฟ โดยเริ่มต้นจากเวอร์ชัน iOS ก่อน
วันนี้ React Native for Android ออกตามมาแล้ว โดยผลงานแอพตัวอย่างที่สร้างด้วย React Native คือแอพ Facebook Ads Manager ที่หลายคนอาจเคยใช้กันมาบ้างแล้ว
Facebook ยังอธิบายเบื้องหลังการพัฒนา React Native ควบคู่ไปกับแอพ Ads Manager ด้วย ใครสนใจก็ตามไปอ่านประวัติได้จากต้นทาง
ที่มา - Facebook Code
ถ้ายังจำกันได้ สมัยสมาร์ทโฟนยุคแรกๆ แอพ Facebook มีคุณภาพเข้าขั้นเลวร้ายอยู่นาน ก่อนที่บริษัทจะประกาศนโยบาย mobile-first เราถึงเห็นแอพ Facebook พัฒนาขึ้นอย่างก้าวกระโดดในภายหลัง
Adam Wolff วิศวกรอาวุโสของ Facebook ออกมาเผยเบื้องหลังว่าเรื่องนี้ไม่ง่ายเลย เพราะเดิมที Facebook ไม่ได้ถูกออกแบบมาสำหรับอุปกรณ์พกพา สุดท้ายแล้วบริษัทต้องกลับไปวางสถาปัตยกรรมโค้ดใหม่หมด เพื่อให้สามารถสร้างผลิตภัณฑ์ที่มีฟีเจอร์เหมือนกันทั้งบนเดสก์ท็อปและอุปกรณ์พกพา ไม่ต้องแยกเวอร์ชันกันเหมือนในอดีต
Wolff บอกว่าภายหลังการเปลี่ยนแปลง ทุกคนมองย้อนกลับไปแล้วประเมินว่าคุ้มค่าเสียเวลา แต่กระบวนการนั้นช่างเจ็บปวดเหลือเกิน (it was extremely painful)
Facebook เปิดตัวเครื่องมือพัฒนาโปรแกรม (IDE) ของตัวเองในชื่อ Nuclide
Nuclide สร้างขึ้นบนโปรแกรมแก้ไขข้อความ Atom ที่ริเริ่มโดย GitHub (รีวิว Atom โปรแกรมแก้ไขข้อความแห่งอนาคต) แล้วผนวกเอาเทคโนโลยีด้านโปรแกรมมิ่งของตัวเองเข้าไป
Facebook มีโครงการ React (หรือชื่อเดิมคือ ReactJS) เป็นไลบรารีจาวาสคริปต์สำหรับสร้าง UI บนเว็บ (แนวคิดคือแยกคอมโพเนนต์) โครงการนี้มีคนนำไปใช้งานสร้างเว็บแอพเป็นจำนวนมาก แต่ข้อจำกัดของมันคือสร้างได้เฉพาะเว็บเท่านั้น
งาน F8 เมื่อคืนนี้ Facebook ออกมากำจัดจุดอ่อนนี้ด้วย React Native หรือการนำคอมโพเนนต์ของ React ไปแสดงผลเป็น native UI บน iOS และ Android แทนการวาด div/span สำหรับเว็บ ทำให้นักพัฒนาที่สร้างเว็บด้วย React อยู่แล้วสามารถแปลงมันไปเป็นแอพได้ไม่ยากนัก