摘要:一簡述近期,在學(xué)習(xí)期間,由于需要造數(shù)據(jù),想到弄數(shù)據(jù)庫麻煩,就直接用文件代替了,想到不錯(cuò),主要還是,所以就試著寫了寫,嘿嘿,能用。
一、簡述
近期,在學(xué)習(xí)vue期間,由于需要造數(shù)據(jù),想到弄數(shù)據(jù)庫麻煩,就直接用json文件代替了,想到nodejs不錯(cuò),主要還是js,所以就試著寫了寫,嘿嘿,能用。
二、實(shí)現(xiàn)
實(shí)現(xiàn)使用的技術(shù):Nodejs + Express 4.x + ejs + bootstrap.
初始js配置及所需控件:
var path = require("path"); var express = require("express"); var session = require("express-session"); var flash = require("connect-flash"); var config = require("config-lite"); var routes = require("./routes"); var pkg = require("./package"); var winston = require("winston"); var expressWinston = require("express-winston"); var app = express(); // 設(shè)置模版目錄 app.set("views", path.join(__dirname, "views")); // 設(shè)置模版引擎為ejs app.set("view engine", "ejs"); // 設(shè)置靜態(tài)文件目錄 app.use(express.static(path.join(__dirname, "public"))); // session 中間件 app.use(session({ name: config.session.key, // 設(shè)置 cookie 中保存 session id 的字段名稱 secret: config.session.secret, // 過設(shè)置 secret 來計(jì)算 hash 值并放在 cookie 中,使產(chǎn)生的 signedCookie 防篡改 resave: true, // 強(qiáng)制更新 session saveUninitialized: false, // 設(shè)置為 false,強(qiáng)制創(chuàng)建一個(gè) session,即使用戶未登錄 cookie: { maxAge: config.session.maxAge // 過期時(shí)間,過期后 cookie 中的 session id 自動(dòng)刪除 } })); // flash 中間件,用來顯示通知 app.use(flash()); // 處理表單及文件上傳的中間件 app.use(require("express-formidable")({ uploadDir: path.join(__dirname, "public/jsonFile"),// 上傳文件目錄 keepExtensions: true,// 保留后綴 encoding: "utf-8" })); //設(shè)置模版全局常量 app.locals.global = { title: pkg.name, description: pkg.description }; // 添加模版必需的三個(gè)變量 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(); }) // error page app.use(function (err, req, res, next) { res.render("error", { error: err }); }); // 正常請(qǐng)求的日志 app.use(expressWinston.logger({ transports: [ new (winston.transports.Console)({ json: true, colorize: true }), new winston.transports.File({ filename: "logs/success.log" }) ] })); // 路由 routes(app); // 錯(cuò)誤請(qǐng)求的日志 app.use(expressWinston.errorLogger({ transports: [ new winston.transports.Console({ json: true, colorize: true }), new winston.transports.File({ filename: "logs/error.log" }) ] })); app.listen(config.port, function () { console.log(`${pkg.name} listening on port ${config.port}`); });
在操作json文件過程中,找到了一個(gè)蠻實(shí)用的第三方插件lowdb。
讓我們來看看lowdb如果操作json文件數(shù)據(jù)的:
var low = require("lowdb"); ... var db = low(path.join(__dirname, "../data/apilists.json")); var data = db.get("dataList") .find({ key: id }) .value();
看上去還是比較簡單的...
三、效果展示
代碼可以看我的github分享:https://github.com/zhoou/node...,歡迎指正!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/82128.html
閱讀 2878·2021-09-22 15:54
閱讀 1887·2019-08-30 15:53
閱讀 2240·2019-08-29 16:33
閱讀 1418·2019-08-29 12:29
閱讀 1387·2019-08-26 11:41
閱讀 2367·2019-08-26 11:34
閱讀 2947·2019-08-23 16:12
閱讀 1421·2019-08-23 15:56