本文是看到一篇文章,感觉写得特别好,在此并加上自己理解,欢迎各位大佬指导纠正~
1. 什么是Node.js?
- Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
- Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
- Node.js 的包管理器 npm,成为世界上最大的开放源代码的生态系统。
- 淘宝镜像网站:http://npm.taobao.org/
npm install -g cnpm --registry=https://registry.npm.taobao.org
2. php 和 node.js的区别
php 和 node.js 都是后端语言,php是做服务器的
- php
- 运行在apache环境下;
- 可以用php代码来操作mysql;
- 这所有的操作在windows系统环境下。
- 语法:php语法
- node.js
- 运行在node服务器下, 等同于php运行在apache环境下;
- 可以用node代码来操作mysql,也可以运行在windows系统环境下;
- 性能:速度是php速度的86倍。
- 语法:ECMAScript的语法(没有BOM,没有DOM),简称 js 的语法。
3. node选择 js 语言,原因?
场景:某位大佬需要做一个服务器,需求是有异步、有事件。
故他要选择什么编程语言?----------->
C,C++之类的语言不满足需求,发现了js语言可以满足他的需求,js语言的特点:
- 单线程异步执行(模拟了多线程);
- 事件处理机制;
但是最大的问题是js是脚本语言,不是服务器语言,故他作了一个决定:要用js写一门语言,为了做他的服务器。因此node语言就出现了。(这里要搞清楚,node不是一个框架,它就是一门语言)
4. node的运行
- 浏览器(无),在node环境中:
- a. 安装了Node;
- b. 通过node 的命令执行;
- c. 在指定的平台执行:
-
nodejs语法运行在windows的命令提示符中; linux的linux命令提示符中; MAC的终端中; git Bash中; 在某些编辑器模拟的终端中
因为node不是在浏览器中运行,所以不受浏览器限制,故不用担心浏览器对ES6的支持情况,即node全面支持除了ES6提供的模块化的语法之外的其他语法,
**ES6提供的模块化的语法:**import,export(即这两个node是不支持的,但是浏览器支持)
5. Node.js可以做什么?
- Node.js 可以解析JS代码(没有浏览器安全级别的限制)提供很多系统级别的API,如:
- 文件的读写
- 进程的管理
- 网络通信
- …
6. 基于Node的工具或者框架
- Node-Webkit:基于node的webkit的内核
- NodeOS:基于node的操作系统
- Express:基于node的框架
- Jade:模板
- EJS:模板
- Forever:负载均衡
- PM2:负载均衡
- Log.io:浏览器打印各种输出日志,报错等
- Grunt、Gulp、Webpack:前端工程化工具
- Mocha、Karma:前端测试工具
- …
7. 学习node.js的网站
- node官网:https://nodejs.org/en/ -------下载node,官方API,更新日志,发布的动态
- npm官网:https://www.npmjs.com/search?q= -------可以搜索你需要的模块,模块管理、组件安装
- github:https://github.com/search?utf8=%E2%9C%93&q=nodejs ----源代码
- 国外技术博客:http://stackoverflow.com/questions -----使用nodejs遇到的问题
- 国内的技术博客:https://segmentfault.com/ -----遇到的问题
8. 安装
官网:https://nodejs.org/
这里说一下版本号的含义:
- 偶数位为稳定版本:v6.8.x v6.6.x v6.4.x
- 基数位为非稳定版本:v6.9.x v6.7.x v6.5.x
9. (用node开启服务器)搭建第一个WEB服务器
- 查看端口被占用 8080, win+R打开命令行窗口,查看完之后在任务管理器中消除掉即可
netstat -ano|findstr "8080"
- 本地创建一个文件server.js,代码采用es6编写
const http = require("http");
const homename = "127.0.0.1";
const port = 3000;
const server = http.createServer((req,res)=>{
res.statusCode = 200;
res.setHeader("Content-Type","text/plain");
res.end("hello world");
});
server.listen(port,hostname,()=>{
console.log(`server running at http://${hostname}:${port}/`);
})
- es5的编写方法
var http = require('http');
http.createServer(function (request, response) {
// 发送 HTTP 头部
// HTTP 状态值: 200 : OK
// 内容类型: text/plain
response.writeHead(200, {'Content-Type': 'text/plain'});
// 发送响应数据 "Hello World"
response.end('Hello World\n');
}).listen(8888);
// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');
原文链接:https://blog.youkuaiyun.com/a331790021/article/details/75661785