node.js介绍

Node.js 是一个开源与跨平台的 JavaScript 运行时环境。 它是一个可用于几乎任何项目的流行工具!
Node.js 在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核)。 这使 Node.js 表现得非常出色。
Node.js 应用程序运行于单个进程中,无需为每个请求创建新的线程。 Node.js 在其标准库中提供了一组异步的 I/O 原生功能(用以防止 JavaScript 代码被阻塞),并且 Node.js 中的库通常是使用非阻塞的范式编写的(从而使阻塞行为成为例外而不是规范)。
当 Node.js 执行 I/O 操作时(例如从网络读取、访问数据库或文件系统),Node.js 会在响应返回时恢复操作,而不是阻塞线程并浪费 CPU 循环等待。
这使 Node.js 可以在一台服务器上处理数千个并发连接,而无需引入管理线程并发的负担(这可能是重大 bug 的来源)。
Node.js 具有独特的优势,因为为浏览器编写 JavaScript 的数百万前端开发者现在除了客户端代码之外还可以编写服务器端代码,而无需学习完全不同的语言。
在 Node.js 中,可以毫无问题地使用新的 ECMAScript 标准,因为不必等待所有用户更新其浏览器,你可以通过更改 Node.js 版本来决定要使用的 ECMAScript 版本,并且还可以通过运行带有标志的 Node.js 来启用特定的实验中的特性。

node的用途

Web服务API,比如REST
实用多人游戏
后端的Web服务,列如跨域、服务器端的请求
基于Web的应用
多客户端的通信,如及时通信

node基本用法

通过node-http-server生成模块

  1. //表示引入http模块
  2. var http = require('http');
  3. // request 获取url穿过来的信息
  4. // response 给浏览器响应信息
  5. http.createServer(function (request, response) {
  6. // 设置响应头
  7. response.writeHead(200, { 'Content-Type': 'text/plain' });
  8. // 表示给我们页面上面输出一句话并且结束响应
  9. response.end('Hello World11');
  10. // 端口
  11. }).listen(8081);
  12. console.log('Server running at http://127.0.0.1:8081/');

node 解决中文乱码

  1. var http = require('http');
  2. http.createServer(function (request, response) {
  3. console.log(request.url);
  4. // 设置响应头
  5. // 状态码是200,文件类型是html,字符集市utf-8
  6. response.writeHead(200, { 'Content-Type': 'text/html;charset="utf-8"' });
  7. // 解决乱码
  8. response.write('<head><meta charset="UTF-8"></head>');
  9. response.write("你好 nodejs");
  10. response.write('<h2>你好123</h2>');
  11. response.end('Hello World');
  12. }).listen(8081);
  13. console.log('Server running at http://127.0.0.1:8081/');

获取地址传的query参数

  1. var http = require('http');
  2. const url = require("url");
  3. http.createServer(function (request, response) {
  4. console.log(request.url);
  5. // 设置响应头
  6. // 状态码是200,文件类型是html,字符集市utf-8
  7. response.writeHead(200, { 'Content-Type': 'text/html;charset="utf-8"' });
  8. // 解决乱码
  9. response.write('<head><meta charset="UTF-8"></head>');
  10. response.write("你好 nodejs");
  11. response.write('<h2>你好123</h2>');
  12. if (request.url != "/favicon.ico") {
  13. let username = url.parse(request.url, true).query;
  14. console.log(`姓名:${username.name}---年龄:${username.age}`)
  15. }
  16. response.end('Hello World');
  17. }).listen(8081);
  18. console.log('Server running at http://127.0.0.1:8081/');

什么是commonjs

JavaScript是一个强大面向对象语言,它有很多快速高效的解释器。官方JavaScript标准定义的API是为了构建基于浏览器的应用程序。然而,并没有定于一个用于更广泛的应用程序的标准库。
CommonJS API定义很多普通应用程序(主要指非浏览器的应用)使用的API,从而填补了这个空白。它的终极目标是提供一个类似Python,Ruby和Java标准库。这样的话,开发者可以使用CommonJS API编写应用程序,然后这些应用可以运行在不同的JavaScript解释器和不同的主机环境中。在兼容CommonJS的系统中,你可以实用JavaScript程序开发:
服务器端JavaScript应用程序
命令行工具
图形界面应用程序
混合应用程序(如,Titanium或Adobe AIR)

nodejs模块

一类是node提供的模块,称为核心模块:HTTP模块、URL模块、Fs模块都是nodejs内置的核心模块,可以直接引入使用。
另一类是用户编写的模块,成为文件模块:这些模块需要我们自己定义。

commonjs中自定义模块的规范:

  1. 我们可以把公共的功能抽离成为一个单独的js文件作为一个模块,默认情况下面这个模块里面的方法或属性,外面是没法访问的。如果要让外部可以访问模块里面的方法或者属性,就必须在模块里面通过exports或者module.exports暴露属性或者方法。
  2. 在需要使用这些模块的文件中,通过require的方法引入这个模块。这个时候就可以使用模块里面暴露的属性和方法。