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的速度非常快,性能非常好。
第一个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)
在事件驱动模型中,会生成一个主循环来监听事件,当检测到事件时触发回调函数。
整个事件驱动的流程就是这么实现的,非常简洁。有点类似于观察者模式,事件相当于一个主题(Subject),而所有注册到这个事件上的处理函数相当于观察者(Observer)。
操作MYSQL数据库
-
安装mysql依赖(npm install mysql)
-
创建数据库
-
写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
-
在发布项目或者拷贝项目的时候,
node_moudles
其实是没意义的。因为它仅仅在开发和打包的时候使用。 -
package.json文件中已经记录了这些模块坐标。可以直接使用
npm install
去重新安装和生成node-modules
。所以的nodejs项目下载以后第一个要执行的命令都是npm install
的原因也就是如此。 -
package.json文件中已经记录了这些模块坐标。可以直接使用
npm install
去重新安装和生成node-modules
。所以的nodejs项目下载以后第一个要执行的命令都是npm install
的原因也就是如此。 -
这也就是为什么官方不提供
node-modules
的原因。因为可以直接用npm install
去下载。