前端的JavaScript真的可以写后端吗?

当时跟同事探讨这个问题,我就纳闷开始,“当时我在学习PHP动态脚本程序”,他说你可以用Node.js这门非常成熟由JavaScript为核心的框架写后台啊,没必要非得学PHP啊。
在这里插入图片描述

首先说一下Node.js的6大特点

01.它是一个Javascript运行环境
02.依赖于Chrome V8引擎进行代码解释
03.事件驱动
04.非阻塞I/O
05.轻量、可伸缩,适于实时数据交互应用
06.单进程,单线程

两大优点
01.高并发(最重要的优点)
02.适合I/O密集型应用

说完优点,再说缺点
01.不适合CPU密集型应用。
02.CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起,分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞I/O调用的发起。
03.只支持单核CPU,不能充分利用CPU。
04.可靠性低,一旦代码某个环节崩溃,整个系统都崩溃。

原因: 就是因为它是单进程,单线程

说一下它给我们解决什么样的问题?

nodejs解决的问题

01.并发连接

02.异步、事件驱动模型

03.异步机制、事件驱动整个过程没有阻塞新用户的连接,也不需要维护已有用户的连接。

04.基于这样的机制,理论上陆续有用户请求连接,NodeJS都可以进行响应,因此NodeJS能支持比Java、PHP程序更高的并发量.虽然维护事件队列也需要成本,再由于NodeJS是单线程,事件队列越长,得到响应的时间就越长,并发量上去还是会力不从心。

05.NodeJS解决并发连接问题:更改连接到服务器的方式,每个连接发射(emit)一个在Node.js引擎进程中运行的事件(Event),放进事件队列当中,而不是为每个连接生成一个新的OS线程(并为其分配一些配套内存)。

06.I/O阻塞Java、PHP也有办法实现并行请求(子线程),但Node.js通过回调函数(Callback)和异步机制会做得很自然。

但是!但是!但是! 会出现一些问题~

问题01.
浮点型数据失去精度问题

失去精度问题的表现情况,源码如下:

console.log(0.1+0.2);    //0.30000000000000004

本应该结果是 0.3 才对,可是运行结果出现了迷之问题。这在后端开发中是绝对不允许存在的,这个问题不只在JS中出现,经测试JAVA,PHP都存在该问题,C不存在该问题。其它语言咋也没学过啊!咋也不知道啊!

源码如下(我借鉴的人家的代码【偷的,嘿嘿嘿🤪🤪】):

const floatAdd = (arg1, arg2) => {
    let r1,r2,m;
    try {
    	r1 = arg1.toString().split(".")[1].length;
    } catch(e) {
    	r1 = 0;
    }
    try {
    	r2 = arg2.toString().split(".")[1].length;
    } catch(e) {
    	r2 = 0;
    }
    m  =Math.pow(10,Math.max(r1,r2));
    return (arg1*m+arg2*m)/m;
};
 
console.log(floatAdd(0.1,0.2));    // 0.3
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值