百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

五个强大的 JavaScript 特性技巧_java五个基本运算符

yund56 2025-02-25 00:34 23 浏览

作者 | Alexander T. Williams

译者 | 明知山

策划 | Tina

JavaScript 是现代 Web 开发中一个必不可少的工具,它不断发展和演变,不断建立新的标准。在本文中,我们专注于介绍五种前沿的 JavaScript 技术,向开发者展示构建高交互性和高性能动态 Web 应用程序的创新性方法。从单子(Monad)到模式匹配,我们将带你了解最新、最伟大、适用于高级开发者的 JS 技术。


为什么 JavaScript 如此流行?


JavaScript 因其灵活性获得了巨大普及,并成为世界上使用最为广泛的编程语言。JS 通常被用于构建具有高交互性的动态 Web 应用程序 —— 例如实时更新、直观、功能丰富的用户界面等。此外,JavaScript 还允许应用程序跨平台运行。


JS 可用于各种项目,例如为电子商务服务提供支持或制作动画和手机游戏。然而,这只是 JavaScript 能力的一个缩影。我们还看到 JS 被用于企业环境中,特别是在关键的 ERP 过程中,如 SAP 人员增补,它允许在原生 Web 平台之上创建自定义仪表盘和 UI。


许多领先的平台,如 Facebook,使用了开源用户界面框架 React Native,它就是基于 JavaScript 构建的。这使得他们能够在使用单一代码库的情况下构建可同时在 iOS 和 Android (甚至是 Apple Vision Pro)上运行的移动应用程序。其结果就是开发时间大大缩短,使用的资源更少,所有平台和设备上的用户体验都保持一致。


服务器端运行时环境(如 Node.js)让 JavaScript 可以在 Web 浏览器之外运行,这进一步提升了应用程序的可扩展性和部署可能性。为了使 JS 更加通用和强大,大量 JS 兼容的 API 将 Web 应用程序链接到了外部服务。


最后,JavaScript 生态系统有了众多强大的库和框架,这有助于简化和加速开发,使开发者能够选择预先写好的代码来执行特定的功能。


五大前沿 JavaScript 技术


我们选择了开发者在使用的五种前沿的 JavaScript 技术,希望可以帮你解决一些开发问题,构建更有效、用户友好的应用程序。


1.单子(异步操作)


单子可用于组合需要上下文的函数,并返回一个值,它在简化错误管理和减少意外结果方面非常有效。


单子就是让代码中的函数组合变得尽可能简单。它们通常用于构建对精度要求很高的企业级应用程序。单子使代码更易于管理,从而可以实现更复杂的回调、嵌套条件分支等。本质上,单子就是让代码中的函数组合尽可能简单。


单子可以分为三种类型的函数组合:


函数映射:a => b


带上下文的函数映射:Functor(a) => Functor(b)


单子扁平化(从上下文中解包值)并带上下文的函数映射:Monad(Monad(a)) => Monad(b)


函数组合是创建函数管道的基础,可以实现高效的数据流。管道的第一个阶段是输入,最后一个阶段是经过转换的输出。为了实现管道,每一个阶段都必须能够预测到前一个阶段将返回的数据类型。


这时候单子就可以发挥作用,它们能够有效地映射函数并创建智能的管道。它们 与 Promise 的工作方式类似,并且可以无缝地放在一起使用。


下面是一个使用单子从 异步 API 获取用户数据,然后将用户数据传给另一个异步 API 执行计算的示例:


  const composeM = chainMethod => (...ms) => (    ms.reduce((f, g) => x => g(x)[chainMethod](f))  );  const composePromises = composeM('then');  const label = 'API call composition';
  // a => Promise(b)  const getUserById = id => id === 3 ?    Promise.resolve({ name: 'Kurt', role: 'Author' }) : undefined;
  // b => Promise(c)  const hasPermission = ({ role }) => (    Promise.resolve(role === 'Author')  );
  // Compose the functions (this works!)  const authUser = composePromises(hasPermission, getUserById);  authUser(3).then(trace(label)); // true

复制代码


2.声明式编程


当开发者希望代码更简洁、更具表达性时,通常会使用声明式方法。JavaScript 的声明式编程关注的是代码的总体目标,而不是如何实现这些目标。这使得代码更简单、更易读,也更易于维护。当开发者希望代码更简洁、更具表达性以快速交付项目时,通常会使用声明式方法。


我们将声明式方法与命令式方法做一番比较:


命令式:




function evenSum(numbers) {
    let result = 0;


    for (let i = 0; i < numbers.length; i++) {
        let number = numbers[i]
        if (number % 2 === 0) {
            result += number;
        }
    }


    return result;
}function evenSum(numbers) {let result = 0;
for (let i = 0; i < numbers.length; i++) {
    let number = numbers[i]
    if (number % 2 === 0) {
        result += number;
    }
}


return result;

复制代码


声明式:


const evenSum = numbers => numbers    .filter(i => i % 2 === 0)    .reduce((a, b) => a + b)

复制代码


3. 用于提高 Node.js 性能的服务器端缓存


服务器端缓存可用于根据使用情况自动伸缩资源。


缓存并不是什么新鲜事物,也不会被认为是什么前沿技术,但由于客户端和服务器端 Web 应用程序都可以使用缓存,因此它成了一个强大的提升性能的工具,特别是服务器端缓存可以通过加速数据检索来提高 Node.js 的性能。


我们来看一个使用内存缓存技术的例子:


const cache = require('memory-cache');
function getDataFromCache(key) {  const cachedData = cache.get(key);  if (cachedData) {    return cachedData;  }
  // If data is not in cache, fetch it from the source  const data = fetchDataFromSource();
  // Store data in cache for future use  cache.put(key, data, 60000); // Cache for 60 seconds
  return data;}

复制代码


服务器端缓存可以用于根据使用情况自动伸缩资源。AWS Lambda、Azure Functions 或 Google Cloud Functions 可以通过编程动态调整服务,而 AWS JavaScript SDK 允许你监控使用情况、优化云成本和自动伸缩资源,确保只为所需资源付费。


4. 不可变性


不可变性是指不能被改变的东西。在 JavaScript(以及一般的编程)中,它指的是在设置后就不能被修改的值。由于应用程序不断变化和更新,不可变性看起来似乎是不必要的 —— 但事实并非如此。


不可变性可以减少调试和意外结果。


数据的不可变性很重要,因为它有助于通过代码库实现一致性,并有助于状态管理。创建新值,而不是修改已存在的值,这让事情变得更可预测,从而减少错误 —— 比如当数据结构被意外修改时发生的错误。这样可以减少调试和意外结果。


将不可变性用于命名变量的示例:


// Import stylesheetsimport './style.css';
// Write JavaScript code!const appDiv = document.getElementById('app');appDiv.innerHTML = `

Open the console to see results

`; class Person { //_name = "Nee"; //_name = ["Nee", "Ra"]; _name = { first: "Nee", middle: "L" }; get name() { return this._name; } set name(value) { console.log('In setter', value); this._name = value; }} let p = new Person();//p.name = "Ra"; // Setter executes//p.name.push("Lee"); // Setter doesn't execute//p.name = [...p.name, "Lee"]; // Setter executes//p.name.middle = "Lee"; // Setter doesn't executep.name = { ...p.name, middle: "Lee" }; // Setter executes

复制代码


不可变性是一项重要的技术,已经越来越多地被用在数据科学任务和人工智能项目中,这再次证明 JavaScript 无法处理的问题越来越少了


5. 模式匹配


模式匹配是一种条件分支,它可以在绑定变量的同时简洁地匹配数据结构模式。在编写 XSLT 样式表转换 XML 文档时,通常可以使用模式匹配。


模式匹配比标准的 switch 语句高效得多。


当需要匹配一个值与给定模式时,模式匹配比标准的 switch 语句更加高效,它提供了更多的控制,让开发者可以编写更复杂的表达式。


下面是使用 JUnify 库实现阶乘函数的示例,其中就用到了匹配模块:


match = function () {  var unify = unification.unify;
  function match_aux(patterns, value) {    var i, result;
    for (i = 0; i < patterns.length; i += 1) {      result = unify(patterns[i][0], value);      if (result) {        return patterns[i][1](result);      }    }    return undefined;  }
  return function(patterns, value) {    return match_aux(patterns, value);  };}();
var fact = function (n) {  return match([    [0, function() { return 1; }],    [$('n'), function(result) {      return result.n * fact(result.n - 1);     }]  ], n);};

复制代码


结 论


JavaScript 不仅灵活、多功能性,还可以部署在各种平台上。通过使用上述技术,开发者可以为他们的应用程序开发出功能强大且简洁的代码。


原文链接:

https://thenewstack.io/top-5-cutting-edge-javascript-techniques/


声明:本文为 InfoQ 翻译整理,未经许可禁止转载。

原文链接:五个强大的 JavaScript 特性技巧_后端_InfoQ精选文章

相关推荐

分享|最美色彩!40张纯迷彩高清原图壁纸送给你

最美的色彩是什么?对于军人来说是迷彩那是青春的本色是理想、使命的颜色40张纯迷彩高清原图壁纸送给你so快来收图!!军报记者微信发布作者:剑客小吉;编辑:王旭;编审:曲延涛;投稿邮箱:jfjbwx@16...

你还在用百度搜图?推荐5个图片素材库,你要的图片都有!

自媒体运营人每天都需要进行内容创作,所以少不了图片、视频、文案素材等,那么这些自媒体素材哪里找呢?今天,就给大家分享5个图片和视频素材库,文案素材下期再给大家详细介绍。图片和视频素材现在已经是做短视频...

《2》图片原创无版权素材

粉樱于雨中轻轻摇曳,花瓣飘呀飘的,落在小径上、湖面上,将世界晕染成柔和的粉色。雨滴似银线,串联起天空与湖水,古亭在一旁静静凝望,连空气都透着甜意。我们一直在寻觅“诗意”的模样,原来就是这般——有落花纷...

太美了!100个令人窒息的绝美风景摄影照

全网最全的图片素材网站分享!任意下载!值得收藏!

自媒体时代,很多内容创作者都需要高清的图片资源。因为图片不清晰会带来不好的用户体验~众所周知,从网上下载的图片一般都是有版权的!如果你直接下载使用,可能会有侵权的风险!今天为了帮助大家解决图片问题,今...

中秋节素材(海报+插画)!绝景良时难再并

部分预览随机选取中秋节素材(海报+插画)(仅供会员下载)...

10张早上好美图,早安祝福语和祝福图片选集

每天准时分享接收:早安问候图片、漂亮的早安图片、问候祝福语、动态聊天表情包等等每日的祝福准时送达,愿你用满满的正能量开启新的一天。美满,是日常的点点汇聚;情谊,是时光的悠悠长卷;一声招呼,穿越五湖四海...

晚安心语正能量经典素材带图片,让你一见倾心

一、没事的,每个人大概都会经历一些情绪崩溃或者极端的时刻,会好的,会熬过来的。二、以后,只对两种人好,一种是对我好的人,一种是懂得我的好的人,一个人的温暖也是有限的啊,一点都不能浪费。三、要钱,就要努...

太厉害了,52种科幻画主题创意素材,极其脑洞大开,科技创新未来

图片来自网络,仅作分享,如有侵权请联系删除哦...

综合绘画素材—29张冬天主题绘画素材,一起来画你心中的冬天呀

图片来自,仅作分享,如有侵权请联系删除哦...

20张彩色线描装饰画素材!一起欣赏线条带来的艺术美呀!

图片来自网络,仅作分享,如有侵权请联系删除哦...

国外的免费素材网站!这3个大神私藏款,你还没用过?

做PPT没素材?去网上找了半天,浪费时间不说,大部分还收费,等于白忙活!不少小伙伴也问我有没有免费好用的素材网站,这不就来了。今天和大家分享3个国外的素材网站,关键是免费又高质量。不管是PPT设计还是...

8个高清无版权的图片资源网站,质量高又免费,够你用一辈子

很多时候我们找素材总是要花费很多时间,今天就给大家分享8个,高清无版权的图片资源网站,质量高又免费,够你用一辈子。01*Logosc链接:https://www.logosc.cn/so/这是一个免版...

100种超萌手帐素材简笔画,小白看一遍也能学会

手帐素材集中营:天气、美食、植物花草、动物、人物、乐器都在这里。一次画个够,转存轻松做手帐~爱画画,爱生活~...

超治愈萌系手帐素材大全 美食旅游花草人物花边都备齐了

现代人每天都生活在一个充满焦灼感的空气中,成年人的世界里,每个人都不容易。不论是生活还是工作,都充满了各种挫折。很少有人能一帆风顺,为学习、为工作、为家庭、为感情、我们总会在坎坎坷坷中成长,难免会觉得...