node.js中MVC模式应用

node.js中MVC模式应用

全称Model(模型)-View(视图)-Controller(控制器),这是一种开发模式,他的好处是可以将界面和业务逻辑分离.

//以下是看到的比较能理解的例子

views视图 index

<div class="form-group">
    <label for="exampleInputFile">File input</label>
    <input type="number" id="numbertxt" class="form-control">
 </div>
 <button type="button" class="btn btn-primary" id="btn">查询</button>
 //记得引入jQuery.min.js
 <script type="text/javascript">
 $("#btn").click(function(){
       var number = $("#numbertxt").val();
       window.location = "/"+number   //跳转
 })
 </script>

结果视图result

<div class="container">
    <div class="row">
       <h3>结果页面</h3>
       <p>数字<%= number %></p>
       <ul>
       <% for(var i=0;i<resultArr.length;i++) {%>
           <li><%= resultArr[i] %></li>
       <% } %>
       </ul>
    </div>
 </div>
 //记得引入jQuery.min.js
 <script type="text/javascript">
 $("#btn").click(function(){
       var number = $("#numbertxt").val();
       window.location = "/"+number   //跳转
 })
 </script>

入口文件 app.js. —用nodemon ./app.js启动

// An highlighted block
var express = require("express");
var main = require("./controllers/main.js")
var app =express();
//配置模板引擎
app.set("view engine","ejs");
//路由表
//app.get("/",function(req,res){
   //使用view/index.ejs文件当做视图
  // res.render("index",{})
})
//路由表,中间件
app.get("/",main.showIndex);
app.get("/:number",main.showResult);
//配置静态资源文件 放在public文件夹下
app.use(express.static("public"));
//监听端口
app.listen(8008);

controller控制器 controllers文件夹下 路由文件 main.js.

var math = require("../models/math.js")
var file = require("../models/file.js")
//暴露出去
exports.showIndex = function(req,res){
   res.render("index",{})
}
exports.showResult = function(req,res){
  //localhost:80008/12345
    var number = req.params.number;
    //记录时间T1
    var T1 = new Date()
    //定义一个空间存放处理结果值
    var datas = {
    number:req.params.number,
    resultArr:[],
    time:''
    .......
    }
     //命令模型(小兵)来计算
    //先读取 这是一个异步函数
    file.read(number,function(resultArr){
          if(resultArr == -1){
          //表示当前这个文件还不存在
          //计算 这是一个同步函数
               var resultArr = math.calc(number)
          //保存
               file.save(number,resultArr)
          }
          //记录时间T2
          var T2 = new Date()
          datas.time = T2 - T1
          //呈递视图
          datas.resultArr = resultArr
          res.render("result",datas)
    })
}

model层 math.js

//暴露出去
//计算
exports.calc= function(number){

    //一系列数据操作
    return 处理结果
}

model层 file.js

var fs = require("fs");
//保存
exports.save= function(number,resultArr){
     fs.writeFile("./data/"+number+".txt",JSON.stringify(resultArr))
}
//读取
exports.read = function(number,callback){
    fs.readFile("./data/"+number+".txt",function(err,data){
         if(err){
             callback(-1);//异步不能通过return来返回必须通过回调函数
             return;
         }
         callback(JSON.parse(data))
    })
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值