」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > (目前唯一的替代方案:Vanilla JavaScript

(目前唯一的替代方案:Vanilla JavaScript

發佈於2024-11-02
瀏覽:984

(The Only Current Alternative: Vanilla JavaScript

我曾看過長期使用 C 語言的開發人員,仍使用 MFC(微軟基礎類別)進行開發。原因很簡單:沒有真正的替代方案可以用 C 建立 UI。雖然 Qt 存在,但專業用途需要商業許可證,這使得 MFC 成為唯一的選擇。

MFC 提供基本的 UI 元件,但它仍然能夠創建生產級程序,如 CAD 軟體或醫院應用程式。

JavaScript 生態系的目前狀態非常相似。

沒有專門為實現 HPSE 目標而建造的框架。雖然有像 Babylon.js 這樣的遊戲引擎,但它們只提供 3D 圖形功能,並沒有像 React 那樣提供整體結構。

所以,最終,一切都回到了 Vanilla JavaScript 和 TypeScript。開發人員使用 Vanilla JavaScript 並不是因為他們喜歡它;而是因為他們喜歡它。他們使用它是因為沒有其他選擇。就像早期由於缺乏商業框架,開發人員不得不用 C 從頭開始建立一切一樣,現在我們在 JavaScript 中也面臨著同樣的情況。目前還沒有完全滿足 HPSE 需求的框架,因此我們只能使用 Vanilla JavaScript 進行手動開發。

坦白說,這並不是 JavaScript 獨有的。對於大多數其他語言也是如此。

有句話說:「天下沒有白吃的午餐。」

許多最初雄心勃勃地想要突破新界限的程式最終都嚴重依賴直接在程式語言中建立的自訂功能。 HPSE 也是從有一天在瀏覽器中執行本機程式的願景開始的,而現在,它必須用 Vanilla JavaScript 一點一點地編寫。

有些人可能會爭論,「為什麼不放棄 JavaScript 並使用 C 或 Rust 來創建 WebAssembly (WASM) 模組並在瀏覽器中運行它?」

有一個很好的故事可以回答這個問題。

Babylon.js 和 Three.js 的領導者曾在評論中被問及 WASM 技術是否會成為他們引擎的未來。他們的答案是「不。」

原因很簡單:C/Rust 程式碼不能直接在 Web 環境中執行,這使得偵錯變得更加困難。並且由於 V8 引擎的進步,JavaScript 現在可以實現高效能。 JavaScript 是一種直接在瀏覽器中運行並提供高生產力的腳本語言 - 沒有必要放棄這些優勢。

過去,程式設計師透過開發自己的作業系統來競爭。但在 Windows、Mac 和 Linux 成為標準之後,焦點轉移到如何建置在這些系統上運行的程式。同樣,今天的瀏覽器已經發展到可以合理考慮如何建立在其中運行的程式的程度。

如果對於 JavaScript 應該和不應該用於什麼有明確的界限,並且如果高端任務確實不適合 JavaScript,那麼 Microsoft 永遠不會啟動 Babylon.js 項目,Three.js 也永遠不會已被創建。 WebGPU 也是如此,它正在建立為新的網路標準。

最近,我一直在反思自己作為開發者的身份,質疑「前端」到底意味著什麼,以及這個術語是否能夠真正涵蓋 Web 用戶端開發的範圍。

我確信我的想法中有很多錯誤訊息,但我會將其作為我的第一篇部落格文章發布,以鞏固我一直在思考的內容。

版本聲明 本文轉載於:https://dev.to/devsw_2024/the-only-current-alternative-vanilla-javascript-ck2?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何使用SQL將時間序列數據分為5分鐘的間隔?
    如何使用SQL將時間序列數據分為5分鐘的間隔?
    [2 [2 分析時間序列數據通常需要將數據分組為特定的間隔。本指南演示瞭如何使用SQL將數據分為5分鐘的間隔,並解決了需要在定義的時間範圍內匯總數據的方案。 該示例使用“時間”和“ ID”表中的數據,計數名稱“ John”的出現。 挑戰在於從單個時間戳進行分組到5分鐘的間隔聚合。 最佳方法取決...
    程式設計 發佈於2025-03-23
  • 如何使用Python有效地以相反順序讀取大型文件?
    如何使用Python有效地以相反順序讀取大型文件?
    在python 中,如果您使用一個大文件,並且需要從最後一行讀取其內容,則在第一行到第一行,Python的內置功能可能不合適。這是解決此任務的有效解決方案:反向行讀取器生成器 == ord('\ n'): 緩衝區=緩衝區[:-1] ...
    程式設計 發佈於2025-03-23
  • 為什麼使用固定定位時,為什麼具有100%網格板柱的網格超越身體?
    為什麼使用固定定位時,為什麼具有100%網格板柱的網格超越身體?
    網格超過身體,用100%grid-template-columns 為什麼在grid-template-colms中具有100%的顯示器,當位置設置為設置的位置時,grid-template-colly修復了? 問題: 考慮以下CSS和html: class =“ snippet-code”> ...
    程式設計 發佈於2025-03-23
  • 與React Memo告別不必要的重新訂閱者:分步教程
    與React Memo告別不必要的重新訂閱者:分步教程
    [2 介绍 反应应用程序经常处理大型数据集和复杂的组件,在这种情况下,不必要的重新订阅可能会对性能产生重大影响。为了解决这个问题,React提供了React.Memo-一种简单而强大的工具,可优化组件并减少渲染时间。在本指南中,我们将探讨React Memo的工作原理,为什么有用以及...
    程式設計 發佈於2025-03-23
  • \“(1)vs.(;;):編譯器優化是否消除了性能差異?\”
    \“(1)vs.(;;):編譯器優化是否消除了性能差異?\”
    答案: 在大多數現代編譯器中,while(1)和(1)和(;;)之間沒有性能差異。編譯器: perl: 1 輸入 - > 2 2 NextState(Main 2 -E:1)V-> 3 9 Leaveloop VK/2-> A 3 toterloop(next-> 8 last-> 9 ...
    程式設計 發佈於2025-03-23
  • 如何將我的C#應用​​程序連接到MySQL數據庫?
    如何將我的C#應用​​程序連接到MySQL數據庫?
    How to Connect to a MySQL Database in C# ProjectsMySQL Connector/NET and MySQL for Visual StudioTo establish a connection between your C# application ...
    程式設計 發佈於2025-03-23
  • 如何使用CSS可靠樣式的空輸入字段?
    如何使用CSS可靠樣式的空輸入字段?
    使用CSS 造型一個常見的樣式需要是將特定的規則應用於空輸入字段。這對於向用戶(例如佔位符文本或彩色邊框)提供視覺提示很有用。但是,使用輸入[value =“”]選擇器來定位空輸入可能無法按預期工作。 在現代瀏覽器中,佔:佔位符 - 佔位符偽造的pseudo-class提供了一種更可靠的方式來樣式...
    程式設計 發佈於2025-03-23
  • 為什麼我的CSS背景圖像出現?
    為什麼我的CSS背景圖像出現?
    故障排除:CSS背景圖像未出現 ,您的背景圖像儘管遵循教程說明,但您的背景圖像仍未加載。圖像和样式表位於相同的目錄中,但背景仍然是空白的白色帆布。 而不是不棄用的,您已經使用了CSS樣式: bockent {背景:封閉圖像文件名:背景圖:url(nickcage.jpg); 如果您的html,cs...
    程式設計 發佈於2025-03-23
  • CSS可以在新選項卡中打開鏈接,例如\“ target = _blank \”?
    CSS可以在新選項卡中打開鏈接,例如\“ target = _blank \”?
    使用CSS將“ target = _blank”添加到外部鏈接在新選項卡中打開外部鏈接是一個常見的可用性功能。 While HTML provides the "target=_blank" attribute to achieve this, you may wonder i...
    程式設計 發佈於2025-03-23
  • 箭頭函數與es6中的方法聲明:為什麼``為什麼``'''''''''''''''''''''''''''''為什麼在箭頭函數中不按預期工作?
    箭頭函數與es6中的方法聲明:為什麼``為什麼``'''''''''''''''''''''''''''''為什麼在箭頭函數中不按預期工作?
    arrow functions vs.在es6 的目的是讓函數訪問人物對像中的名稱屬性。但是,控制台僅打印“我的名字”。 說明:的,ES6中的獨特本質產生。與傳統功能聲明不同,箭頭功能不會綁定此關鍵字。相反,他們從周圍的範圍內繼承了這種約束,在這種情況下,它是全局範圍。 解決方案:可以使用ES6...
    程式設計 發佈於2025-03-23
  • 文字到語音(本書給有聲讀物)
    文字到語音(本書給有聲讀物)
    [2 曾經希望您能在不犧牲寶貴閱讀時間的情況下享受自己喜歡的書籍嗎? 我們許多人都面臨著這個困境。我們有要閱讀的書,但生活會阻礙。 這是一些常見的挑戰: 聽聽有聲讀物是繁忙時間表的方便替代方案。 購買文本和音頻版本可能很昂貴,只有音頻版本並不總是理想的。 幸運的是,存在一種簡單的編碼解決方案,可...
    程式設計 發佈於2025-03-23
  • Java是否允許多種返回類型:仔細研究通用方法?
    Java是否允許多種返回類型:仔細研究通用方法?
    在Java中的多個返回類型:一種誤解類型:在Java編程中揭示,在Java編程中,Peculiar方法簽名可能會出現,可能會出現,使開發人員陷入困境,使開發人員陷入困境。 getResult(string s); ,其中foo是自定義類。該方法聲明似乎擁有兩種返回類型:列表和E。但這確實是如此嗎...
    程式設計 發佈於2025-03-23
  • 如何使用FormData()處理多個文件上傳?
    如何使用FormData()處理多個文件上傳?
    )處理多個文件輸入時,通常需要處理多個文件上傳時,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    程式設計 發佈於2025-03-23
  • 如何限制動態大小的父元素中元素的滾動範圍?
    如何限制動態大小的父元素中元素的滾動範圍?
    在交互式接口中實現垂直滾動元素的CSS高度限制問題:考慮一個佈局,其中我們具有與用戶垂直滾動一起移動的可滾動地圖div,同時與固定的固定sidebar保持一致。但是,地圖的滾動無限期擴展,超過了視口的高度,阻止用戶訪問頁面頁腳。 $("#map").css({ margin...
    程式設計 發佈於2025-03-23

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3