博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node案例
阅读量:5273 次
发布时间:2019-06-14

本文共 4618 字,大约阅读时间需要 15 分钟。

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')// 设置模板引擎 为htmlserver.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

你可能感兴趣的文章
android 向SD卡写入数据
查看>>
SQL Server ->> 深入探讨SQL Server 2016新特性之 --- Temporal Table(历史表)
查看>>
获取Winform窗体、工作区 宽度、高度、命名空间、菜单栏高度等收集
查看>>
sql like参数化查询
查看>>
短信推送API接口实现---------阿里大于
查看>>
iOS开发-OC语言 (六)点语法和@property
查看>>
(原创)Problem F: WPF的三位数
查看>>
ajax jQ写的上传进度条
查看>>
SQL Server 小窍门
查看>>
jQuery选择器
查看>>
32.生产器
查看>>
Exchange 2016 系统要求
查看>>
坑爹的RockSaw和坑爹的windows7
查看>>
关于AD用户无法登录sharepoint 2007
查看>>
Apache软件基金会项目百度百科链接
查看>>
Unity按钮禁用和变灰
查看>>
(转)Java里的堆(heap)栈(stack)和方法区(method)(精华帖,多读读)
查看>>
模块调用
查看>>
SVD及其在推荐系统中的作用
查看>>
引用类型与原始类型的区别
查看>>