整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          譯 - JavaScript函數的6個基本術語

          可能你會很熟練,但名稱不一定知道。

          正文從這開始~~



          讓我們談談什么是:lambdas(匿名函數)、 first-class functions(頭等函數)、higher-order functions(高階函數)、unary functions(一元函數)、currying(柯里化 )和pure functions(純函數)。

          如果您不清楚命令式和聲明式編程之間的區別,可以看我的文章: Imperative versus declarative code… what’s the difference?

          什么是Lambdas(匿名)=> 箭頭函數?

          Lambdas (λ) 在 JavaScript 作為arrow functions(箭頭函數)被廣為所知:

          // this is your regular named function in JavaScriptfunction namedFunction (a, b) {
           return a + b;}// this is a lambda, i.e. an arrow functionconst lambda = (a, b) => a + b;
          

          術語lambda是一個正式的數學邏輯系統,起源于lambda演算。Lambda演算是由圖靈完成的,它代表了能夠構建任何圖靈機的通用計算模型。 Lambda expressions(匿名函數表達式) 是函數式編程的基石。如果它對你有所幫助,只需將它視為函數的新縮短語法就行。然而,在對象或類中使用它們時要注意this的指向。

          什么是first-class functions(頭等函數)?

          First-class type 意味著,該類型可以用作變量的值。在JavaScript中一個字符串是頭等類型,一個函數也是頭等類型。所以函數可以接受其他函數作為參數,并返回函數作為返回值。

          在綁定事件監聽器時,函數作為first-class被使用:

          const handler = () => console.log ('I am function');
          document.addEventListener ('click', handler);
          

          什么是higher-order functions(高階函數)?

          高階函數是一個接受其他函數作為參數或將函數作為返回值返回的函數。 First-order function(一階函數)是一個函數,它不接受其他函數作為參數,并且不返回函數作為其返回值。

          const firstOrder = () => console.log ('First order strikes back!');const higherOrder = whoStrikesBack => whoStrikesBack ();
          higherOrder (firstOrder);
          

          什么是unary functions(一元函數)?

          該術語涉及一個函數接受一些參數的元數。一元函數(i.e. monadic)是一個只接受一個參數的函數。

          const unaryFunction = message => console.log (message);const binaryFunction = (color, message) =>
           console.log (`%c${message}`, `color:${color}`);const ternaryFunction = (fnc, color, message) =>
           fnc (`%c${message}`, `color:${color}`);
          

          什么是currying(柯里化)?

          Currying(柯里化)是一個帶有多個參數的函數并將其轉換為函數序列的過程,每個函數只有一個參數。

          一個有n個參數的函數,可以使用柯里化將它變成一個一元函數。

          const binaryFunction = (a, b) => a + b;const curryUnaryFunction = a => b => a + b;
          curryUnaryFunction (1); // returns a function: b => 1 + b
          curryUnaryFunction (1) (2); // returns the number 3
          

          Currying(柯里化)以數學家 Haskell Curry的名字命名,不是吃的。

          柯里化函數非常適合提高代碼的可重用性和函數式結構。想了解更多,請參考: JavaScript ES6 curry functions with practical examples。它可能會讓人習慣,但是我現在寫的所有函數都歸功于柯里化。

          什么是pure functions(純函數)?

          純函數是一種其返回值僅由其參數決定,沒有任何副作用的函數。

          這意味著如果你在整個應用程序中的不同的一百個地放調用一個純函數相同的參數一百次,該函數始終返回相同的值。純函數不會更改或讀取外部狀態。

          let myArray = [];const impureAddNumber = number => myArray.push (number);const pureAddNumber = number => anArray =>
           anArray.concat ([number]);
          console.log (impureAddNumber (2)); // returns 1
          console.log (myArray); // returns [2]
          console.log (pureAddNumber (3) (myArray)); // returns [2, 3]
          console.log (myArray); // returns [2]
          myArray = pureAddNumber (3) (myArray);
          console.log (myArray); // returns [2, 3]
          

          在數組中,Push函數就是不純的,它會改變它所調用的數組,因此會產生副作用。 push的返回值是一個數字索引。

          另外,Concat接受數組并將其與另一個數組連接,從而產生一個沒有副作用的全新數組。然后返回兩個數組串聯后的新數組。

          純函數很重要,因為它們簡化了單元測試(沒有副作用,也不需要依賴注入),它們避免緊密耦合,并通過消除副作用,使應用程序更加簡潔。

          我專門撰寫了一篇文章來討論純函數在編程中的最佳實踐:JavaScript Pure Functions for OOP developers

          結語

          理解函數式編程并不能讓你成為更好的開發者,它會讓你成為一個更好的人。你可以通過lambda演算用啤酒來招待你的朋友,可以通過有趣的數學邏輯來糾正你的家人。

          要在實踐中使用所有這些術語,請閱讀:8 steps to turn imperative JavaScript class to a functional declarative code

          另外,要了解有關條件語句和條件表達式的更多信息,請閱讀:How to replace switch and ternaries in functional JavaScript

          關于本文

          譯者:@reahink

          譯文:https://zhuanlan.zhihu.com/p/61868946

          作者:@Martin Novák

          原文:https://medium.com/front-end-weekly/6-fundamental-terms-in-functional-javascript-e25d50d40b2c

          字營銷有許許多多的專業術語、術語和縮略詞,幾乎就像學習另一門語言一樣。

          對于一些數字營銷的新手來說,一些基本的術語還很生疏,很多時候都會為此迷惑,因此本文總結了每個數字營銷人員都應該了解的33個重要術語,希望對營銷新手們有幫助。

          1、Algorithm/算法:由某些計算或問題解決過程確定的一套規則。在數字營銷中,算法可以通過精確地定位受眾的興趣、活動及喜好等等,從而了解他們的行為和消費心理細分。

          2、API(Application Programming Interface)/應用程序接口:用于顯示程序如何通過數據與應用程序交互的過程。

          3、Avatar/頭像:指用戶在網站、社交媒體等平臺上的個人資料圖片。

          4、Backlink/反向鏈接:指外部網站或網頁中所提供的鏈接可返回到你的網站。這是一種流行的SEO策略,可以提高網站的搜索排名、流量、參與度等。

          5、Banner/橫幅廣告:一種位于網站高可視性和高流量區域的數字廣告形式。

          6、Bounce Rate/跳出率:僅瀏覽網站一個頁面就退出的次數百分比。

          7、Cookie:Cookie指某些網站為了辨別用戶身份而儲存在用戶本地終端上的數據,追蹤Cookie可以幫助營銷人員識別和追蹤受眾特征和偏好,并自定義網絡體驗和定位廣告。

          8、CPC/每次點擊成本:也稱為PPC(點擊付費廣告),當用戶點擊某個網站上的CPC廣告后,這個站的站長就會獲得相應的收入,是廣告界最常見的定價方式

          9、CRO/轉化率優化:轉化率指網站訪問者中轉化的訪客占全部訪客的比例,CRO就是通過數據分析,對網站的用戶轉化率進行最大化建模。

          10、CTR/點擊率:點擊網站廣告鏈接的人數占總瀏覽量的百分比,營銷人員通常使用CTR來衡量廣告效果。

          11、Domain/域名:域名是互聯網上由一串用點分隔的字符串組成的標識計算機電子方位的名稱,選擇一個合適的域名是SEO營銷的第一步。

          12、Email Marketing/電子郵件營銷:通過電子郵件宣傳產品和服務,可以幫助發展和培養與客戶的關系。

          13、Engagement Rate/參與率:衡量受眾的評價、點贊和分享等,參與度涉及不同層面(從具體的帖子到營銷活動)。

          14、Heatmap/熱圖:通過使用彩圖(紅色=點擊量,綠色=點擊量)來體現人們如何與網站交互。有很多方法可以跟蹤和分析這些數據,常用的方法有:點擊跟蹤、眼球跟蹤等。

          15、Hyperlink/超鏈接:位于網站或網頁內的鏈接,將人們引向另一個網站或網頁。

          16、Impression/曝光:表示某一內容(展示廣告、社交媒體帖子等)被網站訪問者瀏覽的次數。

          17、Inbound Link/入站鏈接:網站外部的鏈接或驅動到你網站的網頁鏈接。

          18、Internal Link/內部鏈接:網站內提供的鏈接,該鏈接可以驅動到網站中的另一個頁面。

          19、Keyword Stuffing/關鍵詞堆砌:在網頁中大量堆砌關鍵詞,希望提高關鍵詞密度,并提高網頁針對關鍵詞的相關度。但搜索算法會檢測到這一點,并做出對應的排名懲罰。

          20、Landing Page/登陸頁面:訪問者在點擊超鏈接時首先登陸的網站頁面。常見的登錄頁面是網站主頁或特定產品的頁面。對于登錄頁面來說,吸引用戶的注意力并促使他們采取行動是很重要的。

          21、Long-Tail Keyword/長尾關鍵字:由三到四個字組成的關鍵字短語,是特定于產品或服務的。長尾關鍵字是瞄準那些尋找特定的產品和服務的客戶。

          22、Mention/提及:當其他品牌、行業網紅或出版物提到你的品牌或產品時。

          23、Metadata/元數據:描述數據的一串數據,對數據及信息資源的描述性信息。它控制網站和搜索引擎之間的交互。網站訪問者幾乎看不到它,因為它被構建到網頁的HTML中。元數據有助于處理不同類型的數據,是幫助分析和改進SEO的一個很好的資源。

          24、Organic Traffic/自然流量:與付費流量不同,自然流量不涉及任何付費廣告,所有訪客都是自然訪客。

          25、Pop-Up/彈出式廣告:在新的瀏覽器窗口中生成的在線廣告形式。需要注意的是,消費者通常都很厭煩這種廣告形式,賣家需要注意規避。

          26、Real-Time Bidding/實時競價:即在每個廣告展示曝光的基礎上進行實時競價的新興廣告類型。它通過減少浪費曝光的次數來提高整體效率。實時競價通常發生在供方平臺上,幫助競標者決定購買哪種廣告曝光。

          27、Referral/推薦:與使用傳統的營銷方法不同,推薦營銷依賴于口碑營銷,即客戶與感興趣的購物者談論產品和服務。在線評論網站在推薦營銷中發揮著巨大的作用。

          28、SEM /搜索引擎營銷:一種營銷策略,主要通過付費廣告來提高網站或特定帖子的谷歌搜索排名。數字營銷人員通常負責提高網頁排名。

          29、SEO/搜索引擎優化:提高網站的質量和流量。SEO策略包括確保標題標簽、元描述和內部鏈接都是正確創建的,以驅動web頁面的流量。

          30、SERP/搜索引擎結果頁面:當人們使用搜索引擎通過某些關鍵字搜索某些內容時,會看到的頁面。該頁面包含兩個不同的結果——付費搜索和自然搜索。付費搜索結果來自付費在SERP上顯示其網站或網頁的廣告商,而自然搜索結果是基于SEO顯示的網站。

          31、UI/用戶界面:是指對軟件的人機交互、操作邏輯、界面美觀的整體設計。UI在設計方面起著重要的作用,例如標識或圖標的大小或整體對齊。

          32、Unique Visitor獨立訪客:指的是在特定時間內,一個人對某個站點至少訪問一次。這通常是通過從同一個IP地址中區分多個訪問來計算的。在網站數據分析方面,識別獨立訪問可以應用到很多方面。例如,它能幫助營銷人員構建元數據,這些元數據可以用于在未來創建用戶子類別。

          33、UX /用戶體驗:指終端用戶與品牌、產品和服務等之間的整體互動。它包含營銷、工程和設計組件,而不僅僅是提供客戶滿意度。分析用戶體驗可以幫助營銷人員確定可以進行改進的內容點,幫助調整和優化營銷方案。

          (編譯/雨果網 宋淑湲)

          【特別聲明】未經許可同意,任何個人或組織不得復制、轉載、或以其他方式使用本網站內容。轉載請聯系:editor@cifnews.com

          當今的 Web 開發中,JavaScript 不僅是一種優勢,而且是一種必需品。JavaScript 不斷帶來新的功能、術語和概念,使 Web 應用程序更具交互性、高效且用戶友好。 無論您是剛剛開始 Web 開發之旅 還是想要 提高自己的技能 ,掌握 JavaScript 的基本術語都至關重要。 在這份綜合指南中,我們將探討每個開發人員都應該了解的 JavaScript 關鍵概念,從基礎到高級。 本文涵蓋了基本 DOM、Promises 的異步以及 Service Workers 的功能,幫助您加深對 JavaScript 關鍵術語的理解。 通過學習 JavaScript 的關鍵術語,Web 開發時不再迷茫。 1. JavaScript 中的有效負載 在 JavaScript 中,尤其是在處理 Web 開發和 API 時,有效負載 是指在請求中發送或在響應中接收的實際數據。 有效負載可以采用多種格式,其中 JSON 是最常見的格式之一,因為它具有輕量級且易于解析的結構。 為什么有效負載很重要?

          • 數據交換: 有效負載是客戶端和服務器之間數據交換的關鍵。了解如何處理有效負載對于實現 API 調用、Ajax 請求以及任何形式的數據檢索或提交至關重要。
          • 效率: 了解如何有效地構建和解析有效負載可以顯著影響 Web 應用程序的性能。
          // Sending a JSON payload to a server
          fetch('https://api.example.com/data', {
                  method: 'POST',
                  headers: {
                      'Content-Type': 'application/json',
                  },
                  body: JSON.stringify({
                      key: 'value'
                  }),
              })
              .then(response => response.json())
              .then(data => console.log(data))
              .catch((error) => console.error('Error:', error));

          2. 理解 JavaScript 中的 ReadableStream ReadableStream 是 Streams API 的一部分,它提供了一種在 JavaScript 中處理流數據的方法。 流是允許您連續從源讀取數據或將數據寫入目標的對象。 簡而言之,流提供了一種在數據到達時進行逐段處理數據的方法,它比將整個數據塊加載到內存中更有效。 ReadableStream的應用

          • 獲取大型資源: 非常適合處理大型數據集或文件的場景,允許您在第一個塊可用時立即處理數據,而不是等待整個資源下載。
          • 實時數據: 對于需要實時數據處理的應用程序非常有用,例如實時音頻或視頻流。
          // Assuming fetch API supports streams
          fetch('path/to/text-file.txt')
              .then(response => {
                  const reader = response.body.getReader();
                  return new ReadableStream({
                      start(controller) {
                          function push() {
                              reader.read().then(({
                                  done,
                                  value
                              }) => {
                                  if (done) {
                                      controller.close();
                                      return;
                                  }
                                  controller.enqueue(value);
                                  push();
                              });
                          }
                          push();
                      }
                  });
              })
              .then(stream => new Response(stream))
              .then(response => response.text())
              .then(text => console.log(text))
              .catch(err => console.error(err));

          3. 模塊系統

          JavaScript 的模塊系統,例如 CommonJS 和 ES 模塊,改變了開發人員組織和重用代碼的方式。

          通過將代碼劃分為可管理的模塊,這些系統增強了代碼的可維護性、可讀性和可擴展性,從而使構建復雜應用程序變得更加簡單。

            // ES Modules example
            import {
                fetchData
            } from './api.js';
          
            fetchData().then(data => console.log(data));

          4. DOM(文檔對象模型) DOM 是 Web 文檔的編程接口。它代表頁面,以便程序可以更改文檔結構、樣式和內容。 DOM 將文檔表示為節點和對象,這樣編程語言就可以與頁面交互。 了解 DOM 對于操作網頁(包括動態添加、刪除或修改元素和內容)至關重要。

          // Accessing an element and changing its text content
            document.getElementById('demo').textContent = 'Hello, World!';

          5. 事件 事件是您正在編程的系統中發生的操作或事件,系統會告訴您這些信息,以便您可以根據需要以某種方式響應它們。 例如,事件可以是用戶交互(例如單擊和鍵入)或系統事件(例如資源加載)。 處理事件是創建交互式 Web 應用程序的基礎,它允許開發人員執行代碼來響應用戶操作。

          document.getElementById('myButton').addEventListener('click', function() {
              alert('Button clicked!');
          });

          6. 活動委托

          事件委托利用事件冒泡的概念向父元素添加單個事件偵聽器,而不是向各個子元素添加多個偵聽器。

          此策略優化了性能和內存使用,特別是在具有許多交互元素的動態應用程序中。

          document.getElementById('parent').addEventListener('click', (event) => {
              if (event.target.tagName === 'LI') {
                  console.log('List item clicked!');
              }
          });

          7. 內容安全策略 (CSP) 內容安全策略 (CSP) 是一種安全標準,旨在防止跨站點腳本 (XSS)、點擊劫持和其他代碼注入攻擊。 通過指定允許的腳本、樣式和其他資源源,CSP 可以幫助開發人員保護其 Web 應用程序免受惡意活動的侵害。 8. 漸進增強和優雅降級 漸進增強和優雅降級是旨在確保最廣泛的潛在受眾(例如還在使用老版本IE的客戶們)可以訪問 Web 應用程序的設計策略。 它專注于首先構建功能核心體驗,然后添加增強功能,而優雅降級則從完整體驗開始,并確保其在舊平臺上仍然可用。 9. JSON 廣泛使用的 JavaScript 術語 JSON 是一種輕量級數據交換格式,易于人類閱讀和編寫,也易于機器解析和生成。 它基于 JavaScript 的子集,但與語言無關,解析器幾乎適用于每種編程語言。 JSON 在現代 Web 開發中發揮著至關重要的作用,尤其是在 API 中,因為開發人員使用它來構造客戶端和服務器之間發送的數據。

          // JavaScript object
          const obj = {
              name: "John",
              age: 30,
              city: "New York"
          };
          
          // Converting JavaScript object to JSON
          const myJSON = JSON.stringify(obj);
          console.log(myJSON); // {"name":"John","age":30,"city":"New York"}
          
          // Parsing JSON to JavaScript object
          const myObj = JSON.parse(myJSON);
          console.log(myObj.name); // John

          10. AJAX(異步 JavaScript 和 XML) AJAX 是一組 Web 開發技術,允許 Web 應用程序從服務器異步發送和檢索數據,而不會干擾現有頁面的顯示和行為。 它可以讓您制作快速、動態的網頁。這意味著您可以更改頁面的部分內容,而無需重新加載整個頁面,從而提高用戶體驗。

          // Basic AJAX call using XMLHttpRequest
          const xhr = new XMLHttpRequest();
          
          xhr.open('GET', 'https://api.example.com/data', true);
          
          xhr.onload = function() {
              if (xhr.status >= 200 && xhr.status < 300) {
                  console.log('Success:', JSON.parse(xhr.responseText));
              } else {
                  console.error('Error:', xhr.statusText);
              }
          };
          
          xhr.onerror = function() {
              console.error('Request failed');
          };
          
          xhr.send();

          11. 閉包經常被誤解的 JavaScript 術語 閉包是 JavaScript 中的一項功能,其中內部函數可以訪問外部(封閉)函數的變量 - 作用域鏈。每次創建函數時,JavaScript 都會自動創建閉包。 這些閉包在函數創建時形成,封裝并保留函數的范圍以供將來使用。 這種機制對于理解 JavaScript 中函數如何與其周圍狀態交互至關重要,從而允許封裝和私有變量等強大模式。

          function makeGreeting(greeting) {
              return function(name) {
                  console.log(`${greeting}, ${name}!`);
              };
          }
          
          const sayHello = makeGreeting('Hello');
          sayHello('Alice'); // Outputs: Hello, Alice!

          12. 提升

          提升是 JavaScript 的默認行為,即將聲明移動到當前作用域的頂部(當前腳本或當前函數的頂部)。

          了解提升對于管理變量和函數聲明至關重要,有助于避免代碼執行流程中的常見陷阱。

          console.log(myVar); // undefined (not ReferenceError)
          var myVar = 5;
          
          hoistedFunction(); // Outputs: "This function has been hoisted."
          function hoistedFunction() {
              console.log('This function has been hoisted.');
          }

          13. 原型

          每個 JavaScript 對象都有一個原型。原型也是一個對象。所有 JavaScript 對象都從其原型繼承其屬性和方法。

          原型是 JavaScript 基于原型的繼承機制的核心,它允許對象擴展其他對象并共享功能。

          function Animal(name) {
              this.name = name;
          }
          
          Animal.prototype.speak = function() {
              console.log(`${this.name} makes a noise.`);
          }
          
          class Dog extends Animal {
              speak() {
                  console.log(`${this.name} barks.`);
              }
          }
          
          const dog = new Dog('Rex');
          dog.speak(); // Rex barks.

          14. 范圍

          范圍是當前執行的上下文。值和表達式在其中可見或可被引用或可被引用的上下文。如果變量或表達式不在當前范圍內,則它不可用。

          作用域控制變量和參數的可見性和生命周期,這是構建和控制程序流程的基礎。

          function outerFunction() {
              let outer = 'I am the outer function!';
          
              function innerFunction() {
                  console.log(outer); // Accesses outer function's variable
              }
          
              innerFunction();
          }
          
          outerFunction(); // Logs: I am the outer function!

          15. this

          在 JavaScript 中,this 是一個關鍵字,表示它所屬的對象。它的值根據其使用上下文動態變化。

          了解它在不同上下文中的行為方式是掌握 JavaScript 的關鍵,尤其是在面向對象編程和事件處理方面。

          const person = {
              firstName: "John",
              lastName: "Doe",
              fullName: function() {
                  return `${this.firstName} ${this.lastName}`;
              }
          };
          
          console.log(person.fullName()); // John Doe

          16. ES6/ES2015 及更高版本 ES6(或 ECMAScript 2015)是 JavaScript 的重大更新,引入了許多新功能,例如類、模塊、模板字符串、箭頭函數等。后續更新不斷增加功能。 熟悉 ES6 及更高版本對于編寫現代、高效、干凈的 JavaScript 代碼至關重要。

          const name = 'Alice';
          const greet = (name) => `Hello, ${name}!`;
          console.log(greet(name)); // Hello, Alice!

          17. 網絡存儲 API Web Storage API提供了兩種機制:localStorage 和 sessionStorage,用于在瀏覽器中存儲數據。 此功能使 Web 應用程序能夠在用戶會話期間存儲數據,從而增強用戶體驗,而無需依賴服務器存儲或 cookie。

          // Storing data
          localStorage.setItem('key', 'value');
          
          // Retrieving data
          const data = localStorage.getItem('key');
          console.log(data);

          18. 獲取 API

          Fetch API 提供了一種現代的、基于承諾的機制來發出網絡請求。

          此 API 簡化了對資源的 HTTP 請求和處理響應,代表了舊 XMLHttpRequest 方法的演變。

          fetch('https://api.example.com/data')
              .then(response => response.json())
              .then(data => console.log(data))
              .catch(error => console.error('Error:', error));

          19. 預檢請求 預檢請求是一種 CORS(跨源資源共享)請求,瀏覽器在執行可能對用戶數據產生影響的請求之前自動執行該請求。 具體來說,當請求使用 GET、HEAD 或 POST 以外的方法,或者使用具有某些 MIME 類型的 POST 或包含自定義標頭的請求時,會發生這種情況。預檢使用 OPTIONS 方法來檢查服務器是否可以安全發送實際請求。 跨不同域使用 API 和服務的開發人員必須主動了解預檢請求,以確保安全處理跨源請求。 20. CORS(跨源資源共享) CORS 是一種機制,它使用額外的 HTTP 標頭來告訴瀏覽器為在一個源運行的 Web 應用程序提供對來自不同源的選定資源的訪問權限。 它是一項安全功能,可防止惡意 Web 應用程序訪問其他應用程序的資源。 對于構建或使用 API 的開發人員來說,了解 CORS 對于管理如何從與資源本身域不同的域請求資源至關重要。

          const express = require('express');
          const app = express();
          
          app.use((req, res, next) => {
              res.header('Access-Control-Allow-Origin', '*');
              res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
              next();
          });
          
          app.get('/data', (req, res) => {
              res.json({
                  message: 'This is CORS-enabled for all origins!'
              });
          });
          
          app.listen(3000, () => {
              console.log('Server running on port 3000');
          });

          21. WebSockets:實時通信的重要 JavaScript 術語 WebSocket 通過單個長期連接提供全雙工通信通道,允許在保持連接打開的同時來回傳遞消息,這與 HTTP 的請求響應模型不同。 這些對于構建實時、交互式 Web 應用程序至關重要,例如需要即時客戶端-服務器通信的實時聊天和游戲應用程序。

          const socket = new WebSocket('wss://example.com/socket');
          
          socket.onopen = function(event) {
              console.log('Connection established');
              socket.send('Hello Server!');
          };
          
          socket.onmessage = function(event) {
              console.log('Message from server', event.data);
          };

          22. Service Worker Service Worker 是瀏?覽器在后臺運行的腳本,與網頁分開,為不需要網頁或用戶交互的功能打開了大門。如今,它們已經包含推送通知和后臺同步等功能。 服務工作者對于創建可靠、快速的 Web 應用程序和啟用離線體驗、后臺數據同步和網絡請求攔截等功能至關重要。

          if ('serviceWorker' in navigator) {
              navigator.serviceWorker.register('/sw.js').then(function(registration) {
                  console.log('Service Worker registered with scope:', registration.scope);
              }).catch(function(err) {
                  console.log('Service Worker registration failed:', err);
              });
          }

          23. 漸進式網絡應用程序 (PWA) PWA 是一種通過網絡交付的應用程序軟件,使用常見的網絡技術(包括 HTML、CSS 和 JavaScript)構建。 它們應該在使用符合標準的瀏覽器的任何平臺上運行,包括桌面和移動設備。 PWA 提供類似應用程序的用戶體驗,支持離線操作、后臺數據刷新、推送通知等功能,顯著增強移動用戶體驗。 24. Promise 和異步/等待 雖然前面提到過,但值得強調這些概念在處理JavaScript 中的 異步操作 時的重要性。 與回調等舊技術相比,Promise 提供了一種更干凈、更健壯的異步操作處理方式。 Async/await 語法提供了一種更簡單的方法來編寫異步代碼,使其外觀和行為類似于同步代碼。

          // Using Promises
          fetch('https://api.example.com/data')
              .then(response => response.json())
              .then(data => console.log(data))
              .catch(error => console.error('Error:', error));
          
          // Using async/await
          async function fetchData() {
              try {
                  const response = await fetch('https://api.example.com/data');
                  const data = await response.json();
                  console.log(data);
              } catch (error) {
                  console.error('Error:', error);
              }
          }
          
          fetchData();

          25. Tree Shaking Tree Shaking 是 JavaScript 和 Web 開發中常用的術語,用于描述在構建過程中從最終包中刪除未使用的代碼。 它有助于減小應用程序包的大小,從而縮短加載時間并提高性能。 26. SSR(服務器端渲染) SSR 在服務器上渲染網頁,而不是在瀏覽器中渲染它們。當用戶請求某個頁面時,服務器會生成該頁面的 HTML 內容并將其發送到用戶的瀏覽器。 SSR 允許搜索引擎對內容進行索引并提供更快的初始頁面加載,從而顯著提高 Web 應用程序的性能和 SEO。 27. CSR(客戶端渲染) CSR 是瀏覽器使用 JavaScript 呈現網頁的地方。系統不是從 HTML 文檔本身檢索所有內容,而是提供基本結構并使用 JavaScript 來填充內容。 CSR 可以帶來更加動態和交互式的 Web 應用程序,但需要考慮 SEO 和初始加載性能。 28. 虛擬 DOM 虛擬 DOM 是一些 JavaScript 框架(如 React)中使用的概念,用于提高應用程序性能和用戶體驗。 它是內存中真實 DOM 的輕量級副本,并且不是直接更新 DOM,而是首先對虛擬 DOM 進行更改,然后虛擬 DOM 有效地更新真實 DOM。 對于使用使用此概念來優化渲染過程的庫和框架的開發人員來說,了解虛擬 DOM 至關重要。 29. Webpack Webpack 是現代 JavaScript 應用程序的靜態模塊捆綁器。它處理應用程序并將所有文件(模塊)捆綁在一起。 了解 Webpack 對于旨在優化 Web 應用程序的加載時間和性能的開發人員非常重要。 30. Babel Babel 是一個 JavaScript 編譯器,它允許開發人員今天使用下一代 JavaScript。它將 ES6 及更高版本轉換為向后兼容的 JavaScript 版本。 Babel 對于確保 Web 應用程序可以在舊版瀏覽器上運行、增強兼容性和用戶覆蓋范圍至關重要。 31. NPM(節點包管理器) NPM 是世界上最大的軟件注冊中心,用于共享和借用 JavaScript 代碼包。 NPM 知識對于管理項目中的依賴關系、共享您自己的項目以及安裝實用程序和框架至關重要。 32. SPA(單頁應用程序) SPA 是加載單個 HTML 頁面并在用戶與應用程序交互時動態更新該頁面的 Web 應用程序。 SPA 提供類似于桌面應用程序的更流暢的用戶體驗,這對于構建交互式現代 Web 應用程序的開發人員非常重要。 33. SSG(靜態站點生成器) SSG 是基于原始數據和模板生成完整靜態 HTML 網站的工具。他們在構建時預渲染頁面。 SSG 因其速度、安全性和易于部署而越來越受歡迎,特別是對于博客、文檔和營銷網站而言。 34. JSONP(帶填充的 JSON) JSONP是一種發送JSON數據而不用擔心跨域問題的方法。它使用帶有回調函數的腳本標簽來接收數據。 雖然由于 CORS 和現代瀏覽器功能而有些過時,但理解 JSONP 對于處理遺留系統或作為 Web 開發歷史的一部分很有用。 35. 跨瀏覽器兼容性 跨瀏覽器兼容性可確保 Web 應用程序在不同的 Web 瀏覽器中正確且一致地運行。 解決兼容性問題對于吸引廣泛受眾至關重要,并涉及使用 Babel 等 JavaScript 轉譯工具和 polyfill 來模擬缺失的功能。 36. 環境變量 JavaScript 應用程序使用環境變量安全地管理配置設置和敏感信息。 特別是在 Node.js 這樣的服務器端環境中,環境變量允許開發人員將配置與代碼分開,從而增強安全性和靈活性。

          console.log(process.env.API_KEY);

          37. 網絡組件 Web 組件代表了一套不同的技術,允許開發人員通過封裝創建可重用的自定義元素。 這種現代的 Web 開發方法簡化了復雜界面的構建,促進了代碼重用和可維護性。 38. 錯誤處理 JavaScript 中有效的錯誤處理涉及優雅地預測和管理錯誤的策略。 使用 try/catch 塊、錯誤事件偵聽器和處理被拒絕的 Promise 都是編寫健壯、容錯代碼以增強應用程序可靠性和用戶體驗的關鍵實踐。

          try {
              // Code that may throw an error
          } catch (error) {
              console.error('Error caught:', error);
          }

          39. 回調地獄和承諾

          早期的 JavaScript 嚴重依賴回調來進行異步操作,由于深度嵌套的回調而導致回調地獄。

          Promise 是作為一種更簡潔的替代方案而引入的,允許更有效地鏈接和管理異步操作。

          // Callback Hell Example
          getData(function(a) {
              getMoreData(a, function(b) {
                  getMoreData(b, function(c) {
                      console.log(c);
                  });
              });
          });
          
          // Promises Example
          getData()
              .then(a => getMoreData(a))
              .then(b => getMoreData(b))
              .then(c => console.log(c))
              .catch(error => console.error(error));

          40. 無服務器功能

          無服務器功能允許開發人員運行后端代碼來響應 Web 應用程序觸發的事件,而無需管理服務器基礎設施,并根據需求自動擴展。

          // Example of a serverless function in AWS Lambda (Node.js)
          exports.handler = async (event) => {
              return {
                  statusCode: 200,
                  body: JSON.stringify({
                      message: "Hello World"
                  })
              };
          };

          41. 網絡組裝(WebAssembly)

          WebAssembly (Wasm) 支持瀏覽器中的高性能應用程序,允許開發人員使用 C++ 等語言來完成需要計算強度的 Web 開發任務。

          // Loading a WebAssembly module example
          WebAssembly.instantiateStreaming(fetch('module.wasm'), {})
              .then(result => {
                  // Use exported Wasm functions
              });

          42. 輔助功能 (A11y)

          確保 Web 應用程序的可訪問性可以讓盡可能多的人(包括殘疾人)使用它們。JavaScript 可以通過動態更新 ARIA 屬性來增強可訪問性。

          // Dynamically updating ARIA attributes with JavaScript
          document.getElementById('menu').setAttribute('aria-expanded', 'true');

          43. 國際化和本地化

          要為全球受眾準備應用程序,必須將其國際化,以便可以輕松地將其本地化為不同的語言和文化。

          // Example of internationalizing dates in JavaScript
          const date = new Date();
          const options = {
              year: 'numeric',
              month: 'long',
              day: 'numeric'
          };
          console.log(new Intl.DateTimeFormat('en-US', options).format(date));

          44. CRUD 基本 JavaScript 術語 CRUD是指持久化存儲的四個基本操作。它是關系數據庫應用程序中實現的典型操作的助記符。 了解 CRUD 操作是任何使用數據庫或任何形式的數據存儲的開發人員的基礎,因為它涵蓋了您可以對數據執行的基本操作。 45. 性能優化技術 優化 JavaScript 性能涉及延遲加載組件、代碼分割和優化依賴項等技術,以使 Web 應用程序更快、響應更快。

          // Lazy loading a module with dynamic imports
          import('path/to/module').then(module => {
              module.doSomething();
          });

          ( 總結 ) 關于 JavaScript 基本術語的一些想法 本文涵蓋了從每個 Web 開發人員都會遇到的基本元素(如有效負載和 DOM)到更復雜的概念(如事件循環和原型繼承)。 JavaScript 是現代 Web 開發的心臟,理解其關鍵術語類似于掌握 Web 語言。


          主站蜘蛛池模板: 国产福利一区二区在线视频| 日韩免费无码一区二区三区| 波多野结衣精品一区二区三区 | 色噜噜狠狠一区二区三区| 亚洲一区在线视频观看| 无码人妻精品一区二区蜜桃AV| 久久国产精品亚洲一区二区| 国产成人一区二区精品非洲 | av无码免费一区二区三区| 国产一区二区三区精品久久呦| 国产免费播放一区二区| 久久人妻内射无码一区三区| 蜜桃视频一区二区三区在线观看 | 亚洲色大成网站www永久一区| 亚洲av色香蕉一区二区三区| 日本在线视频一区二区三区 | 成人在线视频一区| 亚洲一区日韩高清中文字幕亚洲| 伊人精品视频一区二区三区| 国产天堂在线一区二区三区| 亚洲一区二区三区国产精品| 午夜性色一区二区三区免费不卡视频| 国产乱码精品一区二区三| 久久亚洲综合色一区二区三区| 久久国产视频一区| 国产一区二区三区免费观看在线| 精品一区二区三区自拍图片区| 亚洲Av无码国产一区二区| 日本午夜精品一区二区三区电影| 玩弄放荡人妻一区二区三区| 国偷自产视频一区二区久| 中文字幕精品无码一区二区| 理论亚洲区美一区二区三区| 精品一区二区视频在线观看| 成人国产精品一区二区网站| 国产精品自拍一区| 欲色aV无码一区二区人妻| 日韩十八禁一区二区久久| 亚洲日本一区二区| 无码福利一区二区三区| 国产一区二区精品久久凹凸|