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

### Node-RED 示例项目和使用案例 Node-RED 提供了丰富的示例项目和使用案例,帮助开发者快速上手并理解其功能。以下是几个典型的示例项目: #### 1. 使用 MQTT 进行设备通信 通过 `mqtt in` 和 `mqtt out` 节点可以轻松实现与 IoT 设备的数据交换[^3]。 ```json [ { "id": "mqtt-in", "type": "mqtt in", "z": "flow-id", "name": "", "topic": "sensor/temperature", "qos": "2", "broker": "broker-id", "x": 170, "y": 100, "wires": [ ["debug"] ] }, { "id": "debug", "type": "debug", "z": "flow-id", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload" } ] ``` 此配置展示了如何订阅温度传感器数据并通过调试节点查看消息内容。 #### 2. Docker 容器化部署 为了简化环境搭建过程,官方提供了 Docker 镜像支持一键部署[^4]。 ```bash docker pull nodered/node-red sudo docker run -it -p 1880:1880 --name=nodered \ --restart=always --user=root --net=host \ -v /data/nodered:/data -e TZ=Asia/Shanghai nodered/node-RED 实例。 #### 3. Web API 接口集成 利用 HTTP 请求节点构建 RESTful APIs 来处理来自外部系统的调用请求。 ```json [ { "id": "http-in", "type": "http in", "z": "flow-id", "name": "", "url": "/api/data", "method": "post", "upload": false, "swaggerDoc": "" }, { "id": "function-node", "type": "function", "z": "flow-id", "name": "Process Data", "func": "msg.payload = JSON.parse(msg.payload);\nreturn msg;" }, { "id": "response", "type": "http response", "z": "flow-id", "name": "" } ] ``` 上述流程定义了一个简单的 POST 方法接口用于接收 JSON 格式的输入参数,并返回相应结果给客户端。 这些只是冰山一角,在实际应用场景中还可以结合更多第三方服务和技术栈来扩展平台能力。对于初学者来说,《Node-RED物联网应用开发技术详解》一书也提供了详尽的学习资源和支持材料[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值