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 等传统脚本语言的可行替代品吗? [关闭] 的相关文章

  • 作为 Visual Studio Team Services 构建任务的一部分运行“节点测试”,结果显示在“测试”选项卡中

    我有一个项目 其中包含我从命令行使用 Mocha 运行的测试 我已经在我的中设置了一个测试脚本packages json 如下所示 test mocha spec js reporter dot require jsdom global r
  • 如何根据按钮单击折叠和展开 Kendo UI 树视图中的所有树节点?

    这是行不通的 您可以使用此代码 1 崩溃 折叠kendoTree查看文档 http docs kendoui com api web treeview methods collapse treeview kendoTreeView var
  • 检查 DOM 元素是否为复选框

    如何检查给定的 DOM 元素是否为复选框 设想 我有一组文本框和复选框 其中的值是动态分配的 我没有办法识别 DOM 元素是复选框还是文本框 只使用普通的 javascript 你就可以做到 if el type el type check
  • 通知用户消息仍在输入中

    我正在使用 Laravel 5 6 7 Socket IO 和 vue js 我没有使用 Pusher 和 redis 下面是我的代码 用于向与我一对一聊天的用户发送消息 var url http localhost 6001 apps M
  • 来自 DataURL 的 Blob?

    Using FileReader s readAsDataURL 我可以将任意数据转换为数据 URL 有没有办法将数据 URL 转换回Blob使用内置浏览器 API 的实例 用户 Matt 一年前提出了以下代码 如何在javascript中
  • 未捕获的类型错误:this.props.signinUser 不是一个函数(…)

    src actions index js import axios from axios const ROOT URL http localhost 3090 export function signinUser email passwor
  • 是否可以将反应组件导出为非反应项目中的函数

    有没有办法在非 React 项目中将 React 组件导出为函数并传入 props 作为函数的参数 我最近用 create react app 完成了一个 React 项目 现在我想将它用于其他非 React 项目 纯 Javascript
  • 为什么将数据存储为元素的属性存在风险?

    我一直在读同样的东西 直接在 DOM 元素上存储属性值是有风险的 因为可能会发生内存泄漏 但有人可以更详细地解释这些风险吗 按属性 我假设您指的是 DOM 元素上的属性 DOM 元素上的自定义属性安全吗
  • JQuery 动画文本

    找到简单 简单的动画文本是非常困难的 喜欢这个网站上的 内爆 http codecanyon net item jquery text animation full screen preview 233445 http codecanyon
  • 使用 jQuery 仅从字符串末尾修剪空格

    我知道 jQuery trim 函数 但我需要的是一种仅从字符串末尾修剪空格的方法 而不是开头 So str this is a string 会成为 str this is a string 有什么建议么 Thanks 您可以使用正则表达
  • 光滑的轮播缓动示例

    我正在使用 Slick Carousel http kenwheeler github io slick http kenwheeler github io slick 但不知道如何合并不同的幻灯片切换 有人有例子可以分享吗 这是我目前拥有
  • setInterval 内的返回值

    我想在 setInterval 内返回一个值 我只想以一定的时间间隔执行一些操作 这就是我尝试过的 function git limit var i 0 var git setInterval function console log i
  • 将 NPM 包客户端与 nuxt 结合使用

    我对 nuxt 和 javascript 非常陌生 我正在尝试弄清楚如何在客户端使用我的应用程序的依赖项 我将它们列在我的 nuxt config js 中并使用 npm 安装 我也有一个文件 plugins导入它们的目录 不确定这是否好
  • 将 JavaScript 引擎嵌入到 .NET 中 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 只是想知道是否有人尝试过将任何 js 引擎嵌入并实际集成到 net 环境中 我可以找到并实际使用 经过L
  • 使用 JavaScript 的计时器

    我想使用java脚本实现计时器 我想随着间隔的变化而减少计时器 Example假设我的计时器从 500 开始 我想要根据级别减少计时器 例如1 一级定时器应减1 且递减速度应较慢 2 2级定时器应递减2 递减速度应为中等3 3级定时器应减3
  • Window 与 Var 声明变量[重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript 中使用 var 和不使用 var 的区别 https stackoverflow com questions 1470488 difference between using v
  • 为什么我需要 $(document.body) 来使用 Mootools Element 方法扩展 document.body?

    因此 在尝试让我的应用程序在最新的 IE 上运行后 结果发现 IE 不喜欢以下代码 document body getElement className Firefox 和 Chrome 响应良好 但是document bodyIE 上没有
  • Nodejs MaxListenersExceeded警告

    我有一个错误 我不知道如何解决它 这种情况只发生几次 错误信息 node 9140 MaxListenersExceededWarning Possible EventEmitter memory leak detec ted 11 err
  • 如何在粘贴时获取文本区域输入字段的新值?

    我发现当我尝试从文本区域字段读取值时onpaste调用函数时 我得到字段的旧值 粘贴操作之前的值 而不是新值 粘贴操作之后的值 以下是此行为的演示 http jsfiddle net qsDnr http jsfiddle net qsDn
  • 在 Google Apps 脚本中的文本前插入换行符

    我需要在 Google 文档中的某些文本之前插入一些换行符 尝试过这种方法但出现错误 var body DocumentApp getActiveDocument getBody var pattern WORD 1 var found b

随机推荐

  • 检查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