本文件已定稿,最后修改时间 20240719 2:52


一、开发环境搭建

  1. commonJs(模块化)

    规范定义:

    1. 每一个文件都是一个模块,都有自己的作用域
    2. 在模块内部,module变量代表自身
    3. module.exports提供对外接口

    require语法:

    1. / 代表绝对路径,./ 代表相对路径
    2. 默认后缀:js json node
    3. require('http') —— node_modules
  2. global

    global.test = 111;

二、npm

  1. cnpm

    1. cnpm install 包名 -g:全局
    2. cnpm install 包名 -S:局部,生产环境
    3. cnpm install 包名 -D:局部,开发环境
  2. 上传自己的包

    1. npm官网注册一个账号

      https://www.npmjs.com/

    2. 初始化项目

      npm init|cnpm init

    3. npm登录

      npm login

      输入:userName + 邮箱 + 密码

    4. 上传npm包

      npm publish

  3. package

    package.json:项目的描述文件

三、http服务器

  1. get请求url数据操作

    // server.js
    const server = require("http");
    const url = require("url");
    const server = http.createServer((req,res)=>{
    const reqUrl = req.url;
    console.log(url.parse(reqUrl,true).query.title)
    res.end();
    })
    server.listen(8080);
    <!--index.html-->
    <!DOCTYPE html>
    <html>
    <head>
    <title></title>
    </head>
    <body>
    <a href="http://localhost:8080/content.html?id=2&title=这是文章标题">进入详情页</a>
    </body>
    </html>
  2. get请求表单数据操作

    // server.js
    const http = require("http");
    const url = require("url");
    const server = http.createServer((req,res)=>{
    res.writeHead(200,{"Content-Type":"text/html;charset=utf8"})
    const reqUrl = req.url;
    const formVal = url.parse(reqUrl,true).query;
    console.log(formVal.userName,formVal.userPwd);
    res.end("用户名:"+formVal.userName+"----->"+"密码:"+formVal.userPwd);
    })
    server.listen(8080);
    <!DOCTYPE html>
    <html>
    <head>
    <title></title>
    </head>
    <body>
    <form method="get" action='http://localhost:8080'>
    <input type="text" name="userName">
    <input type="password" name="userPwd">
    <input type="submit" value="登录">
    </form>
    </body>
    </html>
  3. post请求表单数据操作

    post —— 事件接收

    req.on('data') : 每次发送的数据
    req.on('end') : 数据发送完成

    const http = require("http");
    const querystring = require('querystring');
    const server = http.createServer((req,res)=>{
    let postVal = "";
    req.on("data",(chunk)=>{
    postVal+=chunk;
    })
    req.on("end",()=>{
    console.log( querystring.parse(postVal) )
    res.end();
    })
    })
    server.listen(8080);
    <!DOCTYPE html>
    <html>
    <head>
    <title></title>
    </head>
    <body>
    <form method="post" action="http://localhost:8080">
    <input type="text" name="userName">
    <input type="password" name="userPwd">
    <input type="submit" value="登录">
    </form>
    </body>
    </html>

四、Mysql

  1. node连接mysql

    const mysql = ewquire('mysql');
    const connection = mysql.createConnection({
    host:"localhost",
    port:3306,
    user:"root",
    password:"密码",
    database:"数据库名字"
    })

    connection.connect();
    connection.query('select * from user',(err,result,fields)=>{
    if(err) throw err;
    console.log(result);
    })
    connection.end();

    image-20240718191707213

    案例:登录

    <!DOCTYPE html>
    <html>
    <head>
    <title></title>
    </head>
    <body>
    <form method="post" action='http://localhost:8080'>
    <input type="text" name="userName">
    <input type="password" name="userPwd">
    <input type="submit" value="登录">
    </form>
    </body>
    </html>
    const http = require("http");
    const querystring = require("querystring");
    const mysql = require("mysql");
    const server = http.createServer((req,res)=>{
    let postVal = "";
    req.on("data",(chunk)=>{
    postVal+=chunk;
    })
    req.on("end",()=>{
    let formVal = querystring.parse(postVal);
    let userName = formVal.userName;
    let userPwd = formVal.userPwd;
    const connection = mysql.createConnection({
    host:"localhost",
    user:"root",
    password:"root123",
    database:"demo1",
    port:3306
    })
    //数据库信息
    connection.connect();
    //连接数据库
    connection.query("select * from user where userName=? and userPwd=?",[userName,userPwd],(err,results,fields)=>{
    if(err) throw err;
    if(results.length > 0){
    res.writeHead(200,{'Content-Type':"text/html;charset=utf8"})
    res.write('登录成功')
    res.end();
    }
    })
    connection.end();
    })
    })
    server.listen(8080);

    案例:注册

    <!DOCTYPE html>
    <html>
    <head>
    <title></title>
    </head>
    <body>
    <form method='post' action='http://localhost:8080'>
    <input type="text" name="userName">
    <input type="text" name="userPwd">
    <input type="submit" value="注册">
    </form>
    </body>
    </html>
    const http = require("http");
    const querystring = require("querystring");
    const mysql = require("mysql");
    const server = http.createServer((req,res)=>{
    if(req.url!='/favicon.ico'){
    let postVal = "";
    req.on("data",(chunk)=>{
    postVal+=chunk;
    })
    req.on("end",()=>{
    let formVal = querystring.parse(postVal);
    let userName = formVal.userName;
    let userPwd = formVal.userPwd;
    const connection = mysql.createConnection({
    host:"localhost",
    user:'root',
    password:"root123",
    database:"demo1"
    })
    connection.connect();
    connection.query('insert into user value (?,?,?)',[0,userName,userPwd],(err,results,fields)=>{
    if(err) throw err;
    res.write("注册成功!!!");
    res.end();
    })
    connection.end();
    })
    }
    })
    server.listen(8080);

五、Express

  1. express目录结构

    express是基于node.js的web应用开发框架

    image-20240719005843352

    image-20240719011858922

  2. express路由关系

    image-20240719020331183

    image-20240719020352209

  3. 引入资源和模块语法

    <!DOCTYPE html>
    <html>
    <head>
    <title><%= title %></title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
    </head>
    <body>
    <h1><%= title %></h1>
    <b><%= msg %></b>

    <img src="/images/1.png" alt="">

    <ul>
    <% arr.forEach((item)=>{ %>
    <li> <%= item %> </li>
    <% }) %>
    </ul>
    </body>
    </html>