index.js
const express = require("express");导入express框架
const data = require("./data");导入data文件
const url = require('url');导入路径模块
const fs = require("fs");导入fs模块
var app = express();把express实例化
app.use(express.static("views"));使用静态资源中间件(middleware)
 
app.set("view engine","ejs");设置模板引擎是ejs
 
app.get("/",(req,res)=>{
    res.send("hello world");
})
 
app.get("/list/:no?",(req,res)=>{
    n=Number(req.params.no);记录哪一个元素是红色的
    if(!n && n!=0) n=1; 设置默认值
    res.render("list",{渲染list模板
         list:data.list,
         n:n
    })
})
添加
app.get("/add*",(req,res)=>{
     var obj=url.parse(req.url,true);
     data.list.push(obj.query.item);
     fs.writeFileSync("./data.json",JSON.stringify(data));
     res.render("list",{渲染list模板
         list:data.list,
         n:data.list.length-1最后一个元素变红
    })
})
删除
app.get("/del/:idx",(req,res)=>{
    var idx=Number(req.params.idx);
    data.list.splice(idx,1);
    fs.writeFileSync("./data.json",JSON.stringify(data));
    res.render("list",{渲染list模板
        list:data.list,
        n:data.list.length-1 最后一个元素变红
    })
})
查找下标对应的内容
app.get("/modify/:idx",(req,res)=>{
    var idx=Number(req.params.idx);获取下标
    var item=data.list[idx];获取对应下标的内容
    res.render("modify",{渲染modify模板
        idx:idx,
        item:item
    })
})
修改
app.get("/modify*",(req,res)=>{
    var obj=url.parse(req.url,true);获取路径并拆分
    data.list[obj.query.idx]=obj.query.item;通过对应的下标,得到修改后的对应内容
    fs.writeFileSync("./data.json",JSON.stringify(data));
    res.render("list",{渲染list模板
        list:data.list,
        n:data.list.length-1 最后一个元素变红
    })
})
查询
app.get("/query/:kw?",(req,res)=>{
    var list=data.list.filter((item)=>{
        return item.includes(req.params.kw);
    })
    res.render("query",{
        list:list
    })
})
 
监听
var ser = app.listen(3010,()=>{
    console.log(`listen ${ser.address().port} ...`);
})

express无中间件的增删改查的更多相关文章

  1. express有中间件的增删改查

    var express = require('express');引入express框架 var router = express.Router();引入router路由级中间件 var data = ...

  2. 告别无止境的增删改查:Java代码生成器

    对于一个比较大的业务系统,我们总是无止境的增加,删除,修改,粘贴,复制,想想总让人产生一种抗拒的心里.那有什么办法可以在正常的开发进度下自动生成一些类,配置文件,或者接口呢?   有感于马上要做个比较 ...

  3. 告别无止境的增删改查--Java代码生成器

    转自:http://www.cnblogs.com/zhuYears/archive/2012/02/29/2373491.html 告别无止境的增删改查--Java代码生成器 有感于马上要做个比较大 ...

  4. 仿联想商城laravel实战---5、无刷新的增删改查(动态页面更新的三种方式(html))

    仿联想商城laravel实战---5.无刷新的增删改查(动态页面更新的三种方式(html)) 一.总结 一句话总结: 直接js增加删除修改html 控制器直接返回处理好的页面 用双向绑定插件比如vue ...

  5. webpack4+express+mongodb+vue 实现增删改查

    在讲解之前,我们先来看看效果如下所示: 1)整个页面的效果如下: 2) 新增数据效果如下: 3) 新增成功如下: 4) 编辑数据效果如下: 5) 编辑成功效果如下: 6) 删除数据效果如下: 7) 删 ...

  6. 5、Spring+Struts2+MyBatis+分页(mybatis无代理)增删改查

    1.创建如下项目结构 2.在src下的com.entity包下创建Dept.java package com.entity; /** * 部门表 * @author Holly老师 * */ publ ...

  7. Node+Express+MySql实现简单增删改查和登录

    var express = require('express'); var mysql = require('mysql'); var app = express(); var bodyParser ...

  8. node+express实现简单的增删改查

    var express = require('express'); var bodyParser = require("body-parser"); var cors = requ ...

  9. express 对数据库数据增删改查

    接着 http://www.cnblogs.com/cynthia-wuqian/p/6560548.html (1)概念 Schema(属性) :一种以文件形式存储的数 据库模型骨架,不具备数据库的 ...

随机推荐

  1. valgrind- 内存泄漏-how to install and use

    1.how to install my host computer is ARM, U need to Attention yours... valgrind下载: http://valgrind.o ...

  2. 在python中的使用

    操作步骤: 1. 连接数据库,生成数据库连接对象 conn = pymongo.MongoClient('localhost',27017) 2. 选择要操作的数据库,生成数据库对象 (__setit ...

  3. cocoapods 安装过程及常见问题

    1.可以参考这个网页的教程:http://code4app.com/article/cocoapods-install-usage 2.按照以下步骤进行安装: 1.配置rugy静态环境 gem sou ...

  4. 对象Date的方法

    Date()对象是js提供给我们的日期对象,可以利用它获取关于时间的量. var myDate = new Date() //首先构造一个时间对象,然后用对象的方法获取时间: 1.获取年份: var ...

  5. 记录几个ubuntu环境下的php相关的路径

    php路径 /usr/bin/php phpize5 /usr/bin/phpize5 php5-fpm /usr/sbin/php5-fpm php所有的配置文件 /etc/php5/fpm 重启p ...

  6. java BeanUtils.copyProperties

    github搜索关键词: copyPropertiesIgnore https://github.com/longyi97/GA/blob/997e9c3a467268041c186234d91c4e ...

  7. test20180919 选择客栈

    题意 分析 不难发现把增加人数看成减少人数,上限是w 看成总数是w,问题就变成了询问有多少个子区间没有0. 考虑这个问题困难在哪里,就是区间加减法让我们不好判断0 的位置. 因为题目保证每个位置的值非 ...

  8. (研) int(*p)[10]; int *p[10]; int(*)[10]; 之间的区别

    int *p[10]; 从这个最简单的说起 p先与后面的[4]结合,说明他本质是一个数组 ,“[]”的优先级比“*”要高.p先与“[]”结合,构成一个数组的定义,数组名为p,int *修饰的是数组的内 ...

  9. Hive2:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

    [root@node1 ~]# hive which: no hbase in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bi ...

  10. JUC线程池之 线程池架构

    线程池的架构图如下: Executor 它是"执行者"接口,它是来执行任务的.准确的说,Executor提供了execute()接口来执行已提交的 Runnable 任务的对象.E ...