node案例

1.显示文件夹或子文件及子文件

const fs=require('fs')
function readFile(path) {
    let obj={}
    if(fs.statSync(path).isFile()){
        return `{${path}:true}`
    }
    let arr=fs.readdirSync(path)
    arr.forEach((val)=>{    
        let pas=path+"/"+val
        let result = fs.statSync(pas).isFile();
        if(!result){
            obj[val]=readFile(pas)
        }else{
            obj[val]=true
        }
    })    
    return obj
}
path=''
fs.writeFileSync('./data.json',JSON.stringify(readFile(path)));
console.log(readFile(path))

2.利用http模块 开启服务器

let http=require('http')
let server=http.createServer()
let url=require('url')
let fs=require('fs')
const https = require('https');
server.on('request',(req,res)=>{
    const urlStr=req.url
    //匹配相应的路径 写入对应的文件
    if(urlStr== '/'){
        let data = fs.readFileSync('./index.html');
        res.write(data);
        res.end();
    }
    //匹配相应的路径 发送请求 响应的数据 写入到相应的地方
    if(url.parse(urlStr).pathname == '/v2/music/search'){
        //向豆瓣的后台发送请求
        https.request({
            hostname: 'api.douban.com',
            port: 443,
            path: urlStr
        }, (re)=>{
            //请求成功
            let value = '';
            //监听接收数据
            re.on('data', (bf)=>{
                value += bf;
            }),
            //监听数据接收完成
            re.on('end', ()=>{
                //得到所有数据,响应客户端
                // res.write(value)
                fs.writeFileSync('./data.json', value);
                res.end();
            })
        }).end();
      }
})
//启动服务器
server.listen(1314,(error)=>{
    if(error){
        console.log('服务器启动失败')
    }else{
        console.log('服务器启动成功')
    }
})

3.利用express第三方模块开启服务器

 


//proxy模块
let https=require('https')
module.exports=proxy=(name,path)=>{
    console.log(`[HPM] Proxy created: /  ->  https://${name}`)
    return (req,res)=>{
        url=req.url
        https.request({
            hostname: name,
            port: 443,
            path:path+url
        },(re)=>{
            let value='';
            re.on('data',(bf)=>{
                value+=bf
            })
            re.on('end',()=>{
                res.json(JSON.parse(value));
            })
        }).end()
    }
}


const
fs=require('fs') //自定义模块 const proxy=require('./proxy')
//以下均为第三方模块 const express=require('express') const proxys=require('http-proxy-middleware') const server=express() server.get('/',(req,res)=>{ const result2=fs.readFileSync('./index.html') res.end(result2) })
//自定义模块 server.use(
'/v2',proxy('api.douban.com','/v2'))
//第三方模块引入的方法 server.use(
'/v4', proxys({target: 'https://m.maizuo.com', changeOrigin: true})); //开启服务器 server.listen(1314,(error)=>{ if(error){ console.log('服务器启动失败') }else{ console.log('服务器启动成功') } })

3.设置模板引擎

const express=require('express')
const server=express()
const swig=require('swig')
// 设置模板引擎 为html
server.set('view engine','html')
// 设置模板放置的位置
server.set('views', './www');
//设置该模板引用的模块
server.engine('html', swig.renderFile);
//使得引用模板后不缓存
swig.setDefaults({cache: false});
server.get('/',(req,res)=>{
    // 通过该callback函数返回视图的呈现HTML
    // 参数一:呈现在哪个页面
    // 参数二:呈现在页面中的变量 在html利用{{}}可以直接写入变量
    // 参数三:回调
    const d=new Date().getHours()
    // 当前路径+那个页面
    res.render('home', {
        nav: [
                '今日特价',
                '优选商品'
            ],
        number:{
            a:1,
            b:3,
            c:4
        },
        day:d>5&&d<6?true:false

    })
})
server.listen(1314,(error)=>{
    if(error){
        console.log('服务器启动失败')
    }else{
        console.log('服务器启动成功')
    }
})

4.开启路由

通过路由,可以在返回页面之前,先通过中间件执行若干事物,将这些事物放在中间件里面,形成一种模块。增强代码的可读性

const router = new express.Router();

5.mongodb数据库+服务器

const express=require('express')
const swig=require('swig')
const mongoose=require('mongoose')


new Promise((resolve,reject)=>{
    // 连接数据库
    mongoose.connect('mongodb://localhost:1314',(error)=>{
        if(error){
            console.log('连接数据库失败');
            console.log(error);
        }else{
            console.log('连接数据库成功'); 
            resolve(); 
        }
    })
}).then(()=>{
    // 开启服务器
    server=express()

    // 处理静态资源文件
    server.use('/static', express.static('./www'));
    //处理html文件
    // 利用模板引擎
    server.set('view engine', 'html');
    server.set('views', './www/html');
    server.engine('html', swig.renderFile);
    swig.setDefaults({cache: false});

    // 引入html路由配置
    moduleHtml=require('./router/moduleHtml')
    server.use('/',moduleHtml)

    //处理ajax文件
    moduleAjax=require('./router/moduleAjax')
    server.use('/api',moduleAjax)

    // 指定服务器配置
    server.listen(1314,(error)=>{
        if(error){
            console.log('服务器启动失败');
        }else{
            console.log('服务器启动成功');
        }
    })
})
原文地址:https://www.cnblogs.com/lianqing/p/9226066.html