目录结构:
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 "";
- }
来源: http://www.qdfuns.com/article/27377/b4d6a05a6fb303abee3ccd2cab526bb9.html