黑马程序员技术交流社区
标题: nodeJS简单介绍及使用nodeJS操纵数据库 [打印本页]
作者: 小刀葛小伦 时间: 2019-9-14 12:32
标题: nodeJS简单介绍及使用nodeJS操纵数据库
Node服务器软件的安装与配置Node.exe的安装下载nodeJS,安装
检测是否安装成功 node -v
2、使用上面装好的nvm软件,安装我们需要的node版本了
指令:
nvm install 具体的版本号就行了
nvm uninstall 具体的版本号
nvm list 查看当前安装了哪些版本
nvm use 具体版本号,切换到某个版本
建议:
安装一个高一点的稳定的版本即可,因为软件都是向下兼容
系统环境变量及其作用系统环境变量每个系统都会提供一种叫做环境变量的东西,用来简化我们去
访问某一个应用程序可执行文件(.exe)的操作
我们配置了环境变量能做到什么事呢?
在我们终端的任何一个目录下,都可以访问,配置在系统
环境变量里面的可执行文件
如何将一个软件的可执行文件配置在我们的系统环境变量中?
步骤:
1、拷贝一个可执行文件所在的目录,比如:
node.exe所在的目录 C:\Program Files\nodejs
2、系统 > 高级系统设置 > 高级 > 环境变量 >
系统变量 > Path > 填写上你的目录
注意事项:
如果更改了系统的环境变量,就必须把终端重新启动
启动node.exe执行js代码启动(相当于启动Apache服务器)1、在我们的node的安装目录下,去双击我们node.exe
2、在终端输入 node即可 node.exe
退出我们的node.exe1、在终端中输入.exit
2、连续按住两次 CTRL + C
怎么去执行js代码1、直接在我们启动的node.exe中写代码(在开启的REPL环境中写代码执行)
缺点:
书写不方便,阅读起来也不方便
因为在我们的cmd中写的代码,是放在内存中的,
一旦我们退出了node.exe,原先写的代码都没有了
2、把我们写好的代码放在一个单独的js文件中去执行
在终端中输入 node.exe +执行的文件名称
注意:
1、我们js代码不是在终端中运行的,只是借助终端
去启动我们node.exe,并且最终将结果展现在终端里面而已
2、在运行时候,首先你的终端的目录得切换到你要
执行的文件的目录下面去,然后使用node 文件名称执行即可
我们nodejs的代码是在一个叫做REPL环境中,执行的
REPLJS的执行执行js在浏览器端,我是是要依靠浏览器(js的解析引擎)
在服务器端 nodejs开启的REPL环境
REPL就是当通过node.exe启动之后开辟的一块内存空间,
在这块内容空间里面就可以解释执行我们的js代码
例如:
在终端中输入了 node abc.js 做的事情就是,将abc.js中
写好的js的逻辑代码扔在启动好的node的内容空间中去运行,
我们把启动好的node的这块内存空间称之为REPL环境
模块化思想为什么前端需要有模块化1、解决全局变量名污染的问题
2、把相同功能的代码放在一个模块(一个js文件中)方便后期维护
3、便于复用
NodeJS中如何体现模块化2、Node作者在设计这门语言的时候,就严格按照CommonJS
的规范,将它的API设计成模块化了,比如它将开启Web服务这
个功能所有代码都放入一个http模块中
3、Node本质来说就是将相同功能的代码放入到一个.js文件中管理
常用NodeJS中的模块[JavaScript] 纯文本查看 复制代码
模块 作用
http 开启一个Web服务,给浏览器提供服务
url 给浏览器发送请求用,还可以传递参数(GET)
querystring 处理浏览器通过GET/POST发送过来的参数
path 查找文件的路径
fs 在服务器端读取文件用的
上面五大核心模块加上其它一些第三方的模块,就可以完成基本的数据库操作了
nodeJS核心模块及其操作http
[JavaScript] 纯文本查看 复制代码
使用http模块开启web服务
步骤:
//1、导入我们需要的核心模块(NodeJS提供的模块我们称之为核心模块)
var http = require('http');
//2、利用获取到的核心模块的对象,创建一个server对象
var server = http.createServer();
//3、利用server对象监听浏览器的请求,并且处理(请求-处理-响应)
server.on('request',function(req,res){
res.end("welcome");
});
//4、开启web服务开始监听
server.listen(8080,'127.0.0.1',function(){
console.log('开启服务器成功');
});
url1、导入url这个核心模块
2、调用url.parse(url字符串,true),如果是true的话代表把我们
的username=zhangsan&pwd=123 字符串解析成js对象
QueryString作用:
将GET/POST传递过来的参数,进行解析
GET : ?username=zhangsan&pwd=123
POST : username=zhangsan&pwd=123
[JavaScript] 纯文本查看 复制代码
使用:
const querystring = require('querystring')
const paramsObj = querystring.parse(键值对的字符串)
GET&POST相同点:
都是HTTP协议的方法
都能传递参数给服务器
不同点:
1、传参的方式不一样
GET 放在路径后面 ?开始,后面键值对
POST 放在请求体 键值对的方式
2、传参的限制不一样
GET 2048B
POST 2M
3、GET有缓存,POST没有
4、GET传参不安全,POST相对安全
建议:
如果只是单纯的获取数据,就用GET,因为GET有缓存效率高
如果是要向服务器提交数据,就用POST
fs&pathpath作用:获取路径
[JavaScript] 纯文本查看 复制代码
path.join(__dirname,'你要读取的文件夹下面的文件名称即可')
__dirname全局属性,代表当前文件所在的文件夹路径
path.join会自动判断文件的路径,并且给他加上`/`
fs[AppleScript] 纯文本查看 复制代码
作用:读取服务器硬盘上面的某一个文件(操作文件)
fs.readFile : 异步读取服务器硬盘上面的某一个文件
fs:node去读取服务器硬盘中的文件(操作文件)
path:获取文件的路径
上面两个基本上配合起来用
自定义模块CommonJS规范认为,一个.js文件就可以看成一个模块,如果我们想把模块中定义的变量,方法,对象给外面的js使用,就必须使用CommonJS提供module将我们需要给外面用的东西,导出去
注意点在commonjs中导入模块用 require
在commonjs中在模块中导出 使用module.exports
如果是自定义模块,在导入自定义模块的时候,得把路径写完整
require导入的东西,就是别的文件modulu.exports导出的东西
Express 框架基本概念它是对HTTP封装,用来简化我们网络功能那一块
重点1、如何去接收GET/POST传递过来的参数
2、如何通过Express进行分门别类的处理路由
3、静态资源的处理
使用1、Hello World 案例
步骤:
1、导入包
2、创建一个app
3、请求处理响应
4、开启web服务,开始监听
可以直接在我们的req.query中就可以获取了
步骤:
1、npm install body-parser --save
2、导包
3、实现某些方法
最后通过req.body即可以获取到post提交过来的参数
路由处理前端路由:
作用:当触发了某个超链接之后,根据路由的配置,决定
跳转到哪个页面,最终将这个页面呈现出来
后台的路由
作用:就是用来分门别类的出路用户发送过来的请求
express中代码实现?步骤:
1、先要创建一个单独的路由(js文件),来处理某一类
请求下面的所有用户请求,并且需要导出去
1.1 导入包 express
1.2 创建一个路由对象
const manRouter = express.Router()
1.3 在具体的路由js中处理属于我们该文件的路由
manRouter.get(xxx)
manRouter.post(xxx)
1.4 将上面创建的路由对象导出去,在入口文件中使用
2、在入口文件中,导入我们的路由文件,并且使用就可以了
[JavaScript] 纯文本查看 复制代码
//导入路由文件
const manRouter = require(path.join(__dirname,"man/manRouter.js"))
//在入口文件中使用
app.use('/man',manRouter)
```
## Express中静态资源的处理
Express希望对我们后台静态资源处理,达到简单的目的,
然后只希望我们程序员写一句话就能搞定
步骤:
1、在我们入口文件中设置静态资源的根目录
注意点:一定要在路由处理之前设置
app.use(express.static(path.join(__dirname,'statics')))
```
2、在我们的页面中,按照我们Express的规则来请求后台
静态资源数据
写link的href,script的src写的时候,除开静态资源根
路径之外,按照他在服务器上面的路径规则写
mongodb数据库数据库保存数据的仓库,数据库本质也是一个文件,只是说和普通的
文件不太一样,他有自己的存储规则,让我们保存数据和查询
数据更加方便
存储文件的介质localStorage 文本文件
大型数据或是海量数据的时候必须要用到数据库
数据库的分类客户端:
iOS/Android/前端
iOS/Android SQLite 在iOS/Android存储App的数据
服务端:
关系型数据库
部门---员工
mysql
sqlserver
oracle
非关系型数据库
JSON对象的形式来存储
MongoDB : 简单,你会js、JSON就能操作
Redis
Memcached
数据库的作用1、保存应用程序产生的数据(用户注册数据,用户的个人信息等等)
2、当应用程序需要数据的时候,提供给应用程序去展示
安装mongodb服务端步骤:
1、安装mongodb服务端软件
2、设置mongodb的环境变量,重启终端验证 mongo -version
3、建立一个文件夹,用来存储mongodb数据库产生的数
据(建议放在C盘根目录 mongodb_datas)
4、启动
mongod --dbpath c:/mongodb_datas
启动服务端有几种方式1、方式一,直接在cmd中输入 mongod --dbpath c:/mongodb_datas
32位: mongod --dbpath c:/mongodb_datas --journal --storageEngine=mmapv1
2、方式二,可以把mongod --dbpath c:/mongodb_datas做成一个批处理文件
32位: mongod --dbpath c:/mongodb_datas --journal --storageEngine=mmapv1
使用robomongo这个小机器人来操作我们的数据库中的数据步骤:
1、连接到我们mongodb数据库服务端,并且连接成功之
后,服务端会给我们返回一个操作数据库的db对象
2、拿着上一步返回的db对象,对mongodb数据库中的数据进行操作了
连接成功之后,我们要来操作数据的话
1、创建一个数据库 (相当于在excel中创建空白工作簿)
2、创建集合 (相当于在excel创建工作表单)
数据的一个集合,把相关联的数据放在一个集合中
3、确立表头,插入数据、删除数据、修改数据、查询数据
MongoDB数据库中的概念数据库 : 一个App中对应一个数据库
集合:相当于Excel中表单,一堆数据的集合,相关联的数据,
会放在一个集合中
文档:相当于excel中的每一行数据
一个数据中可以有多个集合(学生集合、食品集合)
一个集合可以有多条文档(多条数据)
在NodeJS中使用mongodb这个第三方包来操作我们mongodb数据库中的数据前提准备:
1、使用npm i mongodb --save来安装
正式集成:
1、导入包
2、拿到我们mongoClient对象
3、使用mongoClient连接到mongodb的服务端,返回操作数据库的db对象
4、通过db对象,拿到数据集合
[JavaScript] 纯文本查看 复制代码
db.collection('集合的名称')
```
5、调用集合的增,删,改,查的方法,来操作数据库中的数据
------------------------------------------
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |