ดูอนาคตของ JavaScript
เผยแพร่แล้ว: 2022-03-11ทุกตลาดถูกปกครองโดยแนวคิดทั่วไปบางประการ และการพัฒนา JavaScript ก็ไม่มีข้อยกเว้น
วงจรชีวิตผลิตภัณฑ์เป็นแนวคิดที่คุณสามารถนำไปใช้กับสภาพแวดล้อมต่างๆ เพื่อทำความเข้าใจและคาดการณ์พฤติกรรมของสภาพแวดล้อมได้ เป็นแนวคิดทางธุรกิจที่ช่วยให้เราเข้าใจขั้นตอนต่างๆ ที่ผลิตภัณฑ์ต้องผ่านตลอดช่วงชีวิต โดยอธิบายถึงผลกระทบของขั้นตอนเหล่านี้ที่มีต่อการวัดความนิยม ในกรณีส่วนใหญ่คือยอดขาย หากเราสังเกตรูปแบบพฤติกรรมของตลาด เราสามารถประมาณระยะปัจจุบันของผลิตภัณฑ์ และทำการคาดการณ์บางอย่างเกี่ยวกับความนิยมของผลิตภัณฑ์
มีสี่ขั้นตอน: บทนำ การเติบโต วุฒิภาวะ และการลดลง และในแผนภูมิด้านบน คุณจะเห็นผลกระทบต่อยอดขายผลิตภัณฑ์ที่คาดหวังสำหรับแต่ละขั้นตอน ตัวอย่างเช่น ยอดขายสมาร์ทโฟนไม่ได้เติบโตเหมือนเมื่อ 5 ปีที่แล้ว—อันที่จริง ตรงกันข้ามกับความจริง—ดังนั้นเราจึงสามารถพูดได้อย่างเป็นธรรมว่าสมาร์ทโฟนกำลังเข้าสู่ขั้นตอนการเติบโตเต็มที่
ในช่วงไม่กี่ปีที่ผ่านมา เราได้เห็นการแนะนำเทคโนโลยีใหม่ๆ มากมายใน JavaScript แต่เราต้องการเวลาเพื่อดูว่าตลาดจะนำไปใช้อย่างไร ไม่มีใครอยากเป็นผู้เชี่ยวชาญในด้านเทคโนโลยีที่มีแนวโน้มว่าจะไม่มีใครยอมรับ อย่างไรก็ตาม ตอนนี้เป็นเวลาที่จะดูอีกครั้ง ในบทความนี้ ผมจะมาดูกันว่า JavaScript เป็นที่นิยมและปัจจัยที่อาจส่งผลต่อความนิยมนี้อย่างไร และฉันจะพยายามคาดการณ์ว่าอนาคตของ JavaScript จะหน้าตาเป็นอย่างไร
อนาคตของคุณสมบัติภาษา JavaScript
เนื่องจากสมาคมผู้ผลิตคอมพิวเตอร์แห่งยุโรป (ECMA) ได้กำหนดรอบการเผยแพร่ตามปีสำหรับ ECMAScript ซึ่งเป็นข้อกำหนด JavaScript มาตรฐาน เราจึงยังไม่เห็นคุณลักษณะใหม่มากมายที่มาถึงภาษานี้ เพียงไม่กี่ปีในแต่ละปี นี่อาจเป็นเหตุผลหนึ่งที่เราเห็นว่ามีการใช้ภาษาที่คอมไพล์เป็น ES5 มากขึ้น เช่น TypeScript หรือ ReasonML ซึ่งทั้งสองได้นำคุณลักษณะต่างๆ มาสู่ภาษาที่ชุมชนร้องขออย่างสูง นี่ไม่ใช่สิ่งใหม่—จาวาสคริปต์เคยผ่านขั้นตอนนี้มาก่อน (CoffeeScript) และท้ายที่สุด คุณลักษณะเหล่านั้นก็ถูกรวมเข้ากับมาตรฐานภาษาด้วย และนั่นอาจเป็นอนาคตที่เราคาดหวังได้สำหรับคุณลักษณะที่พิมพ์ใหม่เหล่านี้เช่นกัน
แต่ตอนนี้เราเริ่มเห็นการเปลี่ยนแปลงเกมในตลาด compile-to-js ด้วยความพร้อมใช้งานที่เพิ่มขึ้นของ WebAssembly ในเบราว์เซอร์ ตอนนี้ เราสามารถใช้ภาษาใดก็ได้และคอมไพล์ให้ทำงานที่ความเร็วเกือบเท่าเนทีฟในเบราว์เซอร์ และที่สำคัญกว่านั้น เรากำลังเริ่มเห็นการรองรับสำหรับฟีเจอร์ที่รองรับอนาคต เช่น การสนับสนุนเธรดที่จะช่วยให้เราใช้ประโยชน์จากหลาย -สถาปัตยกรรมโปรเซสเซอร์ที่แสดงถึงอนาคตที่หลีกเลี่ยงไม่ได้ของอุปกรณ์ทั้งหมด
Toolchain อย่างเป็นทางการสำหรับ WebAssembly จะช่วยคุณในการคอมไพล์ C/C++ แต่มีคอมไพเลอร์จำนวนมากที่จัดหาให้สำหรับภาษาต่างๆ เช่น Rust, Python, Java และ Blazor (C#)
โดยเฉพาะอย่างยิ่ง ชุมชน Rust มีความกระตือรือร้นและเราเริ่มเห็นเฟรมเวิร์กส่วนหน้าที่สมบูรณ์ เช่น Yew และ Dodrio
สิ่งนี้นำมาซึ่งความเป็นไปได้ใหม่ๆ มากมายสำหรับแอพบนเบราว์เซอร์ และคุณจะต้องทดสอบแอพที่ยอดเยี่ยมบางตัวที่สร้างด้วย WebAssembly เพื่อดูว่าแอพที่ทำงานบนเบราว์เซอร์ที่ใกล้เคียงนั้นเป็นจริงแล้วในขณะนี้ เช่น Sketchup หรือ Magnum
การนำภาษาพิมพ์ที่คอมไพล์เป็น ES5 มาใช้นั้นเพียงพอแล้ว ผู้เล่นได้รับการยอมรับอย่างดี และจะไม่หายไป (หรือรวมเข้ากับ ES) ในอนาคตอันใกล้ แต่เราจะเห็นการเปลี่ยนแปลงที่ช้าสำหรับภาษาที่พิมพ์ด้วย เว็บแอสเซมบลี
เว็บ
กรอบงานส่วนหน้า
ทุกๆ ปี เราเห็นการต่อสู้ครั้งใหญ่ในตลาด front-end framework สำหรับเว็บ และ React เป็นผู้ชนะที่ไม่อาจโต้แย้งได้ในช่วงไม่กี่ปีที่ผ่านมา—ตั้งแต่การนำเทคโนโลยีเปลี่ยนเกมของพวกเขา Virtual DOM เราพบว่าเกือบ การรับลูกบุญธรรมจากคู่ของตนเพื่อให้มีความเกี่ยวข้องในการต่อสู้
เมื่อหลายปีก่อน เราเห็นการนำแนวทางใหม่ไปสู่การพัฒนาเว็บแอปพลิเคชันด้วย Svelte ซึ่งเป็น "เฟรมเวิร์กของคอมไพเลอร์" ที่หายไปในขณะคอมไพล์ โดยเหลือโค้ด JavaScript ขนาดเล็กและมีประสิทธิภาพสูง อย่างไรก็ตาม คุณลักษณะดังกล่าวไม่เพียงพอที่จะโน้มน้าวให้ชุมชนย้ายไปใช้ Svelte แต่ด้วยการเปิดตัว Svelte 3.0 ล่าสุด พวกเขาได้แนะนำการเขียนโปรแกรมเชิงโต้ตอบจริงลงในเฟรมเวิร์ก และชุมชนก็รู้สึกตื่นเต้น ดังนั้นบางทีเราอาจจะได้เห็นสิ่งที่ยิ่งใหญ่ครั้งต่อไป - สิ้นสุดกรอบงาน
แรงบันดาลใจจากโอเปอเรเตอร์แห่งโชคชะตา:
var a = 10; var b <= a + 1; a = 20; Assert.AreEqual(21, b);
Svelte นำความสามารถในการเกิดปฏิกิริยามาสู่ JavaScript โดยการโอเวอร์โหลดการใช้คำสั่ง label ที่มีการเกิดปฏิกิริยา ณ เวลาคอมไพล์ โดยสั่งโค้ดให้ดำเนินการในลำดับทอพอโลยี:
var a = 10; $: b = a + 1; a = 20; Assert.AreEqual(21, b);
นี่เป็นแนวคิดใหม่ที่อาจช่วยได้ในบริบทที่แตกต่างกัน ดังนั้นผู้สร้าง Svelte จึงกำลังทำงานบน svelte-gl ซึ่งเป็นเฟรมเวิร์กของคอมไพเลอร์ที่จะสร้างคำสั่ง WebGL ระดับต่ำได้โดยตรงจากกราฟฉาก 3 มิติที่ประกาศใน HTMLx
ไม่จำเป็นต้องพูดว่า React, Angular และ Vue.js จะไม่หายไปในชั่วข้ามคืน ชุมชนของพวกเขามีขนาดใหญ่มาก และจะยังคงมีความเกี่ยวข้องต่อไปอีกหลายปีต่อจากนี้—เราไม่แน่ใจด้วยซ้ำว่า Svelte จะเป็นผู้สืบทอดที่แท้จริงหรือไม่ แต่เรา มั่นใจได้ในบางสิ่ง: เราจะใช้สิ่งที่แตกต่างออกไปไม่ช้าก็เร็ว
WebXR และอนาคตของเว็บที่สมจริง
ความจริงเสมือนได้ดิ้นรนมาตลอด 60 ปีที่ผ่านมาเพื่อค้นหาสถานที่ในกระแสหลัก แต่เทคโนโลยียังไม่พร้อม น้อยกว่า 10 ปีที่แล้ว เมื่อ Jon Carmack เข้าร่วม Oculus VR (ปัจจุบันเป็นส่วนหนึ่งของ Facebook Technologies, LLC) คลื่นลูกใหม่ของ VR ก็เริ่มเพิ่มขึ้น และตั้งแต่นั้นมา เราได้เห็นอุปกรณ์ใหม่ๆ มากมายที่รองรับ VR ประเภทต่างๆ และ แน่นอนว่าการเพิ่มขึ้นของแอพพลิเคชั่นที่รองรับ VR
ผู้จำหน่ายเบราว์เซอร์ไม่ต้องการเสียโอกาสนี้ไป ดังนั้นพวกเขาจึงเข้าร่วมกับข้อกำหนด WebVR ที่อนุญาตให้สร้างโลกเสมือนใน JavaScript ด้วย WebGL และไลบรารีที่เป็นที่ยอมรับ เช่น three.js อย่างไรก็ตาม ส่วนแบ่งตลาดของผู้ใช้ที่มีอุปกรณ์ 6dof ยังคงไม่มีนัยสำคัญสำหรับการปรับใช้เว็บขนาดใหญ่ แต่เว็บบนอุปกรณ์เคลื่อนที่ยังคงสามารถให้ประสบการณ์ 3 มิติกับ API การวางแนวอุปกรณ์ ดังนั้นเราจึงเห็นการทดลองจำนวนมากและวิดีโอ 360 รายการสำหรับ สักพัก
ในปี 2560 ด้วยการเปิดตัว ARKit และ ARCore ความสามารถใหม่ๆ ได้ถูกนำไปใช้กับอุปกรณ์พกพาและแอพพลิเคชั่นทุกประเภทพร้อมประสบการณ์ AR และ MR
อย่างไรก็ตาม ยังรู้สึกไม่เป็นธรรมชาติอยู่เล็กน้อยที่จะดาวน์โหลดแอปเฉพาะสำหรับประสบการณ์ AR เฉพาะเมื่อคุณสำรวจโลกรอบตัวคุณ หากเรามีแอปเดียวเพื่อสำรวจประสบการณ์ที่แตกต่างกัน… ฟังดูคุ้นๆ นะ เราเคยแก้ปัญหานั้นมาแล้วด้วยเบราว์เซอร์ แล้วทำไมไม่ลองเสี่ยงดูอีกล่ะ

ปีที่แล้ว Mozilla ได้เปิดตัว WebXR Device API Spec (ซึ่งเป็นฉบับร่างการทำงานล่าสุดเมื่อสองสัปดาห์ก่อน) เพื่อนำความสามารถ AR, VR และ MR (ergo XR) มาสู่เบราว์เซอร์
ผู้จำหน่ายเบราว์เซอร์ที่สำคัญที่สุดสองสามรายตามมาด้วยการใช้งาน โดยมีข้อยกเว้นที่สำคัญคือ: Safari Mobile ดังนั้นเพื่อพิสูจน์ประเด็นของพวกเขา Mozilla จึงเปิดตัวเบราว์เซอร์ที่รองรับ WebXR ภายใต้แพลตฟอร์ม iOS WebXR Viewer
นี่เป็นขั้นตอนที่สำคัญเพราะการรวมกันของ AR และ VR นำ 6dof มาสู่อุปกรณ์พกพาและชุดหูฟังที่ใช้อุปกรณ์พกพาเช่น Google Cardboard หรือ Samsung Gear VR ดังที่คุณเห็นในตัวอย่างนี้การเพิ่มส่วนแบ่งการตลาดของอุปกรณ์ 6dof โดย อัตรากำไรขั้นต้นที่มากและช่วยให้สามารถปรับใช้เว็บขนาดใหญ่ได้
ในเวลาเดียวกัน พวกที่ Mozilla ได้ทำงานเกี่ยวกับเว็บเฟรมเวิร์กใหม่เพื่ออำนวยความสะดวกในการสร้างโลก 3 มิติและแอปพลิเคชันที่เรียกว่า A-Frame ซึ่งเป็นเฟรมเวิร์กการประกาศแบบคอมโพเนนต์ที่มีไวยากรณ์ HTML ที่อิงตาม three.js และ WebGL โดยมีเพียง สิ่งหนึ่งที่อยู่ในใจ—เพื่อนำความสนุกและความสะดวกในการใช้งานกลับคืนมาสู่การเขียนโปรแกรมเว็บ
นี่เป็นส่วนหนึ่งของสงครามครูเสดของพวกเขาสู่เว็บที่สมจริง ซึ่งเป็นแนวคิดชุดใหม่เกี่ยวกับรูปลักษณ์ของเว็บในอนาคต โชคดีสำหรับเรา พวกเขาไม่ได้อยู่คนเดียว และเราจะเริ่มเห็นประสบการณ์ที่สมจริงมากขึ้นบนเว็บ
หากคุณต้องการทดลองใช้ ให้ดาวน์โหลด WebXR Viewer และไปที่ไซต์นี้เพื่อดูความเป็นไปได้ของเว็บที่สมจริง
เป็นอีกครั้งที่แอปบนเบราว์เซอร์มาตรฐานจะไม่จางหายไปในหนึ่งปีหรือสองปี—เรามักจะมีแอปเหล่านั้นอยู่เสมอ แต่แอพ 3D และประสบการณ์ XR กำลังเติบโตและตลาดก็พร้อมและกระตือรือร้นที่จะมี
การสนับสนุนดั้งเดิมสำหรับ ES6
เกือบทุกเทคโนโลยีที่คิดค้นใน JavaScript ในทศวรรษที่ผ่านมาถูกสร้างขึ้นเพื่อแก้ปัญหาที่เกิดจากการใช้งานเบราว์เซอร์พื้นฐาน แต่ตัวแพลตฟอร์มเองก็เติบโตขึ้นอย่างมากในช่วงไม่กี่ปีที่ผ่านมา และปัญหาส่วนใหญ่ก็หายไปอย่างที่เราได้เห็น กับ Lodash ซึ่งเคยครองมาตรฐานประสิทธิภาพการทำงาน
เช่นเดียวกับ DOM ซึ่งปัญหาเคยเป็นแรงบันดาลใจที่แท้จริงสำหรับการสร้างเฟรมเวิร์กของเว็บแอปพลิเคชัน ตอนนี้ เป็น API ที่พัฒนาแล้วที่คุณสามารถใช้ได้โดยไม่ต้องมีเฟรมเวิร์กเพื่อสร้างแอป ซึ่งจริงๆ แล้ว นั่นคือสิ่งที่องค์ประกอบของเว็บเป็น พวกเขาเป็น "กรอบ" ของแพลตฟอร์มในการสร้างแอพตามส่วนประกอบ
อีกส่วนที่น่าสนใจของวิวัฒนาการแพลตฟอร์มคือตัวภาษาเอง เราใช้ Babel.js ในช่วงไม่กี่ปีที่ผ่านมาเพื่อให้สามารถใช้คุณลักษณะล่าสุดของ ECMAScript ได้ แต่เนื่องจากตัวมาตรฐานเองเริ่มซบเซาลงเล็กน้อยในช่วงไม่กี่ปีที่ผ่านมา นั่นเป็นเวลาที่เพียงพอสำหรับผู้จำหน่ายเบราว์เซอร์ เพื่อนำคุณลักษณะส่วนใหญ่ไปใช้ ซึ่งรวมถึงการสนับสนุนแบบเนทีฟของคำสั่งการนำเข้าแบบคงที่ ดังนั้นตอนนี้ เราสามารถเริ่มพิจารณาการสร้างแอปพลิเคชันโดยไม่มี Babel.js หรือคอมไพเลอร์อื่น ๆ เนื่องจากเรามี (อีกครั้ง) ที่รองรับคุณสมบัติภาษาในแพลตฟอร์มนั้นเอง และเนื่องจาก Node.js ใช้ V8 VM เดียวกันกับ Google Chrome เราเริ่มเห็นการสนับสนุนที่แข็งแกร่งขึ้นของ ES6 ใน Node.js แม้ว่าจะมีคำสั่งการนำเข้าแบบคงที่ภายใต้แฟล็กโมดูลทดลอง
ไม่ได้หมายความว่าเราจะไม่เห็นการรวบรวมแอปในระดับมืออาชีพ แต่หมายความว่าการเริ่มด้วยแอปพลิเคชันบนเบราว์เซอร์จะเป็นเรื่องง่ายและสนุกเหมือนที่เคยเป็นมา
JavaScript ฝั่งเซิร์ฟเวอร์
แม้ว่า JavaScript จะเริ่มต้นด้วยฝั่งเซิร์ฟเวอร์ในปี 1995 ด้วย Netscape Enterprise Server จนกระทั่งการนำเสนอ Dahl ของ Ryan ในปี 2009 นั้น JavaScript เริ่มได้รับการพิจารณาอย่างจริงจังสำหรับแอปฝั่งเซิร์ฟเวอร์ มีหลายสิ่งเกิดขึ้นใน Node.js ในทศวรรษที่ผ่านมา มันมีวิวัฒนาการและเติบโตอย่างมาก ทำให้เกิดโอกาสในการหยุดชะงักและเทคโนโลยีใหม่ ๆ อีกครั้ง
ในกรณีนี้ มันมาจากมือของผู้สร้าง Ryan Dahl ผู้ซึ่งทำงานเกี่ยวกับมุมมองใหม่ของแอพที่ปลอดภัยฝั่งเซิร์ฟเวอร์ด้วย Deno ซึ่งเป็นแพลตฟอร์มที่รองรับฟีเจอร์ภาษาล่าสุดอย่าง async/await และ ยังเป็น TypeScript ภาษาคอมไพล์ถึง js ที่ได้รับความนิยมมากที่สุดโดยกำหนดเป้าหมายประสิทธิภาพที่ดีที่สุดด้วยการใช้งานใน Rust และการใช้ Tokio แต่ที่สำคัญกว่านั้นด้วยปรัชญาความปลอดภัยใหม่ที่แตกต่างจากแพลตฟอร์มฝั่งเซิร์ฟเวอร์ส่วนใหญ่เช่น Python Ruby หรือ Java) ด้วยแรงบันดาลใจจากโมเดลความปลอดภัยของเบราว์เซอร์ Deno จะช่วยให้คุณใช้ทรัพยากรของโฮสต์ได้ก็ต่อเมื่อผู้ใช้ให้สิทธิ์แก่กระบวนการอย่างชัดเจนเท่านั้น ซึ่งอาจฟังดูน่าเบื่อเล็กน้อยในตอนเริ่มต้น แต่อาจส่งผลให้เกิดผลกระทบมากมายจากการอนุญาต ให้เรารันโค้ดที่ไม่ปลอดภัยในสภาพแวดล้อมที่ปลอดภัยโดยเพียงแค่ไว้วางใจแพลตฟอร์ม
Node.js จะยังคงอยู่ในอนาคต แต่เราอาจจะเริ่มเห็นบริการแบบไร้เซิร์ฟเวอร์ เช่น AWS Lambda และ Azure Functions เพื่อให้ฟังก์ชัน Deno เป็นทางเลือกหนึ่งในการเรียกใช้โค้ดฝั่งเซิร์ฟเวอร์ที่ไม่ปลอดภัยบนระบบของตน
บทสรุป
นี่เป็นช่วงเวลาที่น่าตื่นเต้นในโลกของ JavaScript เทคโนโลยีจำนวนมากได้เติบโตพอที่จะปล่อยให้มีที่ว่างสำหรับนวัตกรรม ชุมชนที่กระตือรือร้นไม่เคยหยุดนิ่งที่จะทำให้เราประหลาดใจด้วยแนวคิดที่ยอดเยี่ยมและน่าทึ่ง และเราคาดหวังทางเลือกใหม่ๆ มากมายสำหรับเครื่องมือที่เป็นที่ยอมรับ เนื่องจากระยะที่โตเต็มที่ของพวกเขากำลังมาถึงอย่างรวดเร็ว เราจะไม่หยุดใช้มันเพราะมันดีมากและมีหลักฐานมากมายในสนามรบ แต่ตลาดใหม่และน่าตื่นเต้นจะเริ่มปรากฏขึ้น และคุณควรเตรียมตัวให้พร้อม
การติดตามข่าวสารล่าสุดในโลกของ JavaScript ไม่ใช่เรื่องง่าย เนื่องจากการพัฒนาที่รวดเร็ว แต่มีแหล่งข้อมูลบางส่วนที่สามารถช่วยได้จริงๆ อย่างแรกเลย แหล่งข่าวที่สำคัญที่สุดในความคิดของฉันคือ Echo JS ซึ่งคุณสามารถมีเนื้อหาใหม่จำนวนมากอย่างไม่น่าเชื่อทุกชั่วโมง อย่างไรก็ตาม หากคุณไม่มีเวลา จดหมายข่าว JavaScript Weekly จะเป็นบทสรุปที่ยอดเยี่ยมของสัปดาห์ใน JS นอกจากนี้ สิ่งสำคัญคือต้องจับตาดูการประชุมทั่วโลก และช่อง YouTube เช่น JSConf, React Conf และ Google Chrome Developers มีประโยชน์มาก
ในทางกลับกัน หากคุณสนใจที่จะเห็นการวิพากษ์วิจารณ์เชิงสร้างสรรค์ว่า JavaScript มุ่งไปที่ใด ฉันแนะนำให้อ่าน ในฐานะนักพัฒนา JS นี่คือสิ่งที่ทำให้ฉันนอนไม่ หลับ โดย Justen Robertson ผู้พัฒนา JavaScript เพื่อน
อ่านเพิ่มเติมในบล็อก Toptal Engineering:
- TypeScript กับ JavaScript: คู่มือแนะนำของคุณ