Node.js 是 Perl 和 Python 等传统脚本语言的可行替代品吗? [关闭]

2023-12-21

最近,我不再喜欢 Perl 作为一种跨平台通用脚本语言,Python 和 Ruby 也不再真正吸引我。

但我对浏览器中的 JavaScript 越来越熟悉,它在 V8 等当代引擎中获得了相当好的性能,而且 Node.js 已经真正起飞了几年。

但 Node.js 主要用于服务器端网络编程。正如它在主页上声明的那样:

基于V8的事件驱动I/O服务器端JavaScript环境。

我想知道 node.js 目前是否也适合作为 *nix 和 Windows 上的通用脚本语言,作为 Perl、Python 和 Ruby 的替代品。

我没有发现太多关于它以这种方式使用的讨论,但它似乎确实有一个广泛的社区,而且我没有注意到任何说它不适合这种用途的说法。这种方式广泛使用吗?或者它是否缺乏此类事物的关键功能或模块?


就 Node.js 而言,我看不到它成为使用 javascript 作为通用脚本语言的主流方式。主要原因是 Node.js 中 99% 的库和函数都具有异步性质。由于异步的性质,你必须彻底改变你的想法。没有可用的同步方法是绊脚石。它使事情变得不那么脚本化,因为你的代码不再是线性的。

所以采用并没有发生,原因很简单,大多数时候你都在想:我可以用 Ruby/Python/... 更快/更简单地编写这个文件(只需尝试下载 5 个不同的文件,压缩它们并复制它们使用 Node.js 到另一个文件夹)

随着人们越来越习惯以异步方式思考和编程,node.js 作为通用脚本工具的采用可能会发生变化。

如果 Node 中的每个异步函数都有一个同步版本,那么采用情况就会有所不同,人们最终会得到不可扩展的 Node.js 服务器,因为他们选择在某些地方使用同步方法。可以说,节点不会变得流行,因为性能数据不会使其脱颖而出。

简而言之:

Node.js 之所以被采用,是因为它具有异步特性。 由于缺乏同步功能,Node.js 并没有被采用作为客户端通用脚本工具。

请记住,这是基于我自己的经验和观点,而不是我在互联网上找到的文章或数字,因此请亲自尝试并提出自己的观点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node.js 是 Perl 和 Python 等传统脚本语言的可行替代品吗? [关闭] 的相关文章

  • 未捕获(承诺中)DOMException:注册失败 - 清单为空或丢失

    我正在尝试使用 Polymer 实现推送通知 我跟着这个链接 https developers google com web fundamentals getting started push notifications 并能够让服务人员注
  • 如何制作可扩展的文本框?

    我想制作一本以给定宽度 高度开始的教科书 然后 如果用户输入的内容超过给定的空间量 文本框就会向下扩展 我该怎么做呢 我使用 CSS 吗 当用户超过允许的行数时 基本文本框仅显示滚动条 如何使文本框将行数再扩展 5 行
  • 通过span标签动态包装js字符串,这可能会在React中危险地渲染

    我有一个字符串 我想使用 aria label 标签将 span 标签单独添加到字母表中 最终结果将在 React 中危险地呈现 请指教 这就是我所拥有的 const str D C B B const addAriaLabels str
  • JSON数据通过JS/AJAX转化为PHP

    Goal 我正在使用 coinmarketcap com API link https api coinmarketcap com v1 ticker convert EUR 预先我将他们的数据转换成 PHP 样本 现在我想使用AJAX J
  • 空 JavaScript 数组的布尔值冲突

    谁能解释为什么以下两个陈述都评估为true false and 这个问题纯粹是出于对为什么会发生这种情况的好奇 而不是关于如何最好地测试数组是否为空 第一个 false The 运算符对其操作数进行类型转换 在这种情况下 两边都转换为 Nu
  • 从谷歌加载 jquery 不起作用(对我来说)

    啊 我是个可怜的菜鸟 下面的 html 文档没有提醒任何人我的求助 有人知道为什么吗 这对我有用
  • Node JS,延迟响应

    var http require http var s http createServer function req res res writeHead 200 Content Type text plain res write Hello
  • 谷歌地图 - 缩放时保持居中

    在 Google 地图中 我希望在放大或缩小时能够将地图中心保持在我所在位置的标记上 这是 Ingress 所做的事情 无论您在何处双击 或双击 或在何处捏合 地图都会保持以标记为中心 所以有可能 我现在想到的最好的是 google map
  • Mac OS X 的自动热键替代品? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • @deprecated 的 mergeLatest 重构 - 不再支持 resultSelector,而是通过管道传输到映射吗?

    角度材料文档应用程序包含以下代码片段 Combine params from all of the path into a single object this params combineLatest this route pathFro
  • JavaScript 在对象中创建数组并将数据推送到数组

    我是编程新手 我正在尝试 React 并具有函数 addComment 当用户向新闻添加评论时执行该函数 此时我需要创建一个属性comments 数组 并分配或推送到该数组输入评论值价值 但现在我只重写了数组的 0 个元素 无法添加新元素
  • Vue.js:折叠/展开父级中的所有元素

    我需要为我的 Vue 组件 一些可折叠面板 添加 展开 折叠全部 功能 如果用户单击折叠按钮 然后单击某个面板并将其展开 然后单击折叠按钮不会做任何事因为观看的参数不会改变 那么如何正确实现此功能 按钮必须始终折叠和展开组件 我准备了简单的
  • JS - 文件读取器 API 获取图像文件大小和尺寸

    您好 我正在使用以下代码来使用文件读取器 API 获取上传图像
  • 这种日期时间格式有简单的转换吗?

    我正在使用 jQuery 从 JSON feed 中检索数据 并且作为 feed 的一部分 我获得了 datetime 属性 例如 2009 07 01 07 30 09 我想将此信息放入 javascript Date 对象中以方便使用
  • 客户端与服务器端图像压缩[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在研究用户可以上传图片的东西 图像大小不受限制 现在我有两个选择使用PHP 服务器端 压缩图像或使用
  • 恢复console.log()

    由于某种原因 附带的原型框架 或其他 JavaScript 代码 Magento http en wikipedia org wiki Magento正在替换标准控制台功能 所以我无法调试任何内容 在 JavaScript 控制台中写下co
  • 检测 html 元素内的用户选择

    如何检测用户选择 用鼠标突出显示 是否在某个元素内 某个元素的子元素 Example div sdfsdf div some span content span div sdfsd div 伪代码 if window getSelectio
  • chrome 扩展脚本在某些页面上加载两次甚至更多

    这是我的background js 文件 chrome tabs onUpdated addListener function tabId info tab var sites new Array site2 site1 var url t
  • 找到每个元素的所有父元素

    我正在尝试创建一个面包屑而不使用 url 路由提供者 并且不使用 jQuery 我有一棵这样的树 Humans Trees Animals Cats Lions Dogs Terrier Bulldog Cocker Cars 我希望当我点
  • 流星与承诺

    我一直在尝试养成使用 Promise 的习惯 但在尝试在 Meteor 上下文中的服务器端代码中使用它们时遇到了问题 这就是问题 if Meteor isServer Meteor startup function code to run

随机推荐

  • 检查controller Rails中redirect_to之前url的状态码

    我有行动check status in instances controller 我想在redirect to之前检查URL的状态代码 if status code是 200 重定向到它 否则转到查看页面 这是伪代码check status
  • 实体框架查询性能与原始 SQL 执行存在极大差异

    我有关于实体框架查询执行性能的问题 Schema 我有一个这样的表结构 CREATE TABLE dbo DataLogger ID bigint IDENTITY 1 1 NOT NULL ProjectID bigint NULL CO
  • 在序言中拆分列表和迭代

    我试图做一些看似非常简单的事情 但我无法理解 我想从给定的谓词中拆分序言中的列表并迭代对象 例子 object properties jackass comedy australian object properties the godfa
  • VB 6 检查网络上的文件是否存在花费太长时间

    以下代码 If FileExists XCustPath XCust dat Then XCustRun End If 和这段代码 Public Function FileExists ByVal Fname As String As Bo
  • 如何找出当前运行的express应用程序的NODE_ENV?

    我只是想知道我是否能找出当前的价值是多少NODE ENV 即开发或生产 在快速代码中 所以我不能使用app configure production function Try process env NODE ENV 它应该可以解决问题
  • 按日期访问累计总数

    我需要按在线日期显示我们所有能源项目的累积功率 因此 如果一个项目在 2016 年上线 那么它也在 2017 年和 2018 年上线 应该计入这些总数中 我基本上需要一张可以回答问题的表格 What was our energy capac
  • jQuery 在 if 语句中使用“this”

    我正在使用一个if语句以确定元素是否有子元素 如果它没有任何子元素 我只想对该元素做一些事情 这是我想做的事情的前提 if div a children length gt 0 this hide 所以如果一个 a 标签没有子元素 我想对该
  • 将 JSON 作为类型导入

    如何定义导入的 json 的类型 例如 things foo interface Data things String another String import data from data json Should have type D
  • C++ 无法更改对象的变量

    class ship public int location int length void createship ship ship1 int gridsize function to set ship1 s length and loc
  • 如何删除列表中的复选框

    我懂了堆栈闪电战 https stackblitz com edit list examples file app 2Fselection list 2Fselection list component html具有选择的列表的示例 如下图
  • URLLoader 轮询时卡住

    更新 不知怎的 这在浏览器中运行 flash 时有效 但如果从 IDE 运行则不起作用 如果您遇到同样的问题 您可能想尝试在浏览器中运行 我正在制作一个聊天应用程序 它使用 Flash 和 Actionscript 3 0 从我的服务器重复
  • List.permute 的性能

    我实现了一个费舍尔 耶茨洗牌 http en wikipedia org wiki Fisher E2 80 93Yates shuffle The modern algorithm最近 它使用List permute对列表进行洗牌 并注意
  • 如何使用类似 SQL 的接口 INSERT 到 influxDB 中?

    是否有可能INSERT使用 InfluxDB 上类似 SQL 的接口将数据转换为系列 测量值 是的 您可以简单地INSERT线路协议字符串 https docs influxdata com influxdb v1 6 tools shel
  • 在 JavaScript 对象中将键值分配给另一个键值[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 例如 我知道可以在 Javascript 中设置带有前面键值的键值 var obj one yes two obj one obj two
  • 在 Joomla 中加载另一个模块中的模块

    我绝对是 Joomla 的初学者 我正在尝试在另一个模块中加载一个模块 但我找不到如何执行此操作 我一直在尝试添加 loadposition position 用 position 替换了我想要加载的模块的位置 但它似乎只在文章中起作用 我
  • StatelessSession 在 AbstractEntityPersister (Hibernate) 中被转换为 Session

    我正在尝试对 StatelessSession 进行简单的保存 有人能发现我做错了什么 导致 Hibernate 方法尝试将 StatelessSession 无效转换为 Session 如果有任何反馈 我将不胜感激 我的示例代码 Stat
  • python-click:格式化帮助文本

    这个问题是关于click https click palletsprojects com en 7 x 包裹 帮助的长文本未按预期显示 我尝试使用 b也一样 但似乎影响不大 cmd and powershell相同的代码有不同的结果 为什么
  • 在图像opencv上绘制矩形?

    我已经使用 python 中的 opencv 库加载了一个图像 现在我想使用鼠标绘制一个矩形 但是在绘制矩形时 矩形应该是可见的 以便绘制它的人可以以某种方式放置它 使感兴趣的对象完全可见在矩形中 但我的代码没有产生所需的输出 我的代码是
  • JQuery $('iframe').ready 为什么不起作用?

    我的父页面中有一个很长的 iframe 当您重新加载或单击 i 框架页面内的链接时 它会加载到其中 但纯窗口必须向上滚动 我尝试过各种代码示例 jquery哪个事件比这个更好 https stackoverflow com question
  • Node.js 是 Perl 和 Python 等传统脚本语言的可行替代品吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi