」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > JavaScript - 的先鋒者們Netscape Nodejs

JavaScript - 的先鋒者們Netscape Nodejs

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

Ref: http://blog.kueiapp.com/programming-tw/javascript-的先鋒者們-netscape-nodejs/

JavaScript 1.0

JavaScript - 的先鋒者們Netscape Nodejs

JavaScript 1.0 是由 Netscape 公司的 Brendan Eich 在 1995 年時為著名的瀏覽器 Netscape 所發明的。 Java 是那個時代非常流行的語言,所以 Netscape 當時也想像它一樣酷因此將它命名為 JavaScript。然而,他們完全沒有關係。

微軟則在 1996 年發表了兩種可以在瀏覽器上執行的語言,VBScript 和 JScript。 JScript 其實是 JavaScript 的複製品,用於 Internet Explorer 3。

為了製定 JavaScript 的標準,Netscape 在 1996 年向 ECMA International 提出第一個全球標準化架構,並於 1997 年完成第一個發布版本 (ES1)。他們稱之為 ECMAScript,也就是 JavaScript 的全球標準。從第一版至今的 2022 年,最受歡迎的版本是 ECMAScript 2015(也稱為 ES6),有最多的瀏覽器支援。

不同版本的 JavaScript 會有不同的語法、功能、函式庫或模組系統。要檢查我們的環境是否可以執行它,caniuse.com 是一個非常好的網頁資訊網站。

ESMAScript(JavaScript)候選名單

  • 5th edition: ES5
  • ES6 — ECMAScript 2015
  • ES7 — ECMAScript 2016
  • ES8 — ECMAScript 2017
  • ES9 — ECMAScript 2018
  • NodeJS

2008 年,Google 發表了 Chrome 瀏覽器,其 JavaScript 的 V8 渲染引擎為網路世界投下了一枚震撼彈。由於 V8 的「開放原始碼」特性讓 NodeJS 團隊修改了這個引擎,讓它可以輕鬆地處理 Web 應用程式並建立服務器於後端應用。

JavaScript module

由於 NodeJS 的出現,JavaScript 的應用程式不只限於瀏覽器,服務器端的服務提供者也可以使用 JavaScript。程式碼風格也不受限於網頁格式,許多 NodeJS 應用程式將模組程式設計的概念也帶進 JavaScript 世界。

有別於函式庫 Library,當談到模組 Module 時,它通常包含一個類別或一組函式,用來達到某個目的。此外,由於 JavaScript 世界是一個自由且開放的平台,因此 JavaScript 中的 Module 有多種樣式。

  • CommonJS
  • UMD — Universal Module Definition
  • AMD
  • Require.js
  • ES6 module

隨著時間的推移,使用 JavaScript Module 時可採用 import 和 require 兩種主流模式。

require

CommonJS 風格,是最早產生模組概念的寫作方式。

// a.js
const module = require('module');
module.hello()
// module.js
function hello(){ console.log('hello') }
module.exports = { hello }

import

在最新的 ES6 標準中,模組可以寫成 import 和 export,似乎看起來更容易理解。

// a.js
import module from "module"
module.hello()
// or
import { hello } from "module|
// module.js
export function hello(){ console.log('hello') }
// or
export { hello }

使用 NodeJS

JavaScript - 的先鋒者們Netscape Nodejs

NodeJS 是一個獨立的執行環境,安裝後我們就可以使用 node 指令在終端機執行 JavaScript 程式碼而無需瀏覽器。

  • 從 nodejs.org 下載安裝
  • 從套件管理系統安裝,例如 macOS 的 HomeBrew brew install node
node hello.js
// or omit the extension
node hello

Ref: http://blog.kueiapp.com/programming-tw/javascript-的先鋒者們-netscape-nodejs/

版本聲明 本文轉載於:https://dev.to/kueiapp/javascript-de-xian-feng-zhe-men-netscape-nodejs-2n4j?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • [Flatiron SE] 第 24 天
    [Flatiron SE] 第 24 天
    大家好,在這裡吃飯, 這將是我的第一篇部落格文章!我是應熨斗學校出色的老師的要求這樣做的。我將嘗試每天發表一篇部落格文章,記錄我在編碼過程中的發展。您好,歡迎,以及將來閱讀本文的雇主! 現在我需要說實話,這實際上不是我使用熨斗的「第一天」。我實際上是在兩天前的星期一開始的。但我相信今天絕對是我真正...
    程式設計 發佈於2024-11-07
  • 保護 JavaScript 應用程式的安全:常見漏洞以及如何避免它們
    保護 JavaScript 應用程式的安全:常見漏洞以及如何避免它們
    JavaScript 是最流行的 Web 开发语言之一,但由于其广泛使用,它也是攻击者的常见目标。保护 JavaScript 应用程序的安全对于避免可能导致数据被盗、用户帐户受损等安全漏洞至关重要。本文将探讨 JavaScript 应用程序中的一些常见漏洞并提供缓解这些漏洞的策略。 ...
    程式設計 發佈於2024-11-07
  • 為什麼我在 Go 中收到「語法錯誤:Else 之前出現意外的分號」?
    為什麼我在 Go 中收到「語法錯誤:Else 之前出現意外的分號」?
    Go 中Else 之前意外的分號:詳細解釋你的Go 碼在第21 行遇到異常錯誤:「syntax error:unexpected分號或換行符號之前。 這裡的核心問題源自於Go的自動分號插入規則。通常,Go 中分號是可選的;但是,編譯器會自動將它們插入到某些行的末尾以保持語法完整性。其中一個這樣的情況...
    程式設計 發佈於2024-11-07
  • 如何從 Flask 中的 URL 中提取命名參數?
    如何從 Flask 中的 URL 中提取命名參數?
    從Flask 中的URL 中提取命名參數假設您有一個類似http://10.1.1.1:5000/login? username 的URL =alex&password=pw1 您希望Flask 應用程式處理。若要存取問號後指定的參數,請使用 request.args,而不是 request.for...
    程式設計 發佈於2024-11-07
  • 一級抽象:簡潔函數的關鍵
    一級抽象:簡潔函數的關鍵
    曾經在看過一個函數後,感到迷失在它的複雜性中嗎?讓我們探討乾淨程式碼的基本原則:函數應該只維護一個抽象層級。 這是在 Web 應用程式中建立使用者的真實範例: // ❌ A function doing too many things at different abstraction levels...
    程式設計 發佈於2024-11-07
  • 在 JavaScript 中編寫簡潔且可維護的程式碼的最佳實踐
    在 JavaScript 中編寫簡潔且可維護的程式碼的最佳實踐
    干净且可维护的代码对于任何软件项目的长期成功和可扩展性至关重要。它改善了团队成员之间的协作,减少了错误的可能性,并使代码更易于理解、测试和维护。在这篇博文中,我们将探讨一些在 JavaScript 中编写干净且可维护的代码的最佳实践,以及说明每种实践的代码示例。 1. 一致的代码格式...
    程式設計 發佈於2024-11-07
  • 促進軟體開發成功:整合跨學科技能以獲得更好的結果
    促進軟體開發成功:整合跨學科技能以獲得更好的結果
    In today's world of software development, success is more than just technical know-how. Teams that work well together and mix different skills in vari...
    程式設計 發佈於2024-11-07
  • 如何修復Go模組導入過時的套件版本?
    如何修復Go模組導入過時的套件版本?
    Go 模組匯入過時的套件版本當嘗試使用Go 模組將新套件合併到專案中時,您可能會遇到以下問題:儘管該套件被標記為“最新”,但模組系統會檢索該套件的過時版本。這個過時的版本可能缺少程式碼所需的功能,從而導致編譯或執行時錯誤。 解決方案:在 go.mod 檔案中指定版本Go 模組系統可讓您指定要匯入的套...
    程式設計 發佈於2024-11-07
  • WatchYourLAN - 輕量級網路 IP 掃描器
    WatchYourLAN - 輕量級網路 IP 掃描器
    WatchYourLAN的主要特點 找到新主機時發送通知 監控主機線上/離線歷史記錄 保留網路中所有主機的清單 發送資料到InfluxDB2製作Grafana儀表板 v2 有什麼新功能? 基礎API 匯出到 InfluxDB2 SQLite 與 PostgreSQL...
    程式設計 發佈於2024-11-07
  • 掌握 React Native 中的深度連結和通用連結:OpenGraph Share 和 Node.js 集成
    掌握 React Native 中的深度連結和通用連結:OpenGraph Share 和 Node.js 集成
    设想 假设您有一个名为 ShopEasy 的电子商务应用程序,并且您希望点击电子邮件、消息或社交媒体中的产品链接的用户被直接重定向到应用程序中的相关产品页面,而不是网站。 第1步:在nodejs服务器中进行Opengraph配置以进行链接预览: Open Graph...
    程式設計 發佈於2024-11-07
  • 如何在不使用“eval”的情況下安全地解析“寬鬆”JSON?
    如何在不使用“eval”的情況下安全地解析“寬鬆”JSON?
    在沒有風險評估的情況下解析「輕鬆」的JSONJSON 是廣泛使用的資料交換格式,需要帶引號的鍵的嚴格語法。但是,某些應用程式可能會遇到帶有不帶引號的鍵的“寬鬆”JSON。由於安全風險,不鼓勵使用 eval 解析此類資料。 避免邪惡的 Evaleval 的替代方法是基於正則表達式的方法,該方法在解析之...
    程式設計 發佈於2024-11-07
  • 透過sponge+dtm快速輕鬆實現高性能的電商系統
    透過sponge+dtm快速輕鬆實現高性能的電商系統
    This article demonstrates how to use the Sponge framework to quickly build a simplified high-performance e-commerce system, implementing flash sale an...
    程式設計 發佈於2024-11-07
  • 什麼是 Java 中的關閉鉤子以及如何有效地使用它?
    什麼是 Java 中的關閉鉤子以及如何有效地使用它?
    1. 了解關閉鉤子 關閉鉤子是 Java 中的一種特殊構造,允許您註冊一個線程,該線程將在 Java 虛擬機 (JVM) 關閉時執行。這可以由各種事件觸發,例如使用者中斷 (Ctrl C)、系統關閉或編程終止。 1.1 關閉鉤子如何運作 當 JVM 啟動時,它會建...
    程式設計 發佈於2024-11-07
  • 在 Web 工具中使用 JavaScript 進行安全加密
    在 Web 工具中使用 JavaScript 進行安全加密
    這是開發人員用來幫助保護程式中的敏感資訊免受潛在攻擊者攻擊的方法。加密將可讀資料轉變為編碼格式,只有使用正確的金鑰才能解碼;因此,它對於保護密碼、財務詳細資料和個人資料等資訊的安全性至關重要。 在資料外洩和網路攻擊非常猖獗的時候,這一點變得非常重要。透過加密數據,開發人員將確保沒有未經授權的一方在...
    程式設計 發佈於2024-11-07
  • 使用 STMMCU 實現靜電除塵器控制器的 SPWM ase/ase 逆變器
    使用 STMMCU 實現靜電除塵器控制器的 SPWM ase/ase 逆變器
    前段時間提到中頻電除塵器控制器,我仔細分析了單相和三相SPWM驅動時間,完成了STM32F103處理器上SPWM程式碼的編寫,並用示波器測試了訊號和波形,邏輯分析儀。 STM32F103的TIMER1和TIMER2支援互補的PWM輸出,我選擇TIMER1的CH1、CH2、CH3用於A、B、C三相驅...
    程式設計 發佈於2024-11-07

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

Copyright© 2022 湘ICP备2022001581号-3