1.接受post传过来的参数

nodeJs接受Post传递的参数需要通过绑定两个事件来获取,

     querystring = require("querystring");  
1 app.post('/communicate', function (req, res) {
var postData = ""; //POST & GET : name=zzl&email=zzl@sina.com
// 数据块接收中
req.on("data", function (postDataChunk) {
postData += postDataChunk;
});
// 数据接收完毕,执行回调函数
req.on("end", function () {
console.log('数据接收完毕');
var params = querystring.parse(postData); //GET & POST ////解释表单数据部分{name="zzl",email="zzl@sina.com"} msgQueue.push({
"type":params.type,
"content":params.content
});
res.send({ "content": { "seq": 24, "errorMessage": "" }, "result": "ok" });
});
});
// 已经过时

req绑定data事件来接受数据,如果触发了end事件就表示数据接受完毕!

注意:接受的postData为一个字符串,需要通过"QueryString" 模块来实现URL参数字符串与参数对象的互相转换。它有两个api,

一个是:stringify,另外一个是:parse,两个api的说明如下:

querystring.stringify(obj, [sep], [eq]) //序列化一个对象到一个 query string。可以选择是否覆盖默认的分割符('&')和分配符('=')。           
querystring.stringify({foo: 'bar', baz: 'qux'}, ';', ':')// 返回如下字串'foo:bar;baz:qux'
querystring.parse(str, [sep], [eq], [options])//将一个 query string 反序列化为一个对象。可以选择是否覆盖默认的分割符('&')和分配符('=')。
options对象可能包含maxKeys属性(默认为1000),它可以用来限制处理过的键(key)的数量.设为0可以去除键(key)的数量限制.
示例:querystring.parse('foo=bar&baz=qux&baz=quux&corge') // { foo: 'bar', baz: ['qux', 'quux'], corge: '' }

2.使用node的插件UglifyJs来合并和压缩文件

var fs = require('fs');
2 var jsp = require("./UglifyJS-master/uglify-js").parser;
3 var pro = require("./UglifyJS-master/uglify-js").uglify;
4 var finalCode='';
5 function jsMinifier(flieIn) {
6 var flieIn=Array.isArray(flieIn)? flieIn : [flieIn];
7 var origCode,ast;
8
9 var getAllFiles = function (dir) {
10 var filesArr = fs.readdirSync(dir);
11 for(var j = 0; j < filesArr.length; j++) {
12 var isDir = fs.lstatSync(dir+'/'+filesArr[j]);
13 if(isDir.isDirectory()){
14 getAllFiles(dir+'/'+filesArr[j]);
15 }else {
16 readFile(dir+'/'+filesArr[j]);
17 }
18 }
19 }
20 function readFile(filename){
21 origCode = fs.readFileSync(filename, 'utf8');
22 ast = jsp.parse(origCode);
23 ast = pro.ast_mangle(ast);
24 ast= pro.ast_squeeze(ast);
25 finalCode +=';'+ pro.gen_code(ast);
26 }
27 for(var i=0; i<flieIn.length; i++) {
28 var isDir = fs.lstatSync(flieIn[i]);
29 if(isDir.isDirectory()) {
30 //为目录,获取目录下所有的文件。
31 getAllFiles(flieIn[i]);
32 }else {
33 readFile(flieIn[i]);
34 }
35 }
36 }
37 jsMinifier(process.argv[2]);
38 fs.writeFileSync(process.argv[3], finalCode, 'utf8');

运行:

node jsMinifier /data/samba/iyy_dev/index/assets/models/wirelesswebim need.js 

 3.nodejs延迟执行

setImmediate方法和process.nextTick()方法都是延迟执行的方法,先来看下面一个例子,来区别两者的区别。

process.nextTick(function(args){
console.log("nextTick延迟执行!");
});
setImmediate(function(args){
console.log("setImmediate延迟执行!");
});
console.log("正常执行!");
//正常执行!
//nextTick延迟执行!
//setImmediate延迟执行

具体原因:process.nextTick是idle观察者,setImmediate是check观察者。事件循环是,idle>I/O>check。

参考博客:http://www.jianshu.com/p/d070e11ffa4d

4.NODE_ENV的作用

它的作用是区别开发和生成环境,通过它可以对开发和生成环境作不同的处理,在终端可以这么设置:

export NODE_ENV=production
//那么在代码中就这样处理了
if (process.env.NODE_ENV === 'production') {
// just for production code
}

5.node中cookie和session

这篇博客写的还是蛮不错的:https://niefengjun.cn/blog/576c6f44353308f7389956822726645b.html

nodeJS接受post传过来的参数的更多相关文章

  1. Spring 向页面传值以及接受页面传过来的参数的方式

    来源于:http://www.cnblogs.com/liuhongfeng/p/4802013.html 一.从页面接收参数 Spring MVC接收请求提交的参数值的几种方法: 使用HttpSer ...

  2. springMVC怎么接受前台传过来的多种类型参数?(集合、实体、单个参数)

    创建一个实体:里面包含需要接受的多种类型的参数.如实体.list集合.单个参数.(因为springMVC无法同时接受这几种参数,需要创建一个实体包含它们来接受) 如接收User(bean里面包含Lis ...

  3. 用jQuery.ajaxWebService请求WebMethod,Ajax处理实现局部刷新;及Jquery传参数,并跳转页面 用post传过长参数

    首先在aspx.cs文件里建一个公开的静态方法,然后加上WebMethod属性. 如: [WebMethod]  public static string GetUserName()   {  //. ...

  4. nodejs图片上传

    node中图片上传的中间键很多,比如formidable等,这里我们使用nodejs中的fs来实现文件上传处理: 1.安装中间键connect-multiparty npm install conne ...

  5. Web APi之捕获请求原始内容的实现方法以及接受POST请求多个参数多种解决方案(十四)

    前言 我们知道在Web APi中捕获原始请求的内容是肯定是很容易的,但是这句话并不是完全正确,前面我们是不是讨论过,在Web APi中,如果对于字符串发出非Get请求我们则会出错,为何?因为Web A ...

  6. C# params object[] args 可以传多个参数,可以不限制类型(转)

    C# params object[] args 可以传多个参数,可以不限制类型 using System;using System.Collections.Generic;using System.T ...

  7. button点击传多个参数

    // --------------------button点击传多个参数------------------------ UIButton *btn = [UIButton buttonWithTyp ...

  8. MyBatis学习总结_19_Mybatis传多个参数(三种解决方案)

    据我目前接触到的传多个参数的方案有三种. 第一种方案  DAO层的函数方法  Public User selectUser(String name,String area); 对应的Mapper.xm ...

  9. springMVC如何判断入参是默认参数还是请求传过来的参数?

    springMVC如何判断入参是默认参数还是请求传过来的参数?

随机推荐

  1. iOS不得姐项目--精华模块上拉下拉的注意事项,日期显示,重构子控制器,计算cell的高度(只计算一次),图片帖子的显示

    一.上拉下拉注意事项 使用MJRefresh中的上拉控件自动设置透明 当请求下页数据通过page的时候,注意的是上拉加载更多数据失败的问题,下拉加载数据失败了,页数应该还原.或者是请求成功的时候再将页 ...

  2. 数据库开发基础 SQL Server 数据库的备份、还原与分离、附加

    认识数据库备份和事务日志备份 数据库备份与日志备份是数据库维护的日常工作,备份的目的是 一.在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点 二. ...

  3. 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\41c191fd\ff9345c5\App_Web_login.cshtml.65793277

    本地开发环境没问题,但是发布到服务器出现问题或则直接在IIS上修改东西就给我抛出以下错误: 未能写入输出文件"c:\Windows\Microsoft.NET\Framework64 \v4 ...

  4. 【CodeForces 615E】Hexagons

    找规律. #include <cstdio> #include <iostream> #include <algorithm> #include <cstri ...

  5. MVC+Jsonp实现跨域交互

    一.认识Jsonp JSONP是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式 ...

  6. Leetcode 134 Gas Station

    There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...

  7. 【BZOJ-3638&3272&3267&3502】k-Maximum Subsequence Sum 费用流构图 + 线段树手动增广

    3638: Cf172 k-Maximum Subsequence Sum Time Limit: 50 Sec  Memory Limit: 256 MBSubmit: 174  Solved: 9 ...

  8. macOS安装「oh my zsh」

    目前常用的 Linux 系统和 OS X 系统的默认 Shell 都是 bash,但是真正强大的 Shell 是深藏不露的 zsh, 这货绝对是马车中的跑车,跑车中的飞行车,史称『终极 Shell』, ...

  9. javaScript与MVC

    MVC,就是Module,View,Controller分离,使业务逻辑更加清晰,但是现在公司的项目中很多地方那个不是这样的,很多业务逻辑放在了javascript中实现,这样做的优点就是对于技术要求 ...

  10. 【poj1984】 Navigation Nightmare

    http://poj.org/problem?id=1984 (题目链接) 题意 给出一棵树,这棵树是以平面直角坐标系为基准建立的,也就是每个节点最多只有上下左右4条边.现在动态建树,同时询问两点间的 ...