尝试在工作实际使用 Node.js
磕磕绊绊,从新对 nodejs(7天)
进行简要梳理,抛去实例部分涉及到的内容知识点如下:
require(引入) 和 export(导出)
在目标组件中使用 export
或 module.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 中的方法
通过 export
或 module.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
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天课程知识整理》
相关文章:
- Node学习笔记 fs.readFile、fs.writeFile、fs.readdir
- Node学习笔记 http.createServer、art-template
- Node学习笔记 express、express-template、nodemon
- Node学习笔记 post、express实现评论提交
- Node学习笔记 Mongodb和Mongoose
---
资料参考:
- [Node.js v12.13.1 文档]
- [art-template 高性能 JavaScript 模板引擎]
- [Express - 基于 Node.js 平台的 web 应用开发框架]
- [MongoDB 官网]
- [Mongoose.js中文网]
本文由博客一文多发平台 OpenWrite 发布!