node.js

node.js

Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。 发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。

简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。底层架构是:javascript. 文件后缀:.js

Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。

img

第一个node.js程序

在这里插入图片描述


Node - 实现请求响应

在这里插入图片描述

listen(8888):监听端口号8888

终端中启动服务:node httpserve.js

停止服务:ctrl + c


回调函数
同步(阻塞)
var fs = require("fs");//fs模块用于对系统文件及目录进行读写操作。所有方法都有异步和同步两种方式

var data = fs.readFileSync('input.txt');//同步

console.log(data.toString());
console.log("程序执行结束!");
异步(非阻塞)
var fs = require("fs");

fs.readFile('input.txt', function (err, data) {
    if (err) return console.error(err);//如果错误输出错误
    console.log(data.toString());
});

//readFile:异步,非阻塞

console.log("程序执行结束!");

第一个同步阻塞实例在文件读取完后才执行程序。

第二个异步非阻塞实例我们不需要等待文件读取完,这样就可以在读取文件时同时执行接下来的代码,大大提高了程序的性能。

因此,阻塞是按顺序执行的,而非阻塞是不需要按顺序的,所以如果需要处理回调函数的参数,我们就需要写在回调函数内。

在 Node 应用程序中,执行异步操作的函数将回调函数作为最后一个参数, 回调函数接收错误对象作为第一个参数。


事件循环

Node.js 使用事件驱动模型,当web server接收到请求,就把它关闭然后进行处理,然后去服务下一个web请求。

当这个请求完成,它被放回处理队列,当到达队列开头,这个结果被返回给用户。

这个模型非常高效可扩展性非常强,因为 webserver 一直接受请求而不等待任何读写操作。(这也称之为非阻塞式IO或者事件驱动IO)

在事件驱动模型中,会生成一个主循环来监听事件,当检测到事件时触发回调函数。

img

整个事件驱动的流程就是这么实现的,非常简洁。有点类似于观察者模式,事件相当于一个主题(Subject),而所有注册到这个事件上的处理函数相当于观察者(Observer)。


操作MYSQL数据库
  1. 安装mysql依赖(npm install mysql)

  2. 创建数据库

    在这里插入图片描述

  3. 写db.js并且运行

    在这里插入图片描述

GitHub项目

nodejs项目几要素

  • package.json (npm init \ npmt init -y)
  • node_modules (npm install -g jquery/npm iinstall jquery)
  • 运行是使用:查看官网提供 几乎所有的nodejs都启动和打包都是如下:
    • npm run dev (开发运行)
    • npm run build (打包)
1.下载项目

2.安装依赖
npm install

3.本地开发 启动项目
npm run dev
package.json
  1. 在发布项目或者拷贝项目的时候,node_moudles其实是没意义的。因为它仅仅在开发和打包的时候使用。

  2. package.json文件中已经记录了这些模块坐标。可以直接使用npm install 去重新安装和生成node-modules 。所以的nodejs项目下载以后第一个要执行的命令都是npm install的原因也就是如此。

  3. package.json文件中已经记录了这些模块坐标。可以直接使用npm install 去重新安装和生成node-modules 。所以的nodejs项目下载以后第一个要执行的命令都是npm install的原因也就是如此。

  4. 这也就是为什么官方不提供node-modules的原因。因为可以直接用npm install 去下载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值