var http=require("http");
var express=require("express");
var fs = require("fs");
var bodyParser = require('body-parser');
var Common = require("./publice/common");
var app=express(); // 定时器
var refTimer = null; var tem={
title:"我是中间部分",
info:[{Name:"davi", Time:},{name:"bill", Time:},{name:"can", Time:}]
}; // 内存缓存账户列表
var AccountMap = {}; // 初始化账号列表
function init () {
// 从文件中加载数据到 AccountMap
var data = operatFile(); if(data) AccountMap = data;
} //app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded //创建服务器
http.createServer(app).listen(,"0.0.0.0",function(){
console.log("Server is listening port 3000");
}); //挂载静态资源处理中间件
app.use(express.static(__dirname)); //挂载静态资源处理中间件
//app.locals.Common = Common;
app.use(function(req, res, next){
res.locals.Common = Common;
next();
}); //设置模板视图的目录
app.set("views","./views"); //设置是否启用视图编译缓存,启用将加快服务器执行效率
app.set("view cache",true); //设置模板引擎的格式即运用何种模板引擎
app.set("view engine","ejs"); //设置路由
app.get("/",function(req,res){
var logData = AccountMap || operatFile();
return res.render("index",tem);
});
app.get("/index",function(req,res){
var logData = AccountMap || operatFile();
return res.render("index",tem);
}); //写个接口
app.get('/history',function(req,res){
var logData = AccountMap || operatFile();
//res.json({State: 0, Data: {title:tem.message,names:["odl", "dkkd", "ejs", "kkk"]}});
var item = {
title:"我是中间部分",
info:[{Name:"davi", Time:},{name:"bill", Time:},{name:"can", Time:},{name:"can", Time:}]
}; return res.render("tradeLog",item);
});

// 数据推送 (主要提供给 数据库服务器 数据推过来)
app.post('/account/info',function(req, res){
// 数据格式
// {user: 'xjl30', info: {}}
// 保存数据
// 保存到文件和内存中
var param = JSON.stringify(req.body);
console.log("<-----------------------分割线-------------------------->");
console.log("数据来啦: " + param); //AccountMap[]
if(param){
AccountMap = param;
operatFile(param); // 数据保存到文件中
}
}); // 数据处理
function operatFile(fData){
console.log("打开文件"); fs.open("./log/historyLog.txt", "w+", function(err, fd){ // w+ 以读写模式打开文件,如果文件不存在则创建。
if(err){
return console.error(err);
}
if(fData)
fs.writeFile('./log/historyLog.txt', fData, function(err) {
if (err) {
return console.error(err);
}
console.log("写入文件数据"); fs.close(fd);
});
else
getLogFile(fd);
});
} function getLogFile(fd){
var historyData = "";
fs.readFile('./log/historyLog.txt', function (err, data) {
if (err) {
return console.error(err);
}
if (data.toString()==""){
return console.error("文件数据为空");
}
historyData = data;
console.log("读取文件数据"); fs.close(fd);
}); return historyData;
} init();

Nodejs + express + ejs 之服务器demo的更多相关文章

  1. nodejs+express+ejs+mongoose实例

    nodejs+express+ejs+mongoose实例 nodejs学得异常痛苦,在这里将学的东西做一番整理,算是自我安慰吧.根据网上todo示例,用express和mongoose重写了部分代码 ...

  2. Nodejs+Express创建HTTPS服务器

    为了使我的Nodejs服务器提供HTTPS服务,学习了一下如何利用express创建https服务器,现记录如下.(一点一点的积累与掌握吧) 1. Http与Https 介绍 HTTP: 超文本传输协 ...

  3. 用nodejs,express,ejs,mongo,extjs实现了简单了网站后台管理系统

    源代码下载地址:http://download.csdn.net/detail/guoyongrong/6498611 这个系统其实是出于学习nodejs的目的而改写的系统. 原来的系统前端使用了ex ...

  4. Windows环境下,从零开始搭建Nodejs+Express+Ejs框架(二)---安装Express,ejs

    安装Express,ejs的前提是一定要先安装nodejs,具体安装方法请查看 http://www.cnblogs.com/tfiremeteor/p/8973105.html 安装Express和 ...

  5. Nodejs + express + ejs

    特性 <% %> 用于控制流 <%= %> 用于转义的输出 (会对数据字符进行转义) // 数据源 // app.js var tem={ title:"我是中间部分 ...

  6. Windows环境下,从零开始搭建Nodejs+Express+Ejs框架(一)---安装nodejs

    第一步,安装nodejs https://nodejs.org/en/download/ 这个是nodejs的官网,由于操作系统是win7 64位的,所以,我下载的是node-v8.11.1-x64的 ...

  7. 【vue】MongoDB+Nodejs+express+Vue后台管理项目Demo

    ¶项目分析 一个完整的网站服务架构,包括:   1.web frame ---这里应用express框架   2.web server ---这里应用nodejs   3.Database ---这里 ...

  8. NodeJS+Express+mySQL服务端开发详解

    随着NodeJS的发展,现在已经被很多人熟知,NodeJS已经成为了前端开发人员必备的技能.本文不会对NodeJS过多介绍 如果你感兴趣可以访问NodeJS 官网, 维基百科 本文是利用NodeJS+ ...

  9. 【nodejs之我的开源module】 使用express搭建web服务器,代码即文档的实现。

    前言 都说nodejs适合制作restful_API,因为它有异步处理能力,能吞吐更多的请求,这一点是大家都认可的.前不久我使用nodejs+express+postgresql搭建了一个restfu ...

随机推荐

  1. OKR 第一阶段

    性能优化,主要是为了提高用户体验. 1.  根据浏览器的工作原理,dom树解析时,遇到css 以及js 会出现阻塞,为了缩短dom树解析时间,进行了js  增加 async 的异步加载过程 . 原有代 ...

  2. springmvc 运行原理 Spring ioc的实现原理 Mybatis工作流程 spring AOP实现原理

    SpringMVC的工作原理图: SpringMVC流程 . 用户发送请求至前端控制器DispatcherServlet. . DispatcherServlet收到请求调用HandlerMappin ...

  3. Python全栈开发:list、元祖常用方法操作

    列表[] 索引与切片#例题#li = ['yijiajun',[1,3,5,7,9],'zhangliang','zhaoritian','sunwukong'] # #例子1 找出列表中索引为0的元 ...

  4. 编写一个算法,将非负的十进制整数转换为其他进制的数输出,10及其以上的数字从‘A’开始的字母表示

    编写一个算法,将非负的十进制整数转换为其他进制的数输出,10及其以上的数字从‘A’开始的字母表示. 要求: 1) 采用顺序栈实现算法: 2)从键盘输入一个十进制的数,输出相应的八进制数和十六进制数. ...

  5. 代码版本控制:git使用

    1.https://github.com/ 注册账号 2. 点击 Start a project 3. 4. 5.      Clone or download 6.      安装git 7.    ...

  6. (7.0 version)当销售单中包含service或phantom类型的产品时,销售单不能完成的原因分析及解决方案

    首先说一下service类型的产品,由于该类型的产品不需要发货,所以当在销售订单确认了后,销售单直接变成了等待开票的状态,但当开票的流程结束后,订单却还是停在销售单的状态上,该问题的解决方案是安装Ta ...

  7. window.name实现跨域

    在 http://www.cnblogs.com/zhuzhenwei918/p/6759459.html 这篇文章中,我提到了几种跨域的方式,这里主要讲解使用window.name实现跨域. 跨域就 ...

  8. vue遇见better-scroll

    better-scroll better-scroll 是一款重点解决移动端(现已支持 PC 端)各种滚动场景需求的插件.它的核心是借鉴的 iscroll 的实现,它的 API 设计基本兼容 iscr ...

  9. 031-CookieUtils 工具类模板

    模板一: package com.leo.common.utils; import java.io.UnsupportedEncodingException; import java.net.URLD ...

  10. Cocos文档案例游戏设计的梳理与分析

    导语:这是一篇新手教程,适用于已看完Cocos官方文档,但还对游戏设计.运行流程不熟悉的新人.这篇教程是对文档[快速上手]里那款名叫"摘星星"的坑爹小游戏(文档原话)流程的梳理,以 ...