最近做了一个小挑战,希望在周六日,把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/');
还在持续输出中,希望自己变的更加好吧。