Node学习笔记 7天Node.js课程知识整理

尝试在工作实际使用 Node.js 磕磕绊绊,从新对 nodejs(7天) 进行简要梳理,抛去实例部分涉及到的内容知识点如下:

require(引入) 和 export(导出)

在目标组件中使用 exportmodule.exports 方法导出文件中的方法或变量

两者的区别是在导出单条变量或方法时,export 不可使用

更简单的区分方法:请忘掉 export 导出方式

require 用于承接组件通过 module.export 导出的函数或方法

// a.js 导出
function add (e) { …… }
module.exports.add(e)
// b.js 导入
var a = require('a')
a.add(1) // 使用 a.js 中的方法

通过 exportmodule.export 方法导出的是一个对象集合

http 核心模块

var http = require('http') // 引入 http 核心模块
var server = http.createServer() // 创建 server 服务
server.on('request', (request, response) => {
    // request 获取请求数据
    // response 返回响应数据
})
server.listen(3000, () => {...}) // 监听 3000 端口号

url 核心模块

  • url.parse(urlStr[, parseQueryString[, slashesDenoteHost]])

urlStr url 字符串

parseQueryString 为 true 时将使用查询模块分析查询字符串,默认为 false

  • url.pathname

获取及设置 URL 的路径部分

  • url.query

获取 URL 参数部分( ? 后部分)

假设页面请求地址为 /url?name=sfatpaper&data=20191129

var http = require('http')// 引入 http 核心模块
var url = require('url') // 引入 url 核心模块
http.createServer((req, res) => {
    var parseObj = url.parse(req.url, true) // 使用 url.parse 方法获取请求 url 的对象
    var pathName = parseObj.pathname // /url
    var pathQuery = parseObj.query // {name: sfatpaper, data: 20191129}
    // var parseObj = url.parse(req.url)
    // var pathQuery = parseObj.query // name=sfatpaper&data=20191129
})

Nodemon

Nodemon 是一个使用工具,它将会见监视源文件中任何的更改并自动重启服务器。Nodemon 不会对你的代码产生额外的更改,它只是 node 命令的替代品

安装

npm install --global nodemon

实例

// 将之前运行代码的 node demo.js 更改为
nodemon demo.js

art-template 模板引擎

art-template 是一个简约、超快的模板引擎

安装

npm install art-template --save

实例

var template = require('art-template') // 引入 art-template 组件
template.render(source, data, options)
// source 需导出的模板字符串
// data 需要替换到模板字符串中的数据对象

Express 框架

基于 Node.js 平台,快速、开放、极简的 Web 开发框架

安装

npm install express --save

实例

var express = require('express')  // 引入 express 组件
var app = express()
app.get('/', (req, res) => res.send('Hello World!')) // 处理 get 请求
app.listen(3000, () => {...}) // 监听 3000 端口号

Express-art-template

Express-art-template 是专门用来使 Express 中支持 template 模板引擎的第三方组件

安装

npm i art-template

配置

app.engine('html', require('express-art-template'))

实例

app.engine('html', require('express-art-template')) // 配置 art-template
app.render(source, data, options)
// source 需导出的模板字符串
// data 需要替换到模板字符串中的数据对象

body-parser

在 post 请求方式 express 并没有提供获得对应请求体的方法,需要使用 body-parser 组件处理响应请求

安装

npm install --save body-parser

配置

app.use(bodyParser.urlencoded({
    extended: false
}))
app.use(bodyParser.json())

实例

var bodyParser = require('body-parser') // 引入组件
app.use(bodyParser.urlencoded({ // 对组件进行配置
    extended: false
}))
app.use(bodyParser.json())
app.post('/post', (req, res) => {
    console.log(req.body) // req.body 获得 post 请求体
})

MongoDB 数据库

MongoDB 是一款非关系数据库

安装

安装文件下载地址:[https://www.mongodb.com/download-center/community]

在安装过程中需要特别注意,需要将 Install MongoDB Compass 前默认的勾选取消

可以使用 mongod --version 命令查看 MongoDB 版本,若版本号输出正常则安装完毕

使用

  • 启动数据库 mongodb 默认情况下,通过命令启动的数据库目录在 命令执行所在盘符根目录 /data/db 文件
  • 更换数据库目录 mongod --dbpath = '数据库自拟路径'
  • 连接 MongoDB 服务 mongodb
  • 显示所有已存在的数据库 show dbs
  • 切换到目标数据库 use '数据库名称'
  • 查看当前操作数据库 db
  • 显示当前数据库的所有集合 show '数据库名称'
  • 显示数据库集合中所有数据 db.'数据库名称'.find()
  • 向数据库集合添加数据 db.'数据库名称'.insertOne({数据对象})
  • 断开 MongoDB 服务 exit

一个可视化的 Mongodb软件 NoSQLBooster for MongoDB

下载地址:NoSQLBooster - The Smartest GUI Admin Tool for MongoDB

Mongoose

Mongoose 是在 node.js 异步环境下对 mongodb 进行便捷操作的对象模型工具

安装

npm install mongoose

实例

var mongoose = require('mongoose'); // 引入 mongoose
mongoose.connect('mongodb://localhost/test'); // 通过 mongoose 连接 mongodb 数据库

连接数据库的默认端口为 27017

var db = mongoose.connection; // 数据库连接状态
db.on('error', console.error.bind(console, 'connection error:')); // 数据库连接失败
db.once('open', function() {
  // we're connected!(数据库连接成功)
});

.connection 返回一个状态待定(pending)的连接, 可供我们对连接成功与否进行监测

var Kitten = mongoose.model('Kitten', mongoose.Schema({
        // name: String,
        // 也可以如下写法
        name: {
            type: String, // 数据类型
            required: Boolean, // 是否为必须
            defaule: '张三', // 默认值
            enum: ['张三', '李四', '王五', '赵六'] // 枚举,默认值只可是枚举值
        }
    });
);

在操作数据库前,需要对集合中的数据格式进行预设计,如上代码

创建了一个名为 Kitten 的集合,该集合内部的数据结构中有一条数据名为 name ,且是 字符串 类型

  • 增加数据

Model.save([fn])

  var user = new User({ // 新增一条数据
      username: 'kongzhi0707',
        password: '123456'
  });
  user.save(function(err, res) { // 将数据保存到数据库中
        if (err) {
          return console.log(err);
        }  
        console.log(res);
  });

  • 删除数据

Model.remove(conditions, [callback]) 从集合中删除所有符合条件的文档

Model.findByIdAndRemove(id, [options], [callback]) 查找匹配符合 id 的文档,将其删除

Model.findOneAndRemove(conditions, [options], [callback]) 根据记录

  var wherestr = {'username': 'kongzhi0707'}; // 删除数据的条件
  User.remove(wherestr, function(err, res) {
            if (err) {
            return console.log(err);
        }  
        console.log(res);
  });

  • 更新数据

Model.update(conditions, doc, [options], [callback]) 根据条件更新数据库中的一个文档

Model.findByIdAndUpdate(id, [update], [options], [callback]) 通过文档的 id 字段更新数据库中的一个文档

Model.findOneAndUpdate([conditions], [update], [options], [callback]) 根据记录

  var wherestr = {'username': 'kongzhi0707'}; // 更新数据的条件查询
  var updatestr = {'password': 'abcdef'}; // 执行更新数据
  User.update(wherestr, updatestr, function(err, res) {
      if (err) {
            return console.log(err);
        }  
      console.log(res);
  });

  • 查询数据

Model.find(conditions, [fields], [options], [callback]) 根据条件查找文件

Model.findById(id, [projection], [options], [callback]) 通过其 id 字段查找单个文档

Model.findOne([conditions], [projection], [options], [callback]) 根据记录

  var wherestr = {'userName': '龙恩0707'}; // 删除数据的条件
  User.find(wherestr, function(err, res) {
      if (err) {
          return console.log(err);
      }  
      console.log(res);
  });

文章已同步我的个人博客:《Node学习笔记 7天课程知识整理

相关文章:

---

资料参考:

本文由博客一文多发平台 OpenWrite 发布!

发布了16 篇原创文章 · 获赞 0 · 访问量 508

猜你喜欢

转载自blog.csdn.net/sz861128/article/details/103713578