• web前端效率提升-nginx+nodejs搭建本地生态


    1.起因

      编写的项目是一个偏向于后台管理的web系统,使用了angular框架,在绑定数据的时候就依赖于后台的接口格式。

      以前是后台写好接口后,我在绑定,在这之前一些逻辑是没法做的,有时候后台接口给的慢,就要绑定假数据写死在js里面,

    感觉非常被动,后台接口、服务器出个错什么的,我的进度就要被拖延,返回的格式不友好,或者返回的格式和传递的格式不一样的时候,我还要转格式。

    人家拍拍屁股说接口写好了,回家休息,我就要加班来写代码。

    2.解决思路

      返回格式和接受格式,已表单提交为例

      

      <input ng-model="data.type" type="text">
      <input ng-model="data.id" type="text">

      如果保存修改后的信息  后台的字段变为data_id  data_type,就系要做一下映射。我期望的自然是获取和提交的格式一样,这样就能最大程度发挥mvvc的特性

      第一步  由前端自己定义返回的格式和url,当然要找后端工程师确认

      第二步  用nodejs搭建本地服务器  

        将url转换为文件名,读取txt格式文件,没有则自动创建,用来存储要返回的数据。

      第三步  使用nginx做请求转发

        nginx用来做静态服务器,他可以通过配置拦截指定的url,并将请求l转发到指定地址,这样我们可以开两个端口,一个用来连接后台开发人员的服务器,一个用来

    连接自己搭建的nodejs务器

    3.具体步骤

      安装nginx、和使用nginx做请求转发请自行百度

      安装nodejs、ws模块(websocket请求,看官网的)、运行文件请自行百度

      nodejs执行脚本的代码

      

    var http = require('http');

    var url = require('url');

    var readFile = require("fs");

    http.createServer(function(request,response){

    var params = url.parse(request.url,true).query;

    var textName = request.url.slice(1,request.url.length).replace(///g,"_");//转换url为文件名

    var path =  textName+".txt";

    readFile.exists(path, function(exists){

            if(!exists){//不存在则创建

              readFile.writeFile(path,"{ }",function(err) {

                  if(err) {

                      return console.log(err);

                  }

                  responseJson(path,response);

              });

            }else{

            responseJson(path,response);

            }

        });

    })

    .listen(8888);

    console.log("am-server is running");

    function responseJson(path,response){

    var data =JSON.parse(readFile.readFileSync(path,"utf-8"));//读取文件内容并转化为对象

    response.writeHead(200,{

    'Content-Type':"application/json"

    })

    var responseData = {

    data,

    code:200

    }

    response.end(JSON.stringify(responseData));

    }

    * 上述方案得到我们项目组后端工程师、项目负责人的大力支持。换个端口就能得到数据,测试、开发不依赖后台。

     var http = require('http');
    var url = require('url');
    var readFile = require("fs");
    http.createServer(function(request,response){
    var params = url.parse(request.url,true).query;
    var textName = request.url.slice(1,request.url.length).replace(///g,"_");
    var path =  textName+".txt";
    console.log(path)
    readFile.exists(path, function(exists){
            if(!exists){
              readFile.writeFile(path,"{ }",function(err) {
                  if(err) {
                      return console.log(err);
                  }
                  responseJson(path,response);
              });
            }else{
             responseJson(path,response);
            }
        });


    })
    .listen(8888);
    console.log("am-server is running");
    function responseJson(path,response){
    var data =JSON.parse(readFile.readFileSync(path,"utf-8"));
    response.writeHead(200,{
    'Content-Type':"application/json"
    })
    var responseData = {
    data,
    code:200
    }
    response.end(JSON.stringify(responseData));
  • 相关阅读:
    低落
    栗子
    Wireless Password HDU
    考研路茫茫——单词情结 HDU
    DNA Sequence POJ
    HDU 6138 Fleet of the Eternal Throne 多校#8 AC自动机
    Rikka with Candies HDU
    Wavel Sequence HDU
    Counting Divisors HDU
    Codeforces Round #424 E. Cards Sorting 线段树/数据结构瞎搞/模拟
  • 原文地址:https://www.cnblogs.com/resolvent/p/8412947.html
Copyright © 2020-2023  润新知