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,"{\r\n}",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,"{\r\n}",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));

}