能不能把js文件放在服务器上,为什么要把 JavaScript 放到服务器端上运行?

2023-11-04

原标题:为什么要把 JavaScript 放到服务器端上运行?

d0d11086d9a9549d3d2d93b50de60182.png

因为在当年,Node.js的作者Ryan Dahl是一名资深的C/C++程序员,在创造出Node之前,他的主要工作都是围绕高性能Web服务器进行的。经历过一些尝试和失败之后,他找到了设计高性能,Web服务器的几个要点:事件驱动、非阻塞I/O。

所以Ryan Dahl最初的目标是写一个基于事件驱动、非阻塞I/O的Web服务器,以达到更高的性能,提供Apache等服务器之外的选择。他提到,大多数人不设计一种更简单和更有效率的程序的主要原因是他们用到了阻塞I/O的库。写作Node的时候,Ryan Dahl曾经评估过C、Lua、Haskell、Ruby等语言作为备选实现,结论为:

C的开发门槛高,可以预见不会有太多的开发者能将它用于日常的业务开发,所以舍弃它;

Ryan Dahl觉得自己还不足够玩转Haskell,所以舍弃它;

Lua自身已经含有很多阻塞I/O库,为其构建非阻塞I/O库也不能改变人们继续使用阻塞I/O库的习惯,所以也舍弃它;

而Ruby的虚拟机由于性能不好而落选。

相比之下,Java比C的开发门槛要低,比Lua的历史包袱要少。

尽管服务器端Java存在已经很多年了,但是后端部分一直没有市场,可以说历史包袱为零,为其导入非阻塞I/O库没有额外阻力。另外,Java在浏览器中有广泛的事件驱动方面的应用,暗合Ryan Dahl喜好基于事件驱动的需求。

当时,第二次浏览器大战也渐渐分出高下,Chrome浏览器的Java引擎V8摘得性能第一的桂冠,而且其基于新BSD许可证发布,自然受到Ryan Dahl的欢迎。考虑到高性能、符合事件驱动、没有历史包袱这3个主要原因,Java成为了Node的实现语言。

素材来自网络,版权属于原作者

地址:https://blog.csdn.net/b9q8e64lo6mm/article/details/80102348返回搜狐,查看更多

责任编辑:

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

能不能把js文件放在服务器上,为什么要把 JavaScript 放到服务器端上运行? 的相关文章

  • 悟空CRM的环境搭建

    记录悟空CRM从零开始搭建的过程 1 悟空CRM官网 2 JAVA版介绍文档 中介绍了Java版CRM系统的安装简介 3 通俗简介 悟空CRM采用前后端分离模式 前端使用vue开发 后端使用java 此次IDE为Eclipse 数据库使用M
  • PlatformIO - 静态代码分析(Static Code Analysis)

    关于 静态代码分析 相信大部分的嵌入式开发者或多或少在日常的开发中都有所了解 但可能在实际的开发中我们使用的并不多也不习惯通过工具对我们编写的代码进行静态扫描而是完全依赖于在开发板上运行然后基于运行结果来判断自己所编写的代码的好坏 是否有b
  • 调用百度“车牌识别”API接口(go语言实现)

    调用百度的api识别车牌 没有GPU的机器 也没有大量的有标注的车牌数据 所以就只好拿别人现成的车牌识别api接口 具体的识别原理就不说了 只是调别人的接口而已 具体的调用文档百度已经给出 http ai baidu com docs OC
  • LDAP认证的两种方式

    LDAP认证的两种方式 第一种 FastBindLdapAuthenticationHandler 这种认证处理器一般用于DN是由用户名直接组成的 比如 uid u ou dev dc micmiu com dc com 其中 u 就是CA
  • Flutter 打开第三方应用/网页

    需求 打开指定网页 指定应用 这里用到的是一个三方插件 url launcher 5 0 2版本 pubspec ymal文件下dependencies节点增加 例如 dependencies flutter sdk flutter The
  • VSCode字体中英等宽对齐的选择

    关于VSCode字体的选择 配置为中文英文宽度比例符合2 1的 Sarasa Mono SC 更纱黑体 我对字体的需求 首先就要是IiLl10O区分都很明显 再有就是我更偏好等宽字体 Monospaced Font 不能对齐什么的对强迫症太
  • 【蓝桥杯训练】DFS与BFS讲解

    1 DFS 深度优先遍历 理论介绍 DFS属于图算法的一种 是针对图和树的遍历算法 深度优先搜索是图论中的经典算法 利用深度优先搜索算法可以产生目标图的相应拓扑排序表 利用拓扑排序表可以方便的解决很多相关的图论问题 如最大路径问题等等 一般
  • 深入了解Java队列接口

    队列接口 队列接口是 Java 集合框架的一个重要部分 它扩展了 Collection 接口 队列接口表示遵循 先进先出 FIFO 原则的元素集合 队列允许存储重复值 队列的基本特征是元素按特定顺序存储 类似于等待轮流的人群 主要通过添加元
  • Android动态权限申请封装总结

    最近在做公司的项目的时候 在动态权限申请这部分没有使用市面上流行的第三方库 但是在使用的时候发现每次都需要进行onRequestPermissionsResult 的回调 感觉比较的烦躁 想到RxPermission 这些第三方库没有在Ac
  • K8S的DaemonSet部署和安全删除

    1 部署方式 部署DaemonSet 需要执行以下步骤 创建DaemonSet配置文件 您可以使用YAML或JSON格式的文件描述DaemonSet的规格 包括容器镜像 容器端口 Pods标签 节点选择器等 使用kubectl命令将配置文件
  • 海康录像机识别不到硬盘_海康威视硬盘录像机常见问题解决方式

    海康威视客户端 4 01 使用配置相关注意事项 1 安装客户端软件选择单机版还是网络版 目前 4 01 客户端分成 2 个版本 分别是单机版和网络版 单机版即以前的互相独立的分控模式 每个安装客户端的分控点分别独立的对设备进行操 作 客户端
  • linux安装yum报错Unable to locate package yum解决方案

    为什么80 的码农都做不了架构师 gt gt gt 问题 apt get install yum Reading package lists Done Building dependency tree Reading state infor
  • Flutter 实现九宫格抽奖动画效果

    一 本文实现的九宫格抽奖动画效果如下 二 主要分享下怎么一步一步来实现这个效果 源代码地址 布局可以通过GridView轻松实现 只需在数据源的第五个位置插入一个元素用来标识是开始按钮 抽奖动画的实现 需要按顺时针循环选中奖品而且还需要从慢
  • 小程序酷炫动态登录页源码(动态水滴)

    1 页面效果 登陆页面一般都要酷炫好看一点 这里分享一个动态登录页面 页面有三个流动的小水滴 一个水滴放登录框 剩下两个水滴跳转页面和打开弹窗 2 代码内容
  • opencv KCF追踪报错

    tracker gt update dstImage1 roi 刷新ROI的位置 在这一句报错 后来发现update 中的dstimage1没有经过处理 把之前对image进行的 转换颜色空间 二值化 开闭运算 canny运算 又进行一遍
  • ssh无法远程连接ubuntu系统,提示"System is booting up. See pam_nologin(8)"

    问题 使用ssh xshell或者putty 远程连接Linux ubuntu 系统时 提示 System is booting up See pam nologin 8 Connection closing Socket close 无法
  • 浅聊便利蜂

    便利蜂是一家以新型便利店为主体的科技创新零售企业 公司以科技为核心驱动运营 以 品质生活 便利中国 为己任 怀抱 小小幸福 在你身边 的初心 为中国消费者提供优质 健康 安心的产品和高效 便捷 满意的服务 便利蜂由北京自由蜂电子商务有限公司
  • 网络流dinic算法复杂度

    Dinic算法的时间复杂度的理论上界是O N2 M N是结点数 M是边数 但实际上Dinic算法比这个理论上界好得多 如果所有边容量均为1 那么时间复杂度是O min N0 67 M0 5 M 对于二分图最大匹配这样的特殊图 时间复杂度是O
  • antV-G2图标的label如何显示,如何自定义样式

    chart interval position 号位 平均分 这里开始设置label label 平均分 val gt return position middle offset 0 content originData gt return

随机推荐

  • 常见架构对比

    1 单体架构 概念 所有的模块集中在一个项目中 打包到一起并放在一个web容器中运行 适合场景 项目初创期 业务简单且响应要求高 优点 开发 测试 部署运维简单 响应快 缺点 1 资源没法隔离 2 部署周期长 3 可靠性低所有模块都集中在一
  • nestjs:docker build时执行npm install sharp提示downloading libvips socket hang up

    问题 如题 参考 sharp High performance Node js image processing 参考chinese mirror处理 原因 默认是从github上下载libvips库 但是使用socket协议 linux下
  • STM32 进阶教程 6 -  汇编与C混合编程

    前言 在嵌入式开发过程中 有时候为了追求代码性能与效率不得不采用汇编语言来编写代码 但是汇编代码在阅读时表现不如C语言友好 本节给大家介绍一种新的方法 关键代码用汇编语言时行实现 然后用C语言时行接封装 用C语言与汇编语言混合编程的方式 在
  • DELL T420塔式服务器RAID配置及OS安装

    一 DELL T420塔式服务器RAID配置 1 服务器RAID卡配置 开机看到CTRL R的提示后及时按下CTRL R进到阵列卡配置界面 进去之后光标默认就在阵列卡型号上 比如 PERC H310 PERC H710 PERC H710P
  • C++装饰者模式:Decorator Pattern

    设计原则 类应该对扩展开发 对修改关闭 装饰者可以在所委托被装饰者的行为之后加上自己的行为 以达到特定的目的 装饰者模式 动态地将责任附加到对象上 若要扩展功能 装饰者提供了比继承更有弹性的替代方案 装饰者和被装饰者必须是一样的类型 也就是
  • 多目标跟踪算法之SORT

    本文首发于微信公众号 DeepDriving 欢迎关注 简介 SORT是2016年发表的一篇文章 Simple Online and Realtime Tracking 中提出的一个经典的多目标跟踪算法 该算法结合常用的卡尔曼滤波器和匈牙利
  • 服务器128g内存显示64g,64g内存服务器

    64g内存服务器 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 接口名称GetCloudPhoneServerModel
  • httprunner 3.x学习1 - 环境安装与准备

    前言 httprunner 3 x最大的改变是执行用例用的是 python 的 pytest 框架 支持3种格式的用例 YAML JSON pytest 代码 对比 httprunner 2 x 以前版本 早期版本用的是 unittest
  • el-select 默认值显示value不显示label问题

    el select 默认值显示value不显示label问题 在做编辑页面时 需要取到列表项数据回显默认值 在做select回显的时候遇到了这个问题 明明拿到的值和value中的值一样 但是就是不转换成label 这种情况一般出现在valu
  • 清除苹果服务器位置,苹果桌面三大清理工具_服务器评测与技术-中关村在线

    值得庆幸的是 Mac App Store的有三个应用程序 可以帮助你整理桌面 保证你的桌面整洁干净 前两者都是免费的 在桌面上扫描文件和文件夹时 只要一个命令 就能按照你的原设置整理文件夹 第三虽然是付费但是功能强大 能够隐藏你的文件 即保
  • 测试框架pytest教程(2)-用例依赖库-pytest-dependency

    对于 pytest 的用例依赖管理 可以使用 pytest dependency 插件 该插件提供了更多的依赖管理功能 使你能够更灵活地定义和控制测试用例之间的依赖关系 Using pytest dependency pytest depe
  • 大数据面试题:MapReduce压缩方式

    面试题来源 大数据面试题 V4 0 大数据面试题V3 0 523道题 679页 46w字 可回答 1 Hadoop常见的压缩算法有哪些 问过的一些公司 网易云音乐 2022 11 阿里 2020 08 参考答案 1 MapReduce支持的
  • java-web eclipse内tomcat无法访问网页 Google浏览器可以

    java web eclipse内tomcat无法访问网页 Google浏览器可以 1 eclipse 安装的Tomcat服务无法访问问网页 浏览器不可以 只有从tomcat 安装目录下启动startup bat或tomcat9 0自带的t
  • ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR解决办法

    windows开发 调用 InternetQueryOption 函数失败 错误码 12178 ERROR WINHTTP AUTO PROXY SERVICE ERROR 解决方法 运行 services msc 服务 WinHTTP W
  • git merge合并分支,解决冲突

    1 git merge示意 git merge 用来做分支合并 将其他分支中的内容合并到当前分支中 比如分支结构如下 master C0 C1 C2 C4 C3 C5 issueFix 当前分支是master git checkout ma
  • android:configChanges属性总结

    http blog csdn net zhaokaiqiang1992 article details 19921703 android中的组件Activity在manifest xml文件中可以指定参数android ConfigChan
  • VSCode使用 - Remote-SSH 配置说明

    By Ailson Jack Date 2022 06 17 个人博客 http www only2fire com 本文在我博客的地址是 http www only2fire com archives 147 html 排版更好 便于学习
  • Kafka(生产者)

    Kafka 1 概述 1 1 消息队列 1 1 1 传统消息队列的应用场景 1 1 2 消息队列的两种模式 1 2 kafka基础结构 2 kafka的快速入门 2 1 集群部署 2 1 1 安装java 2 1 2 部署zookeeper
  • 第八课 SpringBoot2基础-指标监控

    第八课 SpringBoot2基础 指标监控 tags Spring Boot 2021尚硅谷 雷丰阳 文章目录 第八课 SpringBoot2基础 指标监控 第一节 SpringBoot Actuator简介 第二节 Actuator端点
  • 能不能把js文件放在服务器上,为什么要把 JavaScript 放到服务器端上运行?

    原标题 为什么要把 JavaScript 放到服务器端上运行 因为在当年 Node js的作者Ryan Dahl是一名资深的C C 程序员 在创造出Node之前 他的主要工作都是围绕高性能Web服务器进行的 经历过一些尝试和失败之后 他找到