【Node】Node.js 入门知识点总结(二)

一、Node.js 工具模块

序号模块名描述
1OS 模块提供基本的系统操作函数。
2Path 模块提供了处理和转换文件路径的工具。
3Net 模块用于底层的网络通信。提供了服务端和客户端的的操作。
4DNS 模块用于解析域名。
5Domain 模块简化异步代码的异常处理,可以捕捉处理try catch无法捕捉的。

更多详情见:菜鸟教程:https://www.runoob.com/nodejs/nodejs-utitlity-module.html

二、Node.js Web 模块

1. Web 应用架构

  • Client - 客户端,一般指浏览器,浏览器可以通过 HTTP 协议向服务器请求数据。

  • Server - 服务端,一般指 Web 服务器,可以接收客户端请求,并向客户端发送响应数据。

  • Business - 业务层, 通过 Web 服务器处理应用程序,如与数据库交互,逻辑运算,调用外部程序等。

  • Data - 数据层,一般由数据库组成。

2. 使用 Node 创建 Web 服务器 和 Web 客户端

Node.js 提供了 http 模块,http 模块主要用于搭建 HTTP 服务端和客户端,使用 HTTP 服务器或客户端功能必须调用 http 模块,代码如下:

var http = require('http');

具体示例见:菜鸟教程:https://www.runoob.com/nodejs/nodejs-web-module.html

三、Node.js Express 框架

1. Express 框架核心特性:

  • 可以设置中间件来响应 HTTP 请求。

  • 定义了路由表用于执行不同的 HTTP 请求动作。

  • 可以通过向模板传递参数来动态渲染 HTML 页面。

2. 安装 Express:

$ cnpm install express --save

以下几个重要的模块是需要与 express 框架一起安装的:

  • body-parser - node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。

  • cookie-parser - 这就是一个解析Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象。

  • multer - node.js 中间件,用于处理 enctype="multipart/form-data"(设置表单的MIME编码)的表单数据。

3. 第一个 Express 框架实例

在浏览器中访问 http://127.0.0.1:8081时,页面会呈现 Hello World

//express_demo.js 文件
var express = require('express');
var app = express();
 
app.get('/', function (req, res) {
   res.send('Hello World');
})
 
var server = app.listen(8081, function () {
 
  var host = server.address().address
  var port = server.address().port
 
  console.log("应用实例,访问地址为 http://%s:%s", host, port)
 
})

4. 其他

  • 请求和响应

  • 路由

  • 静态文件

  • GET 方法

  • POST 方法

  • 文件上传

  • Cookie 管理

更多详情见:菜鸟教程:https://www.runoob.com/nodejs/nodejs-express-framework.html

四、Node.js RESTful API

REST即表述性状态传递(英文:Representational State Transfer,简称REST)是一种软件架构风格。

表述性状态转移是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。需要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML(标准通用标记语言下的一个子集)以及HTML(标准通用标记语言下的一个应用)这些现有的广泛流行的协议和标准。REST 通常使用 JSON 数据格式。

HTTP 方法:以下为 REST 基本架构的四个方法:

  • GET - 用于获取数据。

  • PUT - 用于更新或添加数据。

  • DELETE - 用于删除数据。

  • POST - 用于添加数据。

创建 RESTful:

首先,创建一个 json 数据资源文件 users.json,内容如下:

{
   "user1" : {
      "name" : "mahesh",
      "password" : "password1",
      "profession" : "teacher",
      "id": 1
   },
   "user2" : {
      "name" : "suresh",
      "password" : "password2",
      "profession" : "librarian",
      "id": 2
   },
   "user3" : {
      "name" : "ramesh",
      "password" : "password3",
      "profession" : "clerk",
      "id": 3
   }
}

基于以上数据,我们创建以下 RESTful API:

序号URIHTTP 方法发送内容结果
1listUsersGET显示所有用户列表
2addUserPOSTJSON 字符串添加新用户
3deleteUserDELETEJSON 字符串删除用户
4:idGET显示用户详细信息

获取用户列表:

var express = require('express');
var app = express();
var fs = require("fs");

app.get('/listUsers', function (req, res) {
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       console.log( data );
       res.end( data );
   });
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port

  console.log("应用实例,访问地址为 http://%s:%s", host, port)

})

更多详情见:菜鸟教程:https://www.runoob.com/nodejs/nodejs-restful-api.html

五、Node.js 多进程

我们都知道 Node.js 是以单线程的模式运行的,但它使用的是事件驱动处理并发,这样有助于我们在多核 cpu 的系统上创建多个子进程,从而提高性能。

每个子进程总是带有三个流对象:child.stdinchild.stdoutchild.stderr。他们可能会共享父进程的 stdio 流,或者也可以是独立的被导流的流对象。

Node 提供了 child_process 模块创建子进程,方法有:

  • exec - child_process.exec 使用子进程执行命令,缓存子进程的输出,并将子进程的输出以回调函数参数的形式返回。

  • spawn - child_process.spawn 使用指定的命令行参数创建新进程。

  • fork - child_process.fork 是 spawn()的特殊形式,用于在子进程中运行的模块,如 fork('./son.js') 相当于 spawn('node', ['./son.js']) 。与spawn方法不同的是,fork会在父进程与子进程之间,建立一个通信管道,用于进程之间的通信。

更多详情见:菜鸟教程:https://www.runoob.com/nodejs/nodejs-process.html

六、Node.js JXcore 打包

JXcore 是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接安全地以多线程运行。

包代码:

我们使用 jx 命令打包 Node.js 项目的几个文件,并指定 index.js 为 Node.js 项目的主文件:

jx package index.js index

以上命令执行成功,会生成以下两个文件:

  • index.jxp 这是一个中间件文件,包含了需要编译的完整项目信息。

  • index.jx 这是一个完整包信息的二进制文件,可运行在客户端上。

载入 JX 文件:

Node.js 的项目运行:

node index.js command_line_arguments

使用 JXcore 编译后,我们可以使用以下命令来执行生成的 jx 二进制文件:

jx index.jx command_line_arguments

更多详情见:菜鸟教程:https://www.runoob.com/nodejs/nodejs-jxcore-packaging.html

七、Node.js 连接 MySQL

安装驱动:

cnpm install mysql

连接数据库:在以下实例中根据你的实际配置修改数据库用户名、密码及数据库名

var mysql = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '123456',
  database : 'test'
});
 
connection.connect();
 
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

数据库操作( CURD ):查询数据、插入数据、更新数据、删除数据,以查询数据为例,如下所示:

var mysql  = require('mysql');  
 
var connection = mysql.createConnection({     
  host     : 'localhost',       
  user     : 'root',              
  password : '123456',       
  port     : '3306',                   
  database : 'test' 
}); 
 
connection.connect();
 
var  sql = 'SELECT * FROM websites';
//查
connection.query(sql,function (err, result) {
        if(err){
          console.log('[SELECT ERROR] - ',err.message);
          return;
        }
 
       console.log('--------------------------SELECT----------------------------');
       console.log(result);
       console.log('------------------------------------------------------------\n\n');  
});
 
connection.end();

更多详情见:菜鸟教程:https://www.runoob.com/nodejs/nodejs-mysql.html

八、Node.js 连接 MongoDB

MongoDB是一种文档导向数据库管理系统,由C++撰写而成。

安装驱动:

cnpm install mongodb

创建数据库:

要在 MongoDB 中创建一个数据库,首先我们需要创建一个 MongoClient 对象,然后配置好指定的 URL 端口号

如果数据库不存在,MongoDB 将创建数据库并建立连接。

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/runoob";
 
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
  if (err) throw err;
  console.log("数据库已创建!");
  db.close();
});

创建集合:

我们可以使用 createCollection() 方法来创建集合。

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017/runoob';
MongoClient.connect(url, { useNewUrlParser: true }, function (err, db) {
    if (err) throw err;
    console.log('数据库已创建');
    var dbase = db.db("runoob");
    dbase.createCollection('site', function (err, res) {
        if (err) throw err;
        console.log("创建集合!");
        db.close();
    });
});

数据库操作( CURD ):

与 MySQL 不同的是 MongoDB 会自动创建数据库和集合,所以使用前我们不需要手动去创建。

查询数据 find()、插入数据 insertOne() / insertMany()、更新数据 updateOne() / updateMany()、删除数据 deleteOne() / deleteMany() ,以插入数据为例,如下所示:

// 插入单条数据可以使用 insertOne(); 如果要插入多条数据可以使用 insertMany()
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
 
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    var myobj = { name: "菜鸟教程", url: "www.runoob" };
    dbo.collection("site").insertOne(myobj, function(err, res) {
        if (err) throw err;
        console.log("文档插入成功");
        db.close();
    });
});

排序:排序 使用 sort() 方法,该方法接受一个参数,规定是升序(1)还是降序(-1)。例如:

  • { type: 1 }  // 按 type 字段升序
    { type: -1 } // 按 type 字段降序

查询分页:

  • 如果要设置指定的返回条数可以使用 limit() 方法,该方法只接受一个参数,指定了返回的条数。
  • 如果要指定跳过的条数,可以使用 skip() 方法。

连接操作:mongoDB 不是一个关系型数据库,但我们可以使用 $lookup 来实现左连接。

例如我们有两个集合数据分别为:集合1:orders 和 集合2:products。

// $lookup 实现左连接
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/";
 
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
  if (err) throw err;
  var dbo = db.db("runoob");
  dbo.collection('orders').aggregate([
    { $lookup:
       {
         from: 'products',            // 右集合
         localField: 'product_id',    // 左集合 join 字段
         foreignField: '_id',         // 右集合 join 字段
         as: 'orderdetails'           // 新生成字段(类型array)
       }
     }
    ]).toArray(function(err, res) {
    if (err) throw err;
    console.log(JSON.stringify(res));
    db.close();
  });
});

删除集合:我们可以使用 drop() 方法来删除集合。

更多详情见:菜鸟教程:https://www.runoob.com/nodejs/nodejs-mongodb.html

END

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用于构建高性能、可扩展的网络应用程序。它允许我们在服务器端使用JavaScript编写和运行代码,并且具有以下重要的知识点: 1. 异步编程:Node.js采用非阻塞I/O模型,通过事件驱动和回调函数实现异步编程。这使得可以处理大量并发请求而不会阻塞应用程序。 2. 模块化:Node.js支持模块化开发,通过模块系统可以将代码分割成小的、可复用的模块。内置的模块系统提供了大量的核心模块,同时也可以使用第三方模块。 3. 事件驱动:Node.js使用事件驱动的架构,通过触发和监听事件来实现异步处理。核心模块`events`提供了事件的处理能力。 4. 文件系统操作:Node.js提供了对文件系统的操作能力,可以读写文件、创建和删除目录等。核心模块`fs`用于处理文件系统相关操作。 5. 网络通信:Node.js可以创建网络服务器和客户端,通过核心模块`http`和`https`实现HTTP和HTTPS协议的通信。 6. 第三方库和框架:Node.js拥有庞大的第三方库和框架生态系统,如Express.js、Koa.js、Socket.io等,可以加速开发过程。 7. 数据库连接:Node.js可以连接各种数据库,如MySQL、MongoDB、PostgreSQL等。通过相应的驱动程序或ORM框架,可以实现与数据库的交互。 8. 安全性:Node.js有一些内置的安全机制,如防止跨站脚本攻击(XSS)和SQL注入攻击。同时也可以使用第三方模块增强安全性。 这些是Node.js的一些重要知识点,希望对你有帮助!如果你还有其他问题,可以继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值