1. 程式人生 > >用nodejs的express框架在本機搭建一臺服務器

用nodejs的express框架在本機搭建一臺服務器

redirect sta start moc 頁面 exe 瀏覽器 server proc

[本文出自天外歸雲的博客園]

簡介

用express框架在本機搭建一個服務器,這樣大家可以通過指定的url來在你的服務器上運行相應的功能。

Express是一個基於nodejs的框架,我們可以用它來完成服務端的編寫。

以下mocker的文件結構我已經上傳到github。

安裝

首先安裝nodejs和npm,這倆東西有點兒像python和pip的關系,nodejs是一種js的封裝,而npm可以為nodejs安裝一些庫。

有了nodejs後安裝express。

之後在本地創建一個文件夾,作為node服務器所在的文件夾,我這裏取名為mocker。安裝點擊這裏查看教程。

之後在mocker文件夾裏創建一個static文件夾用來放靜態資源文件用。

再創建一個scripts文件夾用來放我的python腳本。

技術分享

我的思路就是用戶訪問我的服務器我本地nodejs可以調用python腳本來完成一些任務,然後把結果呈現給用戶。

我的node腳本叫mocker.js,內容如下:

function sleep(sleepTime) {
    for(var start = +new Date; +new Date - start <= sleepTime; ) { } 
}

function exec_cmd(cmdStr) {
    var exec = require(‘child_process‘).exec;
    exec(cmdStr, 
function(err,stdout,stderr){ if(err) { console.log(‘Error:‘+stderr); } else { console.log(stdout); } }); } var express = require(‘express‘); var app = express(); var path = require(‘path‘); console.log(path.join(__dirname, ‘/‘)); app.use(express.static(path.join(__dirname,
‘/‘))); var distribution = ‘/static/html/distribution.html‘ app.get("/distribution", function (req, res) { var cmdStr = ‘python scripts/check_tasks_distribution.py‘; exec_cmd(cmdStr); var fs = require("fs"); fs.exists(path.join(‘static‘, ‘html‘, ‘distribution.html‘), function(exists) { if (exists) { res.redirect(distribution); } else { exec_cmd(cmdStr); sleep(1000); } }); }); var server = app.listen(3000, function () { var host = server.address().address; var port = server.address().port; console.log(‘Listening at http://%s:%s‘, host, port); });

主體思路就是當用戶訪問distribution這個路由的時候就會在我的服務端執通過命令行來執行scripts文件夾下的check_tasks_distribution.py這個腳本,然後把生成的靜態資源文件distribution.html頁面打開。這個腳本我是用的之前寫的一個關於統計組內大家正在進行中的jira任務的統計功能。

啟動

在mocker路徑下執行命令行啟動mocker.js服務端文件:

技術分享

之後就可以在瀏覽器通過http://server-ip:3000/distribution來訪問查看正在進行中的jira任務列表了。

啟發

我們可以將平時編寫的對日常工作有幫助的腳本集成到這個服務端,這樣就可以將腳本和工具平臺化展示給同事,達到共享的目的。

用nodejs的express框架在本機搭建一臺服務器