1.简介最近在学习Vue期间,由于需要创建数据,想到了获取数据库的麻烦,所以直接换成了json文件。觉得nodejs不错,主要是js,于是尝试着写就写,嘿嘿,还行。2.实现技术使用:Nodejs+Express4.x+ejs+bootstrap。初始js配置和所需的控件:varpath=require('path');varexpress=require('express');varsession=require('express-session');varflash=require('connect-flash');varconfig=require('config-lite');varroutes=require('./routes');varpkg=require('./package');varwinston=require('winston');varexpressWinston=require('express-winston');varapp=express();//设置模板目录app.set('views',path.join(__dirname,'views'));//设置模板引擎为ejsapp。set('viewengine','ejs');//设置静态文件目录app.use(express.static(path.join(__dirname,'public')));//会话中间件app.use(session({name:config.session.key,//设置保存在cookie中的sessionid的字段名secret:config.session.secret,//通过设置secret计算hash值放入cookie中,所以生成的signedCookie是防篡改的resave:true,//强制更新会话saveUninitialized:false,//设置为false,强制创建会话,即使用户没有登录cookie:{maxAge:config.session.maxAge//过期时间,cookie中的sessionid过期后自动删除}}));//flash中间件,用于显示通知app.use(flash());//处理表单和文件上传的中间件app.use(require('express-formidable')({uploadDir:path.join(__dirname,'public/jsonFile'),//上传文件目录keepExtensions:true,//保留后缀encoding:'utf-8'}));//设置模板全局常量app.locals.global={title:pkg.name,description:pkg.description};//添加模板所需的三个变量app.use(function(req,res,next){res.locals.user=req.session.user;res.locals.success=req.flash('success').toString();res.locals.error=req.flash('error').toString();next();})//错误页面app.use(function(err,req,res,next){res.render('error',{error:err});});//正常请求日志app.use(expressWinston.logger({transports:[new(winston.transports.Console)({json:true,colorize:true}),newwinston.transports.File({filename:'logs/success.log'})]}));//routes(app);//记录错误请求的应用程序.use(expressWinston.errorLogger({传输:[newwinston.transports.Console({json:true,colorize:true}),newwinston.transports.File({filename:'logs/error.log'})]}));app.listen(config.port,function(){console.log(`${pkg.name}监听端口${config.port}`);});在操作json文件的过程中,发现了一个非常实用的第三方插件lowdb,让我们看看lowdb是如何操作json文件数据的:varlow=require('lowdb');...vardb=low(path.join(__dirname,'../data/apilists.json'));vardata=db.get('dataList').find({key:id}).value();看起来比较简单……3.效果展示代码可以看我的github分享:https://github.com/zhouou/node...,欢迎指正!
