fs文件系统模块

导入

const fs = require('fs')

fs.readFile( ‘ 打开路径’ [, ’编码格式‘ ] , 回调函数) 读取指定文件中的内容

fs.writeFile(‘ 存放路径’ ,‘写入内容’ [, ’编码格式‘ ] , 回调函数) 向指定文件中写入内容

回调函数 function(err,dataStr){ }

__dirname表示当前文件所处的目录

path路径模块

导入

const path = require('path')

path.join('任意个路径的片段') 用来将多个路径片段拼接成一个完整的路径字符串

其返回值是一个字符串形式

path.bansename(’文件路径‘[,‘文件扩展名’]) 用来从路径字符串中将文件名解析出来

其返回值是一个字符串形式

path.extname(’文件路径‘) 可以获取路径中的扩展名部分

其返回值是一个字符串形式

const fs = require('fs');

const path = require('path');

//匹配style标签与script标签

const regStyle = /', '');

fs.writeFile(path.join(__dirname, 'a.css'), newCSS, function (err, dataStr) {

if (err) console.log("失败1:"+err.message)

else console.log("成功1")

})

}

function resolveHtml(htmlStr) {

const r1 = htmlStr.replace(regStyle, '');

const r2 = r1.replace(regScript, '');

fs.writeFile(path.join(__dirname, 'a.html'), r2, function (err, dataStr) {

if (err) console.log("失败1:"+err.message)

else console.log("成功1")

})

}

http模块

把一台普通电脑变成一台服务器,从而对外提供WEB资源服务

// 导入

const http = require('http');

// 创建web服务器

const server = http.createServer();

// 绑定监听事件

server.on('request', function (req, res) {

const url = req.url;

if(url=='/')url='/index.html';

const f_path = path.join(__dirname,url);

fs.readFile(f_path, 'utf8', function (err, dataStr) {

if (err) console.log("网页打开失败:" + err.message)

else {

res.end(dataStr);

console.log("网页打开成功");

}

})

})

// 启动服务器

server.listen(80, function () {

console.log("服务器启动成功");

})

模块化

module (存储了和当前模块有关的信息)

module.exports (可以将模块内部成员共享出去,供其他部分使用)

exports (等同于module.exports,不过永远一module.exports指向为准,不要混用,不然要重新指向)

npm

第三方模块又叫包

装包命令

npm i 包完整名称

npm i (一次性安装所有的包)

npm i 包完整名称 -D (只在开发阶段用得到的包,上线后不用 例如 webpack包)

从淘宝的镜像源下载包,快一点

npm config set registry=https://registry.npm.taobao.org/

nrm工具方便切换镜像源

npm i nrm-g (安装)

nrm ls (查看所有镜像源)

nrm use taobao (切换到淘宝镜像源)

卸载包

npm uninstall 包完整名称

npm init -y (快速创建一个包管理 配置文件 package.json)

在package.json中的dependencies节点里面包含包的信息

// moment时钟包使用

const moment = require("moment");

var data = moment().format("YYYY-MM-DD HH:mm:ss")

console.log(data);

//i5ting_toc md转html包使用

//npm i i5ting_toc -g

//i5ting_toc -f 文件名 -o

//nodemon可以在修改之后重新自动加载项目

Express

和http类似,是专门创建web服务器的第三方包

const express = require('express');

const app = express();

//监听get和post请求

app.get('/',function(req,res){

res.send('get_ok')

})

app.post('/',function(req,res){

res.send('post_ok')

})

app.use(express.static('./'))//把目录当作静态资源展示

app.listen(80,function(){

console.log('创建成功')

})

//回应网页

res.end(dataStr);

//监听get和post请求

res.send('post_ok')

res.send('get_ok')

res.query();//获取传参

res.params();//获得动态参数,:后面的值

express中的路由

请求类型

请求的url地址

处理函数

//创建路由模块

var express = require('express');

var router = express.Router();

router.get('/user/list',function(req,res){ //挂载获取用户列表路由

res.send('获取路由')

})

router.post('/user/add',function(req,res){ //挂载添加用户的路由

res.send('添加路由')

})

module.exports = router //向外导出路由

//导入路由模块

const router = require('./router')

app.use(router)

express中间件

app.get('/',function(req,res,next){

next()

})

//中间件多一个next,与其他函数的区别

//next函数是实现中间件连续调用的关键,它表示把流转关系转交给下一个中间件或路由

//多个中间件之间共享一份req,res,基于这样的特性我们可以在上游的中间件统一为req,res对象添加自定义的属性或方法,供下游中间件或路由使用

//全局中间件,局部中间件

express中间件分类

1、应用级别的中间件 (通过app.use()或app.get()或app.post(),绑定到app上的中间件)

2、路由级别的中间件 (绑定到expres.Router()上的中间件)

3、错误级别的中间件 (专门用来捕获项目中发生的异常错误,从而防止项目异常崩溃的问题,必须有四个形参 err,req,res,next)

4、express内置的中间件 (static,json,urlencoded)

5、第三方的中间件 ()

跨域

cors中间件

const cors = require('cors');

app.use(cors());

简单请求

预检请求

jsonp

数据库

传统型数据库(关系型数据库,SQL数据库):MySQL、Oracle、SQL Server

新型数据库(非关系型数据库,NoSQL数据库):Mongodb

传统型数据库 :

数据库

数据表

数据行

字段

PK(主键,唯一标识)

NN(值不允许为空)

UQ(值唯一)

AI(值自动增长)

default/expression (设置默认值)

在项目中操作MySQL

1、安装mysql模块 npm i mysql

2、配置mysql模块

const mysql = require("mysql")

const db = mysql.createPool({

host:'127.0.0.1',

user:'root',

password:'12345',

database:'shujuku',

})

3、查询表里面内容

const sqlStr = 'select * from users'

db.query(sqlStr,function(err,result){

if(err)console.log(err.message)

else console.log(result)

})

//因为数据库版本问题可能会链接不上

//进入C:\Program Files\MySQL\MySQL Server 8.0\bin 终端打开

//mysql -u root -p。然后输入自己数据库的密码,进入数据库

//

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

1

上面’123456’是我的数据库密码,将其改为自己的即可。

//FLUSH PRIVILEGES;

插入数据

const use = {username:'nn',password:'12345'};

const sql = 'insert into users set ?'

db.query(sql,use,function(err,result){

if(err)console.log(err.message)

else console.log('插入成功')

})

更新数据

const new_use = {id:3,username:'new2——',password:'12345'};

const new_sql = 'update users set? where id=?';

db.query(new_sql,[new_use,new_use.id],function(err,result){

if(err)console.log(err.message)

else console.log('更新成功')

})

删除数据

const delete_use = 'delete from users where id=?';

db.query(delete_use,1,function(err,result){

if(err)console.log(err.message)

else console.log('删除成功')

})

web开发模式

基于服务端渲染的传统web开发模式

基于前后端分离的新型web开发模式

身份认证

Session

相关链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: