#Node

# node

一、安装nodejs

下载地址:http://nodejs.cn/download/

二、安装git

下载地址:https://git-scm.com/download/win

git clone -》克隆  下拉代码  git clone + 仓库地址  (master:主分支 切换到开发分支)

git status  -> 查看本地文件修改记录 修改了哪些文件

git diff -> 查看具修改了的内容 查看具体修改了哪些内容

git add . ->新建本地仓库 由本地仓库发布到远程仓库

git commit -m "新增。。"  -》 提交代码 增加修改记录

git push -》推送到远程仓库

git pull -》 更新远程仓库的代码

git branch -》查看分支

-> 分支

主分支: master (一个已经上线了的项目)

开发分支: dev_201807.....

上线前的分支:dev_release_20181821...

-》查看当前分支

git branch

git checkout dev_...... 本地开发分支

git checkout origin/dev.... 远程分支

配置ssh :

查看 git用户信息:

git config user.name // 查看用户名

git config user.email // 查看用户邮箱

git config --global user.name "zhangsan" // 设置用户名

git config --global user.email "a...com" // 设置邮箱

生成sshkey

ssh-keygen -t rsa -C "wangshanshan@mgzf.com"

bower -> 包管理

安装: npm insall bower -g

安装淘宝镜像:

npm install -g cnpm --registry=https://registry.npm.taobao.org

-> static: jquery,bootstrap,swiper,vue, react.....(js库)

npm -> 包管理

npm install -g bower

初始化:

npm init -》package.json文件

cnpm install jquery bootstrap swiper --save 下载开发所需要的依赖  --save(记录开发以来的版本号)

创建package.json文件

-> REPL

打开交互式解释器: node

交互式解释器

读取 打印 循环

-> 使用变量 将数据存储在变量中

-> console.log()  调试

-> 多行表达式

do while    for    while

-> 下划线

_ 获取上一个表达式的结果

REPL命令

ctrl + c

-> 两次 -》

http模块 (服务):

服务器  apache  tomcat  nginx

使用:

1. 引入http模块  =》  require('http')

2. 通过http模块创建http服务 =》http.createServer

http.listen() =》监听端口

response: 响应

request: 请求

response.writeHead('状态', content-type)

3. 发送请求与响应请求

Content-Type: text/html  以html形式返回

text/plain 以原样形式返回

text/json  以json形式返回

text/xml   以xml形式返回

events模块

nodejs 异步操作 -》事件队列  a b c。。。

js单线程

event模块提供了一个对象:event.EventEmitter

events.eventEmitter

on 监听  支持多个监听

emit 触发

EventEmitter.addListener  为指定事件添加一个监听器到监听器数组的尾部

Buffer -> 缓冲区

buffer类 -》 存放二进制数据

stream模块 fs模块

-》 可读性

-》 可写性

-》 可读可写

-》 先写再读

特点:

-》阻塞型

-》非阻塞型

1. 使用:

require('fs')

// 读取

fs.createReadStream 创建一个读取文件流 fs.createReadStream 创建一个读取文件流

fs.readerStream.setEncoding('UTF8')  设置编码格式

fs.readerStream.on  -> data  // 正在读取

-> end  // 读取完成

// 写入

fs.createWriteStream 写入文件流

fs.wirteStream.write(data, 'UTF8')  // 正在写入

fs.wirteStream.end()   // 写入完成

fs.writeFile(文件名称, 写入内容, 回调函数) // 写入文件内容

fs.mkdir(文件夹名称, 回调) // 创建文件夹

fs.exists(文件夹名称,回调) // 判断是否有文件夹

fs.appendFile('文件',文件内容,回调)

管道流: 从一个文件读取,将一个文件的内容写入到另外一个文件

path: 路径模块

path.normalize() // 标准化路径

path.join() // 路径整合

path.dirname() // 获取路径

path.basename() // 获取文件名

常量:

1. __dirname  // 获取当前文件所在目录

2. __filename  // 获取当前文件的目录和文件名

process模块:

process.version // node版本号

process.pid // 进程号

process.title // 进程的标题

queryString模块: 对http请求数据进行处理

queryString.parse   // 将字符串参数转化为对象

queryString.stringfy  //将对象抓暖胃字符串

queryString.escape

queryString.unescape

url模块:

url.parse =>

url.port // 获取端口号

url.protocol // 获取协议

url.hostname // 主机名称

url.hash // hash参数

url.search // 获取serach参数

url.query

url.pathname

express模版:

nodejs web应用框架 route http请求等等

1.可以用中间件来处理http请求

2.可以使用router

3.可以利用模版来传参到页面

使用:

1.npm install express   引入express

// 创建服务

express().get('/index.html')

http.createServer

// ajax 前后端通信 get post put delete

// 处理静态资源

app.use(express.static(静态文件的位置))

app.get() get请求 请求与响应

路由:可以提取到请求的url  获取get参数 post参数

app.get() // 查询数据

app.post() // 提交数据

app.put() // 修改数据

app.delete() // 删除数据

body-parser 中间件   接收到客户端请求时,都会给req添加属性

使用: npm install body-parser --save

-》解析数据 json string

bodyParser.json()

bodyParser.urlencoded({extended: true/false}) false:处理字符串 或者 数组                                               true:处理所有类型的数据

cookie-parser 本地会话存储 -》 设置过期时间  由服务端发送给客户端

http -> 无状态协议 客户端与服务端在数据传输完成之后就会中断连接

需要客户端主动发送请求

cookie -> 保持会话连接的机制

cookie-parser : 设置、获取、删除cookie

res.cookies() // 设置cookie

req.cookie() // 获取cookie

模版引擎 -》 jade  -> 静态页面 -> 定义和使用变量 -> 最终会渲染成html

-> 服务端 ->res   模板引擎 -> 加载数据

// 使用模板引擎

npm install jade

express() .set('view engine', 'jade')

set('views', 'www') // 路径

jade -> html + 数据

res.render() 渲染响应的数据 将jade页面和数据整合

#{}  // 加载变量

定义变量

mysql 是当今最流行的关系型数据库  -》 数据库:按数据结构来组织、存储和管理数据的仓库

特点一:以表格的形式出现

购买时间 商品名称 价格 商品id 。。。 存储在表格里面

特点二:数据库是由若干张表组成的 表格之间建立联系 ->关系型数据库

php java

安装数据库:https://dev.mysql.com/downloads/mysql/

windows

同意协议

安装类型: server only

执行mysql的下载

navcat -> 数据库的可视化工具

wampServer -> apache服务   资源: www目录下  -》 服务 集成了mysql服务

创建数据库和表    表是存储在数据库内的。

表里面存储的是字段,那么字段分为以下几种类型:

数字类型

int ->  (大整数值 )

-> TINYINT (0, 255) 存储小整数值

-> SMALLINT (0, 65535) 存储大的整数值

字符串类型

char  大小 0-255字节  用途类型:定长字符串

varchar  大小 0-60000+字节  用途类型:变长字符串

日期时间类型

date -> 大小 3  日期值:YYYY-MM-DD

time -> HH:MM:SS 时间

datetime -> 日期和时间 YYYY-MM-DD HH:MM:SS

timeStamp -> 时间戳 YYYY-MM-DD HH:MM:SS

use mysql  ->  使用数据库

create DATABASE + 名称  ->  创建数据库

create DATABASE IF NOT EXISTS + 名称

show DATABASES -> 查看数据库

drop database + 名称 -> 删除数据库

use + 数据库名称 -> 使用数据库

show tables; -> 查看表格

create table if not exists user (

'id' INT NOT NULL AUTO_INCREMENT,

'username' varchar(20) NOT NULL,

'age' INT NOT NULL,

PRIMARY KEY (id)

)

主键:id

id username age   id是不能重复的,并且不能为null

插入数据:

insert into 表格名称 (id,name) values ('1','王五')

查看数据:

select * from + 表名

select + 字段名 + from + 表名

条件查询:

SELECT id,username from userdata WHERE username = '王五';

更新数据:

update + 表名 + set username = '范冰冰' where id = 3;

删除数据:

delete from + 表名 + where 。。。

模糊查询:

select * from + 表名 where ... like '%手机'

union 操作符 用于连接两个以上的select语句的结果

order by 排序 DESC倒叙 ESC正序

group by 分组 根据一个或者多个列对结果进行分组

mysql的连接使用:

在一张表里面进行操作,关系型数据库,表与表之间是关联的

mysql多张表之间的连接:

inner join : 内连接 a表 b表 获取两张表中字段相匹配的记录

left join : 左连接

right join : 右连接

mysql事务:

处理操作量大 复杂度高的数据

可以维护数据库的完整性,保证sql语句 全部执行或者全部不执行

事务管理:insert,update,delete等语句 可能不止一条sql语句 如果其中的一条

sql语句没有执行成功,那么其他的sql语句也不会执行成功。

特性:

原子性:一个事务中的操作,要么全成功,要么全部不成功。

一致性:保证数据库的完整性

持久性:事务处理成功后,对数据的修改是永久的

语句:

BEGIN  -> 开启一个事务

COMMIT -> 提交一个事务

ROOLLBACK -> 回滚,撤销正在进行的未提交的修改

删除一个用户 -》 用户信息存储在几张表内 其中一张表的数据删除失败,就执行回滚操作,只能当所有的表的数据都删除,才执行最后的删除。

alert命令 修改数据库表名或者字段

alert table + 表名 + drop/add + 字段名

ALTER TABLE ibf_student RENAME TO bfw_student; -> 修改表的名称

mysql的索引:

索引可以提高mysql的检索速度

索引是应用在sql与剧中的where语句中的。

select ... from ibf_student where id = 10

ibf_student 数据量很大,查询速度会非常慢

索引可以提升查询速度,但是降低更新表的速度

优化查询速率

mysql创建临时表

保存临时数据,只在当前连接可见,当连接断开,mysql会自动清除这些表

create temporary table + 表名

# node案例  websocket

websocket模块

http服务 -》 前端发起请求,后端响应  http请求 -》 无状态的

websocket 服务 长连接 后端可以主动发送响应给前端

使用: npm install nodejs-websocket

1.引入websocket

require('nodejs-websocket')

webSocket.createServer()

ws.on('text') // 监听客户端的发送的数据

ws.send() // 客户端发送数据到服务端

ws.sendText() // 服务端发送数据到客户端

ws.onmessage() // 接受到服务端传来的数据

任务:

使用sql语句:

1.新建一张员工表:employee

字段:

nu  -> 编号    -》 主键  非空  自增

name -> 姓名   -》 非空

gender -> 性别   -》 非空

dept_no -> 部门编号    -》 非空

job -> 职位    -》 非空

salary -> 薪水    -》 非空

hireDate -> 入职日期    -》 非空

2.部门结构表: dept

nu -> 部门编号  -》 主键   非空

name -> 部门名称  -》    非空

location -> 部门地址   -》   非空

nodejs连接mysql:

mysql模块:

1. cnpm install mysql --save

2. 引入mysql模块 -》 require('mysql')

mysql.createConnection()  // 建立连接

-> host: 'localhost'

-> user: ''

-> password: ''

-> database

任务一:

mysql练习

表一:学生表 表名student  字段:学生编号-》sid 学生姓名 -》sname

学生年龄-》sage 学生性别 -》ssex

表二:课程表 表名course   字段:课程编号-》cid 课程名称 -》 cname

教师编号 tid

表三:教师表 表名teacher  字段:教师编号 tid 教师姓名:tname

表四:成绩表 表名sc       字段:学生编号-》sid 课程编号-》cid 成绩-》score

# 查询 编号为1的课程比编号为2的课程成绩高的学生的编号

# (SELECT sid,score FROM sc WHERE cid = '1')

查询 课程编号为1的学生id、分数

# (SELECT sid,score FROM sc WHERE cid = '2')

查询 课程编号为2的学生id、分数

SELECT * FROM (SELECT sid,score FROM sc WHERE cid = '1') a INNER JOIN

(SELECT sid,score FROM sc WHERE cid = '2') b on a.sid = b.sid WHERE a.score > b.score;

# 查询平均成绩大于60分的同学的学号和平均成绩

SELECT sid,AVG(score) FROM sc GROUP BY sid HAVING AVG(score) > 60;

聚合函数 -》HAVING

WHERE   HAVING

任务二:

nodejs操作mysql

查询数据:

server.query(查询语句,结果集)

插入数据:

server.query(插入语句,需要插入的数据,结果集)

任务: 安装mongodb

1.下载安装mongodb

https://www.mongodb.com/download-center#community

2.配置环境变量

在我的电脑 -》 属性 -》高级系统设置 -》环境变量

C:\Program Files\MongoDB\Server\3.2\bin

3.配置数据目录

01.创建数据存放目录:mkdir data

02.自定义数据存放目录:mongod --dbpath "d:\data"

4.启动mongodb

mongo --port 27017

5.在windows里面添加mongodb服务

01.设置数据库的存放路径:--dbpath "d:\data\db"

02.设置日志存放路径:--logpath "d:\data\log"

03.设置日志的记录方式:--logappend

04.设置数据库的端口号: --port 27017

05.设置服务的名称:--serverName "..."

06.添加到windows服务;--install

All: mongod --dbpath "d:\data\db" --logpath "d:\data\log\log.txt" --logappend --serviceName "MongoDB" --install

6.启动mongodb服务

以管理员身份运行cmd

net start mongoDB

7.开启mongdb

mongo --port 端口号

mongodb命令:

查看数据库:show dbs

创建数据库:use + 数据库名称  (数据库存在则使用这个数据库,否则创建这个数据库)

插入数据:db.ibf_data.insert({})

删除数据库:db.dropDatabase()

查询数据:db + 数据库名称 + find()

条件查询:db + 数据库名称 + findOne()

更新语句:db + 数据库名称 + update() 参数:查询条件 更新内容 如果查询条件不存在,默认插入数据 true:查询匹配

全部数据

移除数据:db + 数据库名称 + reomve()

limit : db + 数据库名称 + find() + limit()

skip: db + 数据库名称 + find() + skip()

sort:  db + 数据库名称 + find() + sort() 1 / -1

设置索引:db + 数据库名称 + createIndex

任务:

nodejs 连接mongodb

操作mongodb

ajax

mongodb中间件:

1.安装mongod / mongoose

npm install mongodb

npm install mongoose

2.引入mongodb / mongoose

3.连接数据库:

mongodb.MongoClient() -> connect()

mongoose.connect()

创建表:

1.创建模型骨架 -》 定义key值类型

mongoose.Schema() -》创建模型骨架

2.创建数据模型

mongoose.model()

3.添加数据

mongoose.model().create()

4.更新数据

mongoose.model.update('查询条件','更新内容')

5.删除数据

mongoose.model.remove('查询条件')

ajax: 异步请求

作用:前后端通信,将后端数据异步渲染到页面上

1.创建ajax请求对象

2.打开操作

3.绑定xmlhttprequest对象监听

4.发送请求

任务:

1. 完成node项目案例

2.回顾nodejs课程

#Node# node一、安装nodejs    下载地址:http://nodejs.cn/download/二、安装git    下载地址:https://git-scm.com/download/win

git clone -》克隆  下拉代码  git clone + 仓库地址  (master:主分支 切换到开发分支)
git status  -> 查看本地文件修改记录 修改了哪些文件
git diff -> 查看具修改了的内容 查看具体修改了哪些内容
git add . ->新建本地仓库 由本地仓库发布到远程仓库
git commit -m "新增。。"  -》 提交代码 增加修改记录
git push -》推送到远程仓库
git pull -》 更新远程仓库的代码
git branch -》查看分支-> 分支    主分支: master (一个已经上线了的项目)    开发分支: dev_201807.....     上线前的分支:dev_release_20181821...
    -》查看当前分支    git branch
    git checkout dev_...... 本地开发分支    git checkout origin/dev.... 远程分支

配置ssh :    查看 git用户信息:    git config user.name // 查看用户名    git config user.email // 查看用户邮箱
    git config --global user.name "zhangsan" // 设置用户名    git config --global user.email "a...com" // 设置邮箱
    生成sshkey    ssh-keygen -t rsa -C "wangshanshan@mgzf.com"

bower -> 包管理        安装: npm insall bower -g         安装淘宝镜像:        npm install -g cnpm --registry=https://registry.npm.taobao.org        -> static: jquery,bootstrap,swiper,vue, react.....(js库)    npm -> 包管理        npm install -g bower 
        初始化:        npm init -》package.json文件        cnpm install jquery bootstrap swiper --save 下载开发所需要的依赖  --save(记录开发以来的版本号)        创建package.json文件
    -> REPL        打开交互式解释器: node        交互式解释器            读取 打印 循环
            -> 使用变量 将数据存储在变量中             -> console.log()  调试
            -> 多行表达式                do while    for    while
            -> 下划线                _ 获取上一个表达式的结果
            REPL命令                ctrl + c                     -> 两次 -》

http模块 (服务):        服务器  apache  tomcat  nginx
        使用:            1. 引入http模块  =》  require('http')               2. 通过http模块创建http服务 =》http.createServer                http.listen() =》监听端口                response: 响应                request: 请求                response.writeHead('状态', content-type)
            3. 发送请求与响应请求
            Content-Type: text/html  以html形式返回                           text/plain 以原样形式返回                          text/json  以json形式返回                          text/xml   以xml形式返回
    events模块        nodejs 异步操作 -》事件队列  a b c。。。
        js单线程 
        event模块提供了一个对象:event.EventEmitter        events.eventEmitter            on 监听  支持多个监听            emit 触发
            EventEmitter.addListener  为指定事件添加一个监听器到监听器数组的尾部
        Buffer -> 缓冲区            buffer类 -》 存放二进制数据
        stream模块 fs模块            -》 可读性            -》 可写性            -》 可读可写            -》 先写再读            特点:                -》阻塞型                -》非阻塞型            1. 使用:                require('fs')                        // 读取            fs.createReadStream 创建一个读取文件流 fs.createReadStream 创建一个读取文件流            fs.readerStream.setEncoding('UTF8')  设置编码格式            fs.readerStream.on  -> data  // 正在读取                             -> end  // 读取完成            // 写入            fs.createWriteStream 写入文件流            fs.wirteStream.write(data, 'UTF8')  // 正在写入            fs.wirteStream.end()   // 写入完成                        fs.writeFile(文件名称, 写入内容, 回调函数) // 写入文件内容            fs.mkdir(文件夹名称, 回调) // 创建文件夹            fs.exists(文件夹名称,回调) // 判断是否有文件夹            fs.appendFile('文件',文件内容,回调)
            管道流: 从一个文件读取,将一个文件的内容写入到另外一个文件

path: 路径模块                path.normalize() // 标准化路径                path.join() // 路径整合                path.dirname() // 获取路径                path.basename() // 获取文件名                            常量:                 1. __dirname  // 获取当前文件所在目录                2. __filename  // 获取当前文件的目录和文件名
            process模块:                 process.version // node版本号                process.pid // 进程号                process.title // 进程的标题   
            queryString模块: 对http请求数据进行处理                queryString.parse   // 将字符串参数转化为对象                queryString.stringfy  //将对象抓暖胃字符串                queryString.escape                queryString.unescape
            url模块:            url.parse =>                url.port // 获取端口号                url.protocol // 获取协议                url.hostname // 主机名称                url.hash // hash参数                url.search // 获取serach参数                url.query                url.pathname                                    express模版:                nodejs web应用框架 route http请求等等                    1.可以用中间件来处理http请求                    2.可以使用router                     3.可以利用模版来传参到页面
                使用:                    1.npm install express   引入express                        // 创建服务                        express().get('/index.html')                        http.createServer                        // ajax 前后端通信 get post put delete                        // 处理静态资源                        app.use(express.static(静态文件的位置))                        app.get() get请求 请求与响应
                        路由:可以提取到请求的url  获取get参数 post参数                        app.get() // 查询数据                        app.post() // 提交数据                        app.put() // 修改数据                        app.delete() // 删除数据

body-parser 中间件   接收到客户端请求时,都会给req添加属性                        使用: npm install body-parser --save                        -》解析数据 json string                         bodyParser.json()                         bodyParser.urlencoded({extended: true/false}) false:处理字符串 或者 数组                                               true:处理所有类型的数据            cookie-parser 本地会话存储 -》 设置过期时间  由服务端发送给客户端                        http -> 无状态协议 客户端与服务端在数据传输完成之后就会中断连接                                          需要客户端主动发送请求                                          cookie -> 保持会话连接的机制
                        cookie-parser : 设置、获取、删除cookie
                        res.cookies() // 设置cookie                        req.cookie() // 获取cookie

模版引擎 -》 jade  -> 静态页面 -> 定义和使用变量 -> 最终会渲染成html                        -> 服务端 ->res   模板引擎 -> 加载数据
            // 使用模板引擎            npm install jade             express() .set('view engine', 'jade')                       set('views', 'www') // 路径            jade -> html + 数据
            res.render() 渲染响应的数据 将jade页面和数据整合
            #{}  // 加载变量            定义变量  
            mysql 是当今最流行的关系型数据库  -》 数据库:按数据结构来组织、存储和管理数据的仓库                特点一:以表格的形式出现                购买时间 商品名称 价格 商品id 。。。 存储在表格里面                特点二:数据库是由若干张表组成的 表格之间建立联系 ->关系型数据库                php java
                安装数据库:https://dev.mysql.com/downloads/mysql/                          windows                             同意协议                            安装类型: server only                            执行mysql的下载
                navcat -> 数据库的可视化工具                wampServer -> apache服务   资源: www目录下  -》 服务 集成了mysql服务
                创建数据库和表    表是存储在数据库内的。                表里面存储的是字段,那么字段分为以下几种类型:                    数字类型                        int ->  (大整数值 )                        -> TINYINT (0, 255) 存储小整数值                        -> SMALLINT (0, 65535) 存储大的整数值                    字符串类型                        char  大小 0-255字节  用途类型:定长字符串                        varchar  大小 0-60000+字节  用途类型:变长字符串                    日期时间类型                        date -> 大小 3  日期值:YYYY-MM-DD                        time -> HH:MM:SS 时间                        datetime -> 日期和时间 YYYY-MM-DD HH:MM:SS                        timeStamp -> 时间戳 YYYY-MM-DD HH:MM:SS 
                use mysql  ->  使用数据库                create DATABASE + 名称  ->  创建数据库                create DATABASE IF NOT EXISTS + 名称                show DATABASES -> 查看数据库                drop database + 名称 -> 删除数据库                use + 数据库名称 -> 使用数据库
                show tables; -> 查看表格                create table if not exists user (                    'id' INT NOT NULL AUTO_INCREMENT,                    'username' varchar(20) NOT NULL,                    'age' INT NOT NULL,                    PRIMARY KEY (id)                )                主键:id                id username age   id是不能重复的,并且不能为null
                插入数据:                    insert into 表格名称 (id,name) values ('1','王五')                查看数据:                    select * from + 表名                    select + 字段名 + from + 表名
                    条件查询:                    SELECT id,username from userdata WHERE username = '王五';                                更新数据:                    update + 表名 + set username = '范冰冰' where id = 3;                删除数据:                    delete from + 表名 + where 。。。                模糊查询:                select * from + 表名 where ... like '%手机'
                union 操作符 用于连接两个以上的select语句的结果
                order by 排序 DESC倒叙 ESC正序                group by 分组 根据一个或者多个列对结果进行分组  
                mysql的连接使用:                    在一张表里面进行操作,关系型数据库,表与表之间是关联的                mysql多张表之间的连接:                    inner join : 内连接 a表 b表 获取两张表中字段相匹配的记录                    left join : 左连接                    right join : 右连接                                mysql事务:                    处理操作量大 复杂度高的数据                     可以维护数据库的完整性,保证sql语句 全部执行或者全部不执行                    事务管理:insert,update,delete等语句 可能不止一条sql语句 如果其中的一条                            sql语句没有执行成功,那么其他的sql语句也不会执行成功。                    特性:                        原子性:一个事务中的操作,要么全成功,要么全部不成功。                        一致性:保证数据库的完整性                        持久性:事务处理成功后,对数据的修改是永久的                    语句:                        BEGIN  -> 开启一个事务                        COMMIT -> 提交一个事务                        ROOLLBACK -> 回滚,撤销正在进行的未提交的修改
                    删除一个用户 -》 用户信息存储在几张表内 其中一张表的数据删除失败,就执行回滚操作,只能当所有的表的数据都删除,才执行最后的删除。
                alert命令 修改数据库表名或者字段                    alert table + 表名 + drop/add + 字段名                    ALTER TABLE ibf_student RENAME TO bfw_student; -> 修改表的名称  
                mysql的索引:                    索引可以提高mysql的检索速度                    索引是应用在sql与剧中的where语句中的。                                select ... from ibf_student where id = 10                    ibf_student 数据量很大,查询速度会非常慢                    索引可以提升查询速度,但是降低更新表的速度                    优化查询速率                                mysql创建临时表                    保存临时数据,只在当前连接可见,当连接断开,mysql会自动清除这些表                    create temporary table + 表名
            # node案例  websocket
            websocket模块                http服务 -》 前端发起请求,后端响应  http请求 -》 无状态的                websocket 服务 长连接 后端可以主动发送响应给前端
                使用: npm install nodejs-websocket                1.引入websocket                    require('nodejs-websocket')                    webSocket.createServer()                    ws.on('text') // 监听客户端的发送的数据                    ws.send() // 客户端发送数据到服务端                    ws.sendText() // 服务端发送数据到客户端                    ws.onmessage() // 接受到服务端传来的数据

任务:                  使用sql语句:                  1.新建一张员工表:employee                  字段:                        nu  -> 编号    -》 主键  非空  自增                        name -> 姓名   -》 非空                        gender -> 性别   -》 非空                        dept_no -> 部门编号    -》 非空                        job -> 职位    -》 非空                        salary -> 薪水    -》 非空                        hireDate -> 入职日期    -》 非空                  2.部门结构表: dept                        nu -> 部门编号  -》 主键   非空                        name -> 部门名称  -》    非空                        location -> 部门地址   -》   非空

nodejs连接mysql:                    mysql模块:                    1. cnpm install mysql --save                    2. 引入mysql模块 -》 require('mysql')                    mysql.createConnection()  // 建立连接                        -> host: 'localhost'                        -> user: ''                        -> password: ''                        -> database
                 任务一:                    mysql练习                        表一:学生表 表名student  字段:学生编号-》sid 学生姓名 -》sname                                                  学生年龄-》sage 学生性别 -》ssex                    表二:课程表 表名course   字段:课程编号-》cid 课程名称 -》 cname                                                   教师编号 tid                    表三:教师表 表名teacher  字段:教师编号 tid 教师姓名:tname                    表四:成绩表 表名sc       字段:学生编号-》sid 课程编号-》cid 成绩-》score
                    # 查询 编号为1的课程比编号为2的课程成绩高的学生的编号                    # (SELECT sid,score FROM sc WHERE cid = '1')                     查询 课程编号为1的学生id、分数                    # (SELECT sid,score FROM sc WHERE cid = '2')                     查询 课程编号为2的学生id、分数                    SELECT * FROM (SELECT sid,score FROM sc WHERE cid = '1') a INNER JOIN                    (SELECT sid,score FROM sc WHERE cid = '2') b on a.sid = b.sid WHERE a.score > b.score;
                    # 查询平均成绩大于60分的同学的学号和平均成绩                    SELECT sid,AVG(score) FROM sc GROUP BY sid HAVING AVG(score) > 60;                    聚合函数 -》HAVING                    WHERE   HAVING
                 任务二:                    nodejs操作mysql
                    查询数据:                        server.query(查询语句,结果集)                    插入数据:                        server.query(插入语句,需要插入的数据,结果集)

任务: 安装mongodb                    1.下载安装mongodb                    https://www.mongodb.com/download-center#community                    2.配置环境变量                    在我的电脑 -》 属性 -》高级系统设置 -》环境变量                    C:\Program Files\MongoDB\Server\3.2\bin                    3.配置数据目录                        01.创建数据存放目录:mkdir data                        02.自定义数据存放目录:mongod --dbpath "d:\data"                    4.启动mongodb                    mongo --port 27017                    5.在windows里面添加mongodb服务                        01.设置数据库的存放路径:--dbpath "d:\data\db"                        02.设置日志存放路径:--logpath "d:\data\log"                        03.设置日志的记录方式:--logappend                         04.设置数据库的端口号: --port 27017                        05.设置服务的名称:--serverName "..."                        06.添加到windows服务;--install                         All: mongod --dbpath "d:\data\db" --logpath "d:\data\log\log.txt" --logappend --serviceName "MongoDB" --install                    6.启动mongodb服务                        以管理员身份运行cmd                        net start mongoDB                    7.开启mongdb                        mongo --port 端口号                                mongodb命令:                    查看数据库:show dbs                    创建数据库:use + 数据库名称  (数据库存在则使用这个数据库,否则创建这个数据库)                    插入数据:db.ibf_data.insert({})                    删除数据库:db.dropDatabase()                    查询数据:db + 数据库名称 + find()                    条件查询:db + 数据库名称 + findOne()                    更新语句:db + 数据库名称 + update() 参数:查询条件 更新内容 如果查询条件不存在,默认插入数据 true:查询匹配                                                            全部数据                    移除数据:db + 数据库名称 + reomve()                     limit : db + 数据库名称 + find() + limit()                    skip: db + 数据库名称 + find() + skip()                    sort:  db + 数据库名称 + find() + sort() 1 / -1                    设置索引:db + 数据库名称 + createIndex

任务:                nodejs 连接mongodb                       操作mongodb                ajax
                mongodb中间件:                1.安装mongod / mongoose                          npm install mongodb                    npm install mongoose                2.引入mongodb / mongoose                3.连接数据库:                    mongodb.MongoClient() -> connect()                    mongoose.connect()
                创建表:                    1.创建模型骨架 -》 定义key值类型                        mongoose.Schema() -》创建模型骨架                    2.创建数据模型                        mongoose.model()                    3.添加数据                        mongoose.model().create()                     4.更新数据                        mongoose.model.update('查询条件','更新内容')                    5.删除数据                        mongoose.model.remove('查询条件')
                        ajax: 异步请求            作用:前后端通信,将后端数据异步渲染到页面上
                1.创建ajax请求对象                2.打开操作                3.绑定xmlhttprequest对象监听                4.发送请求

任务:            1. 完成node项目案例            2.回顾nodejs课程

git npm包管理的更多相关文章

  1. node.js零基础详细教程(3):npm包管理、git github的使用

    第三章  建议学习时间4小时  课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑 ...

  2. Node.js之包与npm包管理工具

    Node.js之包与npm包管理工具 1.Node.js中的包 1.1在一个包中包含如下内容: package.json:对包进行描述 在bin子目录中存放二进制文件 在lib子目录中存放JavaSc ...

  3. nodeJS---模块与npm包管理工具

    nodeJS---模块与npm包管理工具 一:从模块外部访问另一个模块内的成员; 假如我现在还在D盘中的node文件夹内中的app.js代码改成如下: var msg = 'hello'; var f ...

  4. Node.js权威指南 (4) - 模块与npm包管理工具

    4.1 核心模块与文件模块 / 574.2 从模块外部访问模块内的成员 / 58 4.2.1 使用exports对象 / 58 4.2.2 将模块定义为类 / 58 4.2.3 为模块类定义类变量或类 ...

  5. 【转】npm包管理器那些事

    原文链接:http://www.cnblogs.com/shuoer/p/7782125.html npm包管理器那些事! 今天和朋友针对npm包全局安装和本地项目安装这个梗展开的激烈的讨论,故此做一 ...

  6. node.js中npm包管理工具

    现在安装node.js,默认就会帮我们装上了npm包管理工具,npm主要用来下载,安装,管理第三方模块. 创建一个包描述文件: npm init [-y] 查看包的信息 npm info <pa ...

  7. Nodejs-内置核心模块&npm包管理工具

    1.核心模块的意义 如果只是在服务器运行JavaScript代码,其实意义不大(浏览器就可以解决)因为无法实现功能(读写文件,访问网络) Node的用处在于本身还提供了一系列的功能模块,用于与操作系统 ...

  8. 结合docker发布前端项目(基于npm包管理)的shell脚本

    结合docker发布前端项目(基于npm包管理)的shell脚本 本教程依据个人理解并经过实际验证为正确,特此记录下来,权当笔记. 注:基于linux操作系统 目前主流的前后端分离的项目中,常常在部署 ...

  9. NPM 包管理工具详解,使用教程

    NPM 包管理工具 1.1 定义:什么是 NPM NPM 全称 Node Package Manager,它是 JavaScript 的包管理工具, 并且是 Node.js 平台的默认包管理工具.通过 ...

随机推荐

  1. OAuth2.0授权码模式

    OAuth2.0简单说就是一种授权的协议,OAuth2.0在客户端与服务提供商之间,设置了一个授权层(authorization layer).客户端不能直接登录服务提供商,只能登录授权层,以此将用户 ...

  2. 前端实现的canvas支持多图压缩并打包下载的工具

    # 技术栈 canvas jszip.js(网页端压缩解压缩插件JSZIP库) FileSaver.js(文件保存到本地库) 在线预览:http://htmlpreview.github.io/?ht ...

  3. Python sorted 函数

    Python sorted 函数 sorted 可以对所有可迭代的对象进行排序操作,sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作.从新排序列表. sorted 语法: ...

  4. 【UOJ#308】【UNR#2】UOJ拯救计划

    [UOJ#308][UNR#2]UOJ拯救计划 题面 UOJ 题解 如果模数很奇怪,我们可以插值一下,设\(f[i]\)表示用了\(i\)种颜色的方案数. 然而模\(6\)这个东西很有意思,\(6=2 ...

  5. 【Easyexcel】java导入导出超大数据量的xlsx文件 解决方法

    解决方法: 使用easyexcel解决超大数据量的导入导出xlsx文件 easyexcel最大支持行数 1048576. 官网地址: https://alibaba-easyexcel.github. ...

  6. kali渗透综合靶机(十六)--evilscience靶机

    kali渗透综合靶机(十六)--evilscience靶机 一.主机发现 1.netdiscover -i eth0 -r 192.168.10.0/24 二.端口扫描 1. masscan --ra ...

  7. Prometheus监控学习笔记之Prometheus如何热加载更新配置

    0x00 概述 当 Prometheus 有配置文件修改,我们可以采用 Prometheus 提供的热更新方法实现在不停服务的情况下实现配置文件的重新加载. 0x01 热更新 热更新加载方法有两种: ...

  8. css样式篇

    list-style list-style-type     设置列表项标记的类型 list-style-position  可设置outside(列表项目标记放置在文本以内,且环绕文本根据标记对齐) ...

  9. 深入理解Java对象

    深入理解Java对象(理清关系) 1.对象的创建过程: 所有创建过程如下所示: new 类名 根据new的参数在常量池中定位一个类的符号引用. 如果没有找到这个符号引用,说明类还没有被加载,则进行类的 ...

  10. linux shell编程,先等10秒再判断是否有进程存在,存在就再等10秒再杀了进程才运行

    linux shell编程,先等10秒再判断是否有进程存在,存在就再等10秒再杀了进程才运行 crontab每分钟执行一次,但5秒以上才有更新数据,有时候一分钟可能跑不完上一个进程,需要先等10秒再判 ...