关于node.js使用上的问题

问的比较小白的问题,还希望大家能耐心解答一下。
因为前端经常要跟后台交互,而我又没怎么太了解后台的东西,很多时候都没办法,就哪我想测一下ajax()的用法效果都不行。
然后听说node.js可以弄,但是我完全不了解,去官网了解,百度,也只说node.js可以高并发,服务器端js什么的,具体,哪些用处,怎么用,完全不了解。
还望用node.js的前辈们指条明路啊!!!!!

阅读 4.6k
5 个回答

这些个东西不是一下子就能学会的,要是以前不了解,一下子肯定不理解,沉住气,慢慢来!
要是你就想看一看ajax执行的效果,我给你个node的小程序,可以看一看ajax请求时服务端收到了什么

/*
 * Author: ikether
 * Email: ikether@126.com
 *
 */

var http = require('http');


var server = http.createServer();
var count = 0;

server.on('request', function(req, res) {
    req.body   = [];
    var length = 0;

    req.on('data', function(chunk) {
        req.body.push(chunk);
        length += chunk.length;
    });

    req.on('end', function() {
        req.body = Buffer.concat(req.body, length);
        
        console.log('\n[', count++, ']', '[', new Date(), '] HTTP', req.method, req.url);
        console.log('-------------------------- header -----------------------------');
        for (k in req.headers) {
            process.stdout.write('- ' + k + ': ' + req.headers[k] + '\n');
        }
        console.log('--------------------------- body -------------------------------');
        console.log(req.body.toString('utf8'));
        res.setHeader('Access-Control-Allow-Origin', '*');
        res.end('OK');
    });

    req.on('error', function(err) {
        console.log(err);
    });
});

server.on('error', function(err) {
    console.log('error:', err);
});

server.listen(8123);

将上面的代码保存为raw.js文件。

  • 在unix-like操作系统下打开终端输入node raw.js回车启动服务

  • 在Windows下在开始菜单中找到Node的控制台程序打开,cd 到存放raw.js文件的目录输入node raw.js回车启动服务

对应的网页例子:

<!DOCTYPE html>
<html>
    <head>
        <meta charset='utf-8'/>
        <title>test ajax</title>
    </head>
    <body>
        <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
        <script>
            (function($) {
                console.log('hello');
                $.post('http://127.0.0.1:8123/', {abc: 'foo', age: 22}, function(data, status) {
                    console.log(data);
                });
            })(jQuery);
        </script>
    </body>
</html>

将上述HTML代码保存为raw.html双击打开浏览器执行,就会在控制台中看到如下类似的输出:

[ 6 ] [ Tue Jan 19 2016 12:46:09 GMT+0800 (CST) ] HTTP POST /
-------------------------- header -----------------------------
- host: 127.0.0.1:8123
- user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0
- accept: */*
- accept-language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
- accept-encoding: gzip, deflate
- content-type: application/x-www-form-urlencoded; charset=UTF-8
- content-length: 14
- origin: null
- connection: keep-alive
--------------------------- body -------------------------------
abc=foo&age=22

就是浏览器执行$.post('http://127.0.0.1:8123, {abc: 'foo'....等代码时的实际请求

七天学会NodeJS

不知道这个是否适合你。

当然,虽然说是七天,其实用不着七天。

直接用express搭建一个简单的服务器,可以上express的中文官网看一看,然后就是上npm去找你这个项目需要的组件,比如解决异步的async,request.然后就是搭建一个存储数据的数据库,mongo或者mysql,我推荐你去看《nodejs实战》这本书,按照他的思路,你的nodejs会提高的。

1.看个ajax的请求参数还要误导人家去开个node看?
2.打开chrome控制台->Network 查看Header,里面有你请求的路径和参数,看Response可以查看服务器返回的数据
3.如果是要自己模拟返回数据,直接初始化一个Node+Express项目,在route/index.js里面修改路由,必要时需要跨域的话,在路由前面加上

app.all('/*', function (req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', req.headers && req.headers.origin ? req.headers.origin : '*');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
    res.setHeader('Access-Control-Allow-Credentials', true);

    if(req.method==='OPTIONS'){
        res.send(200);
    }else{
        next();
    }
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题