nodeJs+express框架

这是一份关于Node.js的详细学习记录,从基础的模块化、npm使用到Express框架的安装、配置和中间件应用,再到Cookie与Session的管理、模板引擎Jade和EJS的使用,以及数据库操作和SQL语句的学习。此外,还涵盖了文件上传、路由、MD5加密等实战技巧。
摘要由CSDN通过智能技术生成

nodeJs

1. nodeJs官网:http://nodejs.cn/api/

day01

1. 切换盘符	e:
2. 改变目录	cd目录名
3. 执行程序	node xxx.js

day02

request		请求		-输入请求的信息
response	响应		-输出的东西

`const http = require('http')

const server = http.createServer(function (req, res) {
    // console.log('有人来了')
    console.log(req.url)
    switch (req.url) {
        case '/1.html':
            res.write('111')
            break;
        case '/2.html':
            res.write('222')
            break;
        default:
            res.write('404')
    }

    res.end();
})`

// 监听-等着
// 端口-数字
server.listen(8082)`

day03

1. 文件操作  
`const fs = require('fs')

// readFile('文件名',回调函数)
/*fs.readFile('aaa.txt', function (err, data) {
    if(err){
        console.log('读取失败')
    }else{
        console.log(data.toString())
    }
})*/

// writeFile(文件名,内容,回调)
fs.writeFile('bbb.txt', 'asdfghjkl', err => {
    console.log(err)
})`

2. 服务器读取文件返回给前台
`const http = require('http')
const fs = require('fs')

let server = http.createServer((req, res) => {
    // req.url => '/index.html'
    // 读取 => './www.index.html'
    let file_name = `./www${req.url}`

    fs.readFile(file_name, (err, data) => {
        if(err){
            res.write('404')
        }else {
            res.write(data)
        }
        res.end()
    })
})

server.listen(8082)`

day04

GET数据解析

1. 自己切
2. querystring 	xxx=xx&xxx=xxx
3. url         	aaa?xxx=xx&xx=12
`example:
	url.parse(url,true);  pathname
						  query`

`
const http = require('http')

const server = http.createServer((req, res) => {
let GET = {}
// console.log(req.url)
// /aaa?user=blue&pwd=123456
if (req.url.indexOf('?') !== -1) {
    let arr = req.url.split('?');
    // arr[0] 地址:/aaa
    var url = arr[0];
    // arr[1] 数据:user=blue&pwd=123456
    let arr2 = arr[1].split('&');
    // arr2[0] user=blue
    // arr2[1] pwd=123456
    for (let i = 0; i < arr2.length; i++) {
        let arr3 = arr2[i].split('=')
        // arr3[0] 名字 'user'
        // arr3[1] 数据 'blue'
        GET[arr3[0]] = arr3[1]
    }
} else {
    var url = req.url
}

console.log(url, GET)

res.write('aaa')
res.end()
})

server.listen(8082)
`
1. querystring:查询字符串

`
const querystring = require('querystring')

var json = querystring.parse("user=blue&pass=123456&age=18")

console.log(json) // { user: 'blue', pass: '123456', age: '18' }
`

POST数据解析

1. 
`
const http = require('http')
const fs = require('fs')
const querystring = require('querystring')
const urlLib = require('url')

var server = http.createServer((req, res) => {
// GET
var obj = urlLib.parse(req.url, true)
var url = obj.pathname;
const GET = obj.query;
// POST
var str = '';
req.on('data', data => {
    str += data
})
req.on('end', () => {
    var POST = querystring.parse(str)

    /*
    url -- 要什么
    GET -- get数据
    POST -- POST数据
     */
    console.log(url, GET, POST)
})
// 文件请求
var file_name = './www/' + url;
fs.readFile(file_name, (err, data) => {
    if (err) {
        res.write('404')
    } else {
        res.write(data)
    }
    res.end();
});
})

server.listen(8082)
`

day06 练习

1. server_route.js
	`
const http = require('http')
const fs = require('fs')
const urlLib = require('url')
const querystring = require('querystring')

var users = {
    "blue": "123456",
    "zhangsan": "123456",
    "lisi": "123456"
};

var server = http.createServer((req, res) => {
// 解析数据
var str = '';
req.on('data', data => {
    str += data
})

req.on('end', (err, data) => {
    const obj = urlLib.parse(req.url, true)

    const url = obj.pathname
    const GET = obj.query
    const POST = querystring.parse(str)

    // 区分 —— 接口、文件
    if (url === '/user') { // 接口
        switch (GET.act) {
            case 'reg':
                // 1.检查用户名是否已经有了
                if (users[GET.user]) {
                    res.write('{"ok":false,"msg":"此用户已存在"}')
                } else {
                    // 2.插入users
                    users[GET.user] = GET.pass
                    res.write('{"ok":true,"msg":"恭喜您,注册成功"}')
                }
                break
            case 'login':
                // 1.检查用户名是否已经有了
                // 2.检查用户密码
                if (!users[GET.user]) {
                    res.write('{"ok":false,"msg":"此用户不存在"}')
                } else if (users[GET.user] !== GET.pass) {
                    res.write('{"ok":false,"msg":"用户名或密码有误"}')
                }else {
                    res.write('{"ok":true,"msg":"恭喜您,登陆成功"}')
                }
                break
            default:
                res.write('{"ok":false,"msg":"未知的act"}')
        }
        res.end();
    } else {    // 文件
        // 读取文件
        const file_name = `./www${url}`
        fs.readFile(file_name, (err, data) => {
            if (err) {
                res.write('404')
            } else {
                res.write(data)
            }
            res.end()
        })
    }
    ;
})
})

server.listen(8082)`

2. user.html
`
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
	用户名:<input type="text" id="user"/><br>
	密码:<input type="password" id="pass"/><br>
	<button type="button" id="reg_btn">注册</button>
	<button type="button" id="login_btn">登陆</button>
	<script src="ajax.js"></script>
	<script>
    // http://localhost:8082/user.html  通过这个地址访问
    window.onload = function () {
        var oTxtUser = document.getElementById('user')
        var oTxtPass = document.getElementById('pass')
        var oBtnReg = document.getElementById('reg_btn')
        var oBtnLogin = document.getElementById('login_btn')

        oBtnReg.onclick = function () {
            ajax({
                url: '/user',
                data: {act: 'reg', user: oTxtUser.value, pass: oTxtPass.value},
                type: 'get',
                success: function (str) {
                    var json = eval('(' + str + ')')
                    console.log(json)
                    if (json.ok) {
                        alert('注册成功')
                    } else {
                        alert('注册失败' + json.msg)
                    }
                },
                error: function (err) {
                    alert("通信错误")
                }
            })
        }

        oBtnLogin.onclick = function () {
            ajax({
                url: '/user',
                data: {act: 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值