node通過路由呼叫方法將資料返回前端
阿新 • • 發佈:2019-01-05
首先講一下我的需求,如圖
三個input標籤,輸入地址,埠,點選按鈕,採集資料
首先使用express搭建node框架,使用的是ejs模板
1、寫方法
定義一個方法collect,最後將其暴露出去 module.exports=collect,一定不要忘記暴露方法,否則無法使用
'use strict'
var modbus = require('node-modbus')
function collect(param,callback) {
var client = modbus.client.tcp.complete({
'host' : param.ohost,
'port': param.oport,
'unitId': param.ounitId,
})
client.on('connect', function () {
client.readHoldingRegisters(0, 16).then(function (resp) {
callback(resp)
}, console.error).finally(function () {
client.close()
})
})
client.on('error' , console.error)
client.connect()
}
module.exports=collect
2、建立路由
使用express的好處就是不用自己寫很繁瑣的步驟,在route的index.js中建立一個路由
var express = require('express');
var router = express.Router();
var collect = require('../src/js/collect');//將寫好的方法引入路由模組
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
router.get('/collect', function(req, res, next) {//建立路由/collect
collect(req.query,function (data) {//呼叫方法,傳參,回撥返回的資料
console.log("回撥資料"+data)
res.send(JSON.stringify(data))
})
});
module.exports = router;
ps:可能會遇到跨域問題,如果跨域,在app.js中加入下面程式碼即可
app.all("*",function(req,res,next){
res.header("Access-Control-Allow-Origin","*"); //允許所有訪問者跨域請求
next();
})
啟動專案npm start ,輸入網址localhost:3000,這是預設的,你可以在www檔案中修改埠,開啟頁面,輸入地址、埠等,點選按鈕訪問你建立的路由,將返回的資料輸出到頁面上。