JavaScript宗旨是讓網站活起來
優點
- 安全,因為它是基于瀏覽器引擎(V8, spiderMokey)運行的
- 與 HTML/CSS 完全集成。
- 簡單的事情簡單地完成。
- 所有主流瀏覽器都支持并默認啟用。
功能
- 向頁面添加新的 HTML,更改現有內容,修改樣式。
- 對用戶操作做出反應,在鼠標點擊、指針移動、按鍵時運行,
注意這里是指用戶在瀏覽器的操作,而不是觸發系統的指令
- 通過網絡向遠程服務器發送請求,下載和上傳文件(所謂的AJAX和COMET技術)。
- 獲取和設置 cookie,向訪問者提問,顯示消息。
- 記住客戶端的數據(“本地存儲”)。
不能做什么
-
網頁上的 JavaScript 可能無法讀取/寫入硬盤上的任意文件、復制它們或執行程序。它不能直接訪問操作系統功能。
現代瀏覽器允許它處理文件,但訪問受到限制,并且僅在用戶執行某些操作時提供,例如將文件“拖放”到瀏覽器窗口或通過
<input>
標簽選擇它。有一些方法可以與相機/麥克風和其他設備進行交互,但它們需要用戶的明確許可。因此,啟用 JavaScript 的頁面可能不會偷偷啟用網絡攝像頭、觀察周圍環境并將信息發送給NSA。
-
不同的選項卡/窗口通常彼此不了解。有時他們會這樣做,例如當一個窗口使用 JavaScript 打開另一個窗口時。但即使在這種情況下,如果一個頁面的 JavaScript 來自不同的站點(來自不同的域、協議或端口),它們也可能無法訪問另一個頁面,
跨域的問題就來自這里
這稱為“同源策略”。要解決這個問題,兩個頁面都必須同意數據交換并包含處理它的特殊 JavaScript 代碼。我們將在本教程中介紹。
再次,此限制是為了用戶的安全。用戶打開的頁面
http://anysite.com
不得使用 URL 訪問另一個瀏覽器選項卡http://gmail.com
并從那里竊取信息。 JavaScript 可以
很容易地通過網絡與當前頁面所在的服務器進行通信
。但是它從其他站點/域接收數據的能力被削弱了。盡管可能,但它需要來自遠程端的明確協議(以 HTTP 標頭表示)。
如果JavaScript在瀏覽器之外使用,例如在服務器上,則不存在這樣的限制。現代瀏覽器也允許插件/擴展請求擴展權限。
其他類似JavaScript的語言
- CoffeeScript是 JavaScript 的“語法糖”。它引入了更短的語法,使我們能夠編寫更清晰、更精確的代碼。通常,Ruby 開發人員喜歡它。
- TypeScript專注于添加“嚴格的數據類型”以簡化復雜系統的開發和支持。它是由微軟開發的。
- Flow還添加了數據類型,但方式不同。由 Facebook 開發。
- Dart是一種獨立的語言,它有自己的引擎,可以在非瀏覽器環境(如移動應用程序)中運行,但也可以轉換為 JavaScript。由谷歌開發。
- Brython是一個 Python 到 JavaScript 的轉譯器,它可以在沒有 JavaScript 的情況下用純 Python 編寫應用程序。
- Kotlin是一種現代、簡潔且安全的編程語言,可以針對瀏覽器或 Node.js。
參考
本文由博客一文多發平臺 OpenWrite 發布!