目录结构:
javascript 代码
node/
|
+- controllers/ <-- Controller
| |
| +- jsonFile.js <-- 文件读写
|
+- router <-- 路由文件
| |
| +- router.js <-- 路由配置
|
+- data <-- 文件存储目录
|
+- server.js <-- 入口文件
|
+- package.json <-- 项目描述文件
|
+- processes.json <-- pm2配置文件
|
+- run.bat <-- 启动脚本
|
+- stop.bat <--停止脚本
|
+- node_modules/ <-- npm安装的所有依赖包
jsonFile.js:
javascript 代码
/**
* Created by fangdandan on 2017/11/07.
* 本地文件存储
*/
var fs = require("fs");
module.exports = {
writeFile: function (req, res) {
let param = req.body;
console.log("准备写入文件");
fs.writeFile('data/'+param.id+'.txt', param.content, function(err) {
if (err) {
res.json({
"result": false,
"errorMsg": "保存失败",
"errorDetail": err.toString()
});
}else{
res.json({
"result": true,
"errorMsg": "保存成功"
});
console.log("数据写入成功!");
}
});
},
readFile: function (req, res) {
let param = req.body;
fs.readFile('data/'+param.id+'.txt', function (err, data) {
if (err) {
res.json({
"result": false,
"errorMsg": "数据读取失败",
"errorDetail": err.toString()
});
}else{
console.log("异步读取文件数据: " + data.toString());
res.json({
"result": true,
"errorMsg": "数据读取成功",
"data": data.toString()
});
}
});
}
}
router.js:
javascript 代码
const express = require('express');
const router = express.Router();
const jsonFile = require('../controllers/jsonFile');
// jsonFile
router.post('/Write_File_Data',jsonFile.writeFile);
router.post('/Read_File_Data',jsonFile.readFile);
module.exports = router;
server.js:
javascript 代码
var express = require('express');
var bodyParser = require('body-parser'); //用于处理 JSON, Raw, Text 和 URL 编码的数据
var app = express();
var router = require('./router/router');
//设置跨域访问
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By",' 3.2.1');
res.header("Content-Type", "application/json;charset=utf-8");
next();
});
app.use(bodyParser.json()); //解析json数据
app.use(bodyParser.urlencoded({ extended: true })); //解析form表单提交上来的数据
app.use('/', router);
var server = app.listen(8888, function() {
var host = server.address().address;
var port = server.address().port;
console.log("http://%s:%s", host, port);
});
package.json:
json 代码
{
"name": "Demo",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"pm2": "pm2 start processes.json"
},
"author": "fangdandan",
"license": "ISC",
"dependencies": {}
}
processes.json:
json 代码
{
"apps" : [{
"name" : "Demo", //名称
"script": "./server.js", //程序入库
"cwd": "./", //根目录
"watch":[
"controllers",
"router"
],//需要监控的目录
"error_file":"./logs/app-err.log",//错误输出日志
"out_file":"./logs/app-out.log", //日志
"log_date_format":"YYYY-MM-DD HH:mm Z" //日期格式
}]
}
run.bat:
json 代码
npm run pm2
stop.bat:
json 代码
pm2 delete -s Demo
注意:
1、安装node;
2、npm install pm2 -g
3、npm install express
4、npm install fs
5、windows服务器,直接双击run.bat启动项目
调用接口:
javascript 代码
function readFile() {
var param = {};
param.id = 13;
$.ajax({
url: "http://localhost:8888/Read_File_Data",
type: "POST",
data: param,
success: function (data) {
if(data.result){
var content = JSON.parse(data.data);
console.log(content);
}
}
});
}
function writeFile() {
var param = {};
param.id = 13;
param.content = '';
var obj = [
{
"id": "1",
"name": "模式一",
"data": [
{
"type": "1",
"data": [
{
"num": 0,
"isChecked": true,
"bet": 55
},{
"num": 1,
"isChecked": true,
"bet": 55
},{
"num": 2,
"isChecked": true,
"bet": 55
},{
"num": 3,
"isChecked": true,
"bet": 55
},{
"num": 4,
"isChecked": true,
"bet": 55
}
]
},{
"type": "2",
"data": [
{
"num": 0,
"isChecked": true,
"bet": 55
},{
"num": 1,
"isChecked": true,
"bet": 55
},{
"num": 2,
"isChecked": true,
"bet": 55
},{
"num": 3,
"isChecked": true,
"bet": 55
},{
"num": 4,
"isChecked": true,
"bet": 55
}
]
}
]
}
];
param.content = JSON.stringify(obj);
$.ajax({
url: "http://localhost:8888/Write_File_Data",
type: "POST",
data: param,
success: function (data) {
console.log(data.errorMsg);
}
});
}
//获取地址参数值
function getParameter(param) {
var reg = new RegExp("(^|&)" + param + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null)
return decodeURI(r[2]); //可对 encodeURI() 函数编码过的 URI 进行解码
return "";
}