有人妄想2天入门nodejs

        最近做了一个小挑战,希望在周六日,把nodejs过一边,然后可以跟进吉法师的AI 项目进程,然后我开始了自己写代码部分。

        主要了解了async  await  Promise 的基本使用吧:


/*
这样会出现undefined 

*/

function getData(){
    //ajax
    setTimeout(() => {
        var name = 'jds'
        return name;
    }, 1000);
}

console.log(getData());


//方法1  回调函数方式拿拿数据

function getData(callback){
    //ajax
    setTimeout(() => {
        var name = 'jds'
        callback(name)
    }, 1000);
}

getData(function(name){
    console.log(name);
})


//方法2 promise 方式来拿数据

var p = new Promise((resolve, reject)=>{
    setTimeout(() => {
        var name = 'jds'
        resolve(name)
    }, 1000);
})

p.then((data)=>{
    console.log(data);
})

部分2:

async function test(){  
    return new Promise((resolve,reject)=>{
         setTimeout(function(){
             var name='abc';   
             resolve(name);
         },1000);
    })
 
 }

 async function main(){
    var data = await test();
    console.log(data);
 }
 main();

通过fs 加载静态网站:

routes.js

const fs = require('fs');
const path = require('path');
const url = require('url');

let getFileMime = function (extname){
    var data  = fs.readFileSync('./data/mime.json'); //同步方法
    let mimeObj = JSON.parse(data.toString());
    return mimeObj[extname];
}


exports.static = function(req, res, staticPath){
    //1、获取地址
    //1、获取地址
    let pathname = url.parse(req.url).pathname;
    let extname = path.extname(pathname);

    if (extname) {  //如果有后缀名让静态web处理 否则路由处理
        //2、通过fs模块读取文件
        if (pathname != '/favicon.ico') {
            try {
                let data = fs.readFileSync('./' + staticPath + pathname);
                if (data) {
                    let mime = getFileMime(extname);
                    res.writeHead(200, { 'Content-Type': '' + mime + ';charset="utf-8"' });
                    res.end(data);
                }
            } catch (error) {
                console.log(error)
            }
        }
    }
}

app.js

const http = require('http');
const path=require('path');
const url=require('url');
const routes = require('./module/routes');
http.createServer(function (request, response) {

    //http://127.0.0.1:3000/login.html
    //http://127.0.0.1:3000/index.html
    routes.static(request,response,'static')
    //获取地址
    let pathname =url.parse(request.url).pathname;
    let extname = path.extname(pathname);

    if(!extname){ //如果有请求地址有后缀名的话让静态web服务去处理 
        if(pathname=='/login'){
            response.writeHead(200, { 'Content-Type': 'text/html;charset="utf-8"' });
            response.end("执行登录");
        }else if(pathname=='/register'){
            response.writeHead(200, { 'Content-Type': 'text/html;charset="utf-8"' });
            response.end("执行注册");
        }else if(pathname=='/admin'){
            response.writeHead(200, { 'Content-Type': 'text/html;charset="utf-8"' });
            response.end("处理后的业务逻辑");
        }else{
            response.writeHead(404, { 'Content-Type': 'text/html;charset="utf-8"' });
            response.end("404");
        }
    }
   
    
  }).listen(3000);
  
  console.log('Server running at http://127.0.0.1:3000/');

还在持续输出中,希望自己变的更加好吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值