Nodejs + express + ejs 之服务器demo
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的更多相关文章
- nodejs+express+ejs+mongoose实例
nodejs+express+ejs+mongoose实例 nodejs学得异常痛苦,在这里将学的东西做一番整理,算是自我安慰吧.根据网上todo示例,用express和mongoose重写了部分代码 ...
- Nodejs+Express创建HTTPS服务器
为了使我的Nodejs服务器提供HTTPS服务,学习了一下如何利用express创建https服务器,现记录如下.(一点一点的积累与掌握吧) 1. Http与Https 介绍 HTTP: 超文本传输协 ...
- 用nodejs,express,ejs,mongo,extjs实现了简单了网站后台管理系统
源代码下载地址:http://download.csdn.net/detail/guoyongrong/6498611 这个系统其实是出于学习nodejs的目的而改写的系统. 原来的系统前端使用了ex ...
- Windows环境下,从零开始搭建Nodejs+Express+Ejs框架(二)---安装Express,ejs
安装Express,ejs的前提是一定要先安装nodejs,具体安装方法请查看 http://www.cnblogs.com/tfiremeteor/p/8973105.html 安装Express和 ...
- Nodejs + express + ejs
特性 <% %> 用于控制流 <%= %> 用于转义的输出 (会对数据字符进行转义) // 数据源 // app.js var tem={ title:"我是中间部分 ...
- Windows环境下,从零开始搭建Nodejs+Express+Ejs框架(一)---安装nodejs
第一步,安装nodejs https://nodejs.org/en/download/ 这个是nodejs的官网,由于操作系统是win7 64位的,所以,我下载的是node-v8.11.1-x64的 ...
- 【vue】MongoDB+Nodejs+express+Vue后台管理项目Demo
¶项目分析 一个完整的网站服务架构,包括: 1.web frame ---这里应用express框架 2.web server ---这里应用nodejs 3.Database ---这里 ...
- NodeJS+Express+mySQL服务端开发详解
随着NodeJS的发展,现在已经被很多人熟知,NodeJS已经成为了前端开发人员必备的技能.本文不会对NodeJS过多介绍 如果你感兴趣可以访问NodeJS 官网, 维基百科 本文是利用NodeJS+ ...
- 【nodejs之我的开源module】 使用express搭建web服务器,代码即文档的实现。
前言 都说nodejs适合制作restful_API,因为它有异步处理能力,能吞吐更多的请求,这一点是大家都认可的.前不久我使用nodejs+express+postgresql搭建了一个restfu ...
随机推荐
- 创建一个简单的maven的web程序
最近学习Hadoop,发现学习要想用hadoop作为后台运行web程序,必须应用maven,所以学习了今天学习了一下maven,然后搭建了一个简单的web程序 首先我使用的是eclipse中自带的ma ...
- C#-语言基础+数据类型+运算符
一.C#语言基础 新建项目:文件→新建→项目→Visual C#(默认.NET Framework 4.5)→控制台应用程序 1.项目结构 (1)项目后缀 .config ——配置文件(存放配置参数文 ...
- SparkSQL开窗函数 row_number()
开始编写我们的统计逻辑,使用row_number()函数 先说明一下,row_number()开窗函数的作用 其实就是给每个分组的数据,按照其排序顺序,打上一个分组内行号 比如说,有一个分组20151 ...
- 并发编程>>概念准备(一)
工于其善,必先利器 1.并发和并行的区别 并行:同一时间点执行多个任务(CPU多核或多个CPU同时执行多个任务) 并发:同一时间段内行多个任务(单核同时执行多个任务) 2.同步和异步的区别 同步:执行 ...
- 【Alpha】Phylab 发布说明
Phylab Alpha阶段发布说明 一.发布地址 Phylab 二.新功能 1. 控制台 由于往届项目控制台并未发布,因此我们在完善后将这部分放在新功能部分.目前使用控制台需要向开发者申请. 1.1 ...
- 2018焦作网络赛 - Poor God Water 一道水题的教训
本题算是签到题,但由于赛中花费了过多的时间去滴吧格,造成了不必要的浪费以及智商掉线,所以有必要记录一下坑点 题意:方格从1到n,每一格mjl可以选择吃鱼/巧克力/鸡腿,求走到n格时满足 1.每三格不可 ...
- div实现高度自适应的textarea
textarea使我们常常使用的一种表单形式,多用于大段文字的输入,大多数情况下,textarea都是可以满足需求的,但是当我们希望这个输入框高度自适应的时候,textarea就很难做到了. ok,主 ...
- Elastic-Job源码分析之JobScheduler类分析
JobScheduler这个类是EJ中比较核心的一个类,我们现在开始解析这个类. 一.构造器 首先我们看一下JobScheduler的几个构造器. private JobScheduler(final ...
- codeblocks 控制台一闪而过
不要点红的运行,那是调试,点绿色的三角形,那才是运行,不会一闪而过
- WPF 使用依赖属性自定义控件
使用依赖属性自定义控件,依赖属性必须定义在自定义控件中,不能定义在其他文件中 一.先实现一个类继承你要复写的类 using System; using System.Collections.Gener ...