言
可能你会很熟练,但名称不一定知道。
正文从这开始~~
让我们谈谈什么是: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 是最常见的格式之一,因为它具有轻量级且易于解析的结构。 为什么有效负载很重要?
// 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));
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!');
});
事件委托利用事件冒泡的概念向父元素添加单个事件侦听器,而不是向各个子元素添加多个侦听器。
此策略优化了性能和内存使用,特别是在具有许多交互元素的动态应用程序中。
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!
提升是 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.');
}
每个 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.
范围是当前执行的上下文。值和表达式在其中可见或可被引用或可被引用的上下文。如果变量或表达式不在当前范围内,则它不可用。
作用域控制变量和参数的可见性和生命周期,这是构建和控制程序流程的基础。
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!
在 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);
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);
}
早期的 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));
无服务器功能允许开发人员运行后端代码来响应 Web 应用程序触发的事件,而无需管理服务器基础设施,并根据需求自动扩展。
// Example of a serverless function in AWS Lambda (Node.js)
exports.handler = async (event) => {
return {
statusCode: 200,
body: JSON.stringify({
message: "Hello World"
})
};
};
WebAssembly (Wasm) 支持浏览器中的高性能应用程序,允许开发人员使用 C++ 等语言来完成需要计算强度的 Web 开发任务。
// Loading a WebAssembly module example
WebAssembly.instantiateStreaming(fetch('module.wasm'), {})
.then(result => {
// Use exported Wasm functions
});
确保 Web 应用程序的可访问性可以让尽可能多的人(包括残疾人)使用它们。JavaScript 可以通过动态更新 ARIA 属性来增强可访问性。
// Dynamically updating ARIA attributes with JavaScript
document.getElementById('menu').setAttribute('aria-expanded', 'true');
要为全球受众准备应用程序,必须将其国际化,以便可以轻松地将其本地化为不同的语言和文化。
// 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 语言。
*请认真填写需求信息,我们会在24小时内与您取得联系。