Angular+nodeJS+redis前端自测开发模式

为什么要这样搞?

这段时间在开发一个较大的项目,后台前期的准备时间会比较长,后期开发很快,而前台的前期开发会比较快,后期开发也需要等比例的时间,在进度上存在不协调的情况,后台的接口格式已经给出,虽然可以直接mockjson返回,但是在诸多(比如说新增,删除,修改)这些需要有响应的操作面前也显得十分无力,需要一个简易后台,能满足即时开发和调试的需要,具体有以下需求:

  1. 自动化,别配个环境半天时间
  2. 协同开发,彼此的数据库可以不一样,但基础必须一致
  3. 高性能,别编译一下☕都凉了
  4. 亲和力好,最好就是js,作为前端写起来看起来也方便

于是在这些条件的筛选下,最后我选择了nodejs+redis的方案,启动编译很快,数据库的迁移备份和主从都很方便

这套东西怎么用?

工程目录结构

|—mock_server       // 模拟后台的主目录
    |——node_modules     // 主要有express,redis,body-parser等类库
    |——rest     // 里面放node的路由,根据模块分类,符合restful规范
        |——case.js
        |——...
|——dump.rdb     // 用于同步协同开发的数据库备份
    |——package.json
    |——setup.sh     // 安装redis脚本,确保redis版本一致,只执行一次
    |——startup.sh   // 启动redis,把dump.rdb放到redis的bin目录下,恢复数据
    |——startmock.js     // node服务器的入口函数
...

脚本内容

setup.sh

#!/bin/bash

# shell的执行选项:
# -n 只读取shell脚本,但不实际执行
# -x 进入跟踪方式,显示所执行的每一条命令
# -c "string" 从strings中读取命令

# 下载目录
downloadsDir=/root/Downloads
# 安装目录
appDir=/usr/local/redis

# 判断备份目录是否存在,不存时新建目录 
[ ! -d $downloadsDir ] && mkdir -p $downloadsDir
cd $downloadsDir

# 下载、解压、编译
curl -o redis-stable.tar.gz http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make && make test

# 若提示需要tcl或更高版本
# yum install -y tcl

# make完后,一般建议make test,我在make test时提示 You need tcl 8.5 or newer in order to run the Redis test
# wget http://prdownloads.sourceforge.net/tcl/tcl8.6.0-src.tar.gz
# 下载后,进入安装目录,进入unix,然后执行"./configure",然后make,然后make install

# 复制执行文件
cp src/redis-server /usr/local/bin/
cp src/redis-cli /usr/local/bin/

# 创建目录
mkdir /etc/redis
mkdir /var/redis
mkdir /var/redis/log
mkdir /var/redis/run
mkdir /var/redis/port

# 复制redis解压根目录中中的配置文件模板
cp redis.conf /etc/redis/redis.conf

# 修改配置文件
echo "################################ WLF DEFINE ##############################" >> /etc/redis/redis.conf
echo "daemonize yes" >> /etc/redis/redis.conf
echo "pidfile /var/redis/run/redis.pid" >> /etc/redis/redis.conf
echo "logfile /var/redis/log/redis.log" >> /etc/redis/redis.conf
echo "dir /var/redis/port" >> /etc/redis/redis.conf

startup.sh

#!/bin/bash

mkdir /usr/local/redis/bin
cp ./dump.rdb /usr/local/redis/bin/dump.rdb
redis-server /etc/redis/redis.conf

startmock.js

var express = require("express");
var redis = require("redis");
var bodyParser = require("body-parser");

const app = express();
var redisMaster = "127.0.0.1";
var redisClient = redis.createClient({ host: redisMaster, db: 1 });

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

// Router设置
var vedioTalkRouter = require("./rest/xxx");
app.use("/xx/xxx/xxx/xxxx/xxx", vedioTalkRouter);

app.get("/xx/xxx/xxxx/xxx", function(req, res) {
  redisClient.get("xxx", function(err, items) {
    res.send(items);
  });
});

app.listen(3000);

启动流程

第一次启动需要安装redis./setup.sh
之后启动时都./startup.sh 之后 node startmock.js 即可

数据库基线调整

注意在有大的变更的时候,需要在终端使用

redis-server
bgsave

然后到/usr/local/redis/src中手动把dump.rdb拷出来,放到工程目录下替换原来的rdb,这部的自动化还在进行中

数据订正

在开发测试的过程中,需要查看数据库内容的时候可以使用rdm来进行查看和修改


15_40_32__04_16_2019.jpg

体验怎么样?

万说不如一用,这东西的体感,棒,主要有以下几个优点

  1. 在开发周期较长,较大的新项目时,前端可以加快开发进度,模拟后台,基本脱离后台
  2. 培养对业务逻辑的思考,前端如果仅仅是UI,和咸鱼有什么区别,在开发简易的后台时,虽然是简易,但会考虑到业务的逻辑和流程,加深理解,减少bug
  3. redis的API简单好用,数据库也相当简单没有外键级联等,开发简直和飞一样
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • NOSQL类型简介键值对:会使用到一个哈希表,表中有一个特定的键和一个指针指向特定的数据,如redis,volde...
    MicoCube阅读 3,936评论 2 27
  • 1.1 资料 ,最好的入门小册子,可以先于一切文档之前看,免费。 作者Antirez的博客,Antirez维护的R...
    JefferyLcm阅读 17,016评论 1 51
  • 奶奶成长日记4 奶奶又进步了! 每天早上奶奶都要叫放放吃饭的,即使放放每次都会因此发躁!今天奶奶...
    未来的美好1111111阅读 202评论 1 0
  • 今晚去参加英文头马了,还是沿袭好习惯,做一下复盘。 印象最深刻的:客人很多,客人介绍环节18人,大家都对头马的规则...
    luna2020阅读 96评论 0 0
  • 那天上午,我提前半小时出发,站在天桥上看车来车往,嘴里不停地念着自我介绍,因为待会儿要进行一场面试。 准时到达目的...
    魅格体阅读 289评论 1 3