<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          前端語言JavaScript介紹

          共 4234字,需瀏覽 9分鐘

           ·

          2023-05-21 16:25

          25c34c7c10d25614c8c00bbac287fa88.webp


          JavaScript簡介

          讓我們來看看 JavaScript 有什么特別之處,我們可以用它實現(xiàn)什么,以及哪些其他技術(shù)可以與其搭配產(chǎn)生奇妙的效果。

          什么是 JavaScript?

          JavaScript?最初被創(chuàng)建的目的是“使網(wǎng)頁更生動”。

          這種編程語言寫出來的程序被稱為腳本。它們可以被直接寫在網(wǎng)頁的 HTML中,在頁面加載的時候自動執(zhí)行。

          腳本被以純文本的形式提供和執(zhí)行。它們不需要特殊的準備或編譯即可運行。

          這方面,JavaScript 和?Java?有很大的區(qū)別。

          為什么叫 JavaScript?

          JavaScript 在剛誕生的時候,它的名字叫 “LiveScript”。但是因為當時 Java 很流行,所以決定將一種新語言定位為 Java 的“弟弟”會有助于它的流行。

          隨著 JavaScript 的發(fā)展,它已經(jīng)成為了一門完全獨立的語言,并且也擁有了自己的語言規(guī)范?ECMAScript。現(xiàn)在,它和 Java 之間沒有任何關(guān)系。

          如今,JavaScript 不僅可以在瀏覽器中執(zhí)行,也可以在服務端執(zhí)行,甚至可以在任意搭載了?JavaScript 引擎?的設備中執(zhí)行。

          瀏覽器中嵌入了 JavaScript 引擎,有時也稱作“JavaScript 虛擬機”。

          不同的引擎有不同的“代號”,例如:

          • V8?—— Chrome、Opera 和 Edge 中的 JavaScript 引擎。

          • SpiderMonkey?—— Firefox 中的 JavaScript 引擎。

          • ……還有其他一些代號,像 “Chakra” 用于 IE,“JavaScriptCore”、“Nitro” 和 “SquirrelFish” 用于 Safari,等等。

          上面這些術(shù)語很容易記住,因為它們經(jīng)常出現(xiàn)在開發(fā)者的文章中。我們也會用到這些術(shù)語。例如,如果“V8 支持某個功能”,那么我們可以認為這個功能大概能在 Chrome、Opera 和 Edge 中正常運行。

          引擎是如何工作的?

          引擎很復雜,但是基本原理很簡單。

          1. 引擎(如果是瀏覽器,則引擎被嵌入在其中)讀取(“解析”)腳本。

          2. 然后,引擎將腳本轉(zhuǎn)化(“編譯”)為機器語言。

          3. 然后,機器代碼快速地執(zhí)行。

          引擎會對流程中的每個階段都進行優(yōu)化。它甚至可以在編譯的腳本運行時監(jiān)視它,分析流經(jīng)該腳本的數(shù)據(jù),并根據(jù)獲得的信息進一步優(yōu)化機器代碼。

          瀏覽器中的 JavaScript 能做什么?

          現(xiàn)代的 JavaScript 是一種“安全的”編程語言。它不提供對內(nèi)存或 CPU 的底層訪問,因為它最初是為瀏覽器創(chuàng)建的,不需要這些功能。

          JavaScript 的能力很大程度上取決于它運行的環(huán)境。例如,Node.js?支持允許 JavaScript 讀取/寫入任意文件,執(zhí)行網(wǎng)絡請求等的函數(shù)。

          瀏覽器中的 JavaScript 可以做與網(wǎng)頁操作、用戶交互和 Web 服務器相關(guān)的所有事情。

          例如,瀏覽器中的 JavaScript 可以做下面這些事:

          • 在網(wǎng)頁中添加新的 HTML,修改網(wǎng)頁已有內(nèi)容和網(wǎng)頁的樣式。

          • 響應用戶的行為,響應鼠標的點擊,指針的移動,按鍵的按動。

          • 向遠程服務器發(fā)送網(wǎng)絡請求,下載和上傳文件(所謂的?AJAX?和?COMET?技術(shù))。

          • 獲取或設置 cookie,向訪問者提出問題或發(fā)送消息。

          • 記住客戶端的數(shù)據(jù)(“本地存儲”)。

          瀏覽器中的 JavaScript 不能做什么?

          為了用戶的(信息)安全,在瀏覽器中的 JavaScript 的能力是受限的。目的是防止惡意網(wǎng)頁獲取用戶私人信息或損害用戶數(shù)據(jù)。

          此類限制的例子包括:

          • 網(wǎng)頁中的 JavaScript 不能讀、寫、復制和執(zhí)行硬盤上的任意文件。它沒有直接訪問操作系統(tǒng)的功能。

            現(xiàn)代瀏覽器允許 JavaScript 做一些文件相關(guān)的操作,但是這個操作是受到限制的。僅當用戶做出特定的行為,JavaScript 才能操作這個文件。例如,用戶把文件“拖放”到瀏覽器中,或者通過?<input>?標簽選擇了文件。

            有很多與相機/麥克風和其它設備進行交互的方式,但是這些都需要獲得用戶的明確許可。因此,啟用了 JavaScript 的網(wǎng)頁應該不會偷偷地啟動網(wǎng)絡攝像頭觀察你,并把你的信息發(fā)送到?美國國家安全局。

          • 不同的標簽頁/窗口之間通常互不了解。有時候,也會有一些聯(lián)系,例如一個標簽頁通過 JavaScript 打開的另外一個標簽頁。但即使在這種情況下,如果兩個標簽頁打開的不是同一個網(wǎng)站(域名、協(xié)議或者端口任一不相同的網(wǎng)站),它們都不能相互通信。

            這就是所謂的“同源策略”。為了解決“同源策略”問題,兩個標簽頁必須??包含一些處理這個問題的特定的 JavaScript 代碼,并均允許數(shù)據(jù)交換。本教程會講到這部分相關(guān)的知識。

            這個限制也是為了用戶的信息安全。例如,用戶打開的?http://anysite.com?網(wǎng)頁必須不能訪問?http://gmail.com(另外一個標簽頁打開的網(wǎng)頁)也不能從那里竊取信息。

          • JavaScript 可以輕松地通過互聯(lián)網(wǎng)與當前頁面所在的服務器進行通信。但是從其他網(wǎng)站/域的服務器中接收數(shù)據(jù)的能力被削弱了。盡管可以,但是需要來自遠程服務器的明確協(xié)議(在 HTTP header 中)。這也是為了用戶的信息安全。

          如果在瀏覽器環(huán)境外(例如在服務器上)使用 JavaScript,則不存在此類限制。現(xiàn)代瀏覽器還允許安裝可能會要求擴展權(quán)限的插件/擴展。

          ef21758d615cbd7c9317f13c673718d7.webp

          是什么使得 JavaScript 與眾不同?

          至少有?3?件事值得一提:

          ? 與 HTML/CSS 完全集成。

          ??簡單的事,簡單地完成。

          ??被所有的主流瀏覽器支持,并且默認開啟。


          JavaScript 是將這三件事結(jié)合在一起的唯一的瀏覽器技術(shù)。

          這就是為什么 JavaScript 與眾不同。這也是為什么它是用于創(chuàng)建瀏覽器界面的使用最廣泛的工具。

          此外,JavaScript 還可用于創(chuàng)建服務器和移動端應用程序等。

          JavaScript “上層”語言

          不同的人想要不同的功能。JavaScript 的語法也不能滿足所有人的需求。

          這是正常的,因為每個人的項目和需求都不一樣。

          因此,最近出現(xiàn)了許多新語言,這些語言在瀏覽器中執(zhí)行之前,都會被編譯(轉(zhuǎn)化)成 JavaScript。

          現(xiàn)代化的工具使得編譯速度非常快且透明,實際上允許開發(fā)者使用另一種語言編寫代碼并會將其“自動轉(zhuǎn)換”為 JavaScript。

          此類語言的示例有:

          ??CoffeeScript?是 JavaScript 的一種語法糖。它引入了更加簡短的語法,使我們可以編寫更清晰簡潔的代碼。通常,Ruby 開發(fā)者喜歡它。

          ??TypeScript?專注于添加“嚴格的數(shù)據(jù)類型”以簡化開發(fā),以更好地支持復雜系統(tǒng)的開發(fā)。由微軟開發(fā)。

          ??Flow?也添加了數(shù)據(jù)類型,但是以一種不同的方式。由 Facebook 開發(fā)。

          ??Dart?是一門獨立的語言。它擁有自己的引擎,該引擎可以在非瀏覽器環(huán)境中運行(例如手機應用),它也可以被編譯成 JavaScript。由 Google 開發(fā)。

          ??Brython?是一個 Python 到 JavaScript 的轉(zhuǎn)譯器,讓我們可以在不使用 JavaScript 的情況下,以純 Python 編寫應用程序。

          ??Kotlin?是一個現(xiàn)代、簡潔且安全的編程語言,編寫出的應用程序可以在瀏覽器和 Node 環(huán)境中運行。

          這樣的語言還有很多。當然,即使我們在使用此類編譯語言,我們也需要了解 JavaScript。因為了解 JavaScript 才能讓我們真正明白我們在做什么。

          Mock 工具

          94050a0a4d194e2e3222c152c2fa9d52.webp

          一個好用的開源接口 Mock 工具:https://github.com/eolinker/eoapi

          除了 Mock 功能,還集合了 API 管理和測試功能,還可以通過插件廣場幫助你將 API 發(fā)布到各個應用平臺,比如發(fā)布到網(wǎng)關(guān)上完成 API 上線,或者和低代碼平臺結(jié)合,將 API 快速變成低代碼平臺中可使用的組件等。

          總結(jié)

          • JavaScript 最開始是專門為瀏覽器設計的一門語言,但是現(xiàn)在也被用于很多其他的環(huán)境。

          • JavaScript 作為被應用最廣泛的瀏覽器語言,且與 HTML/CSS 完全集成,具有獨特的地位。

          • 有很多其他的語言可以被“編譯”成 JavaScript,這些語言還提供了更多的功能。建議最好了解一下這些語言,至少在掌握了 JavaScript 之后大致的了解一下。




          瀏覽 86
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产在线色视频 | 久久躁日日躁AAAAXXXX | 在线无码高清观看 | 免费观看欧美成人网站 | 日日操日日摸 |