zoukankan      html  css  js  c++  java
  • NodeJS-001-Nodejs学习文档整理(转-出自http://www.cnblogs.com/xucheng)

    Nodejs学习文档整理 http://www.cnblogs.com/xucheng/p/3988835.html

    1、nodejs是什么:

             nodejs是一个是javascript能在后台运行的平台,具体来时只是使code javascript能在后台运行,因为不在浏览器中运行所以不涉及到document等对象。(Mozilla 则指出 JavaScript 由Core JavaScript 和 Client JavaScript 组成。)

    2、nodejs如何运行javascript:

             nodejs利用谷歌的v8引擎来执行javascript代码(V8认为是javascript的引擎中最快的)。

    3、nodejs的特性:

             Node.js 用异步式 I/O 和事件驱动代替多线程,带来了可观的性能提升。nodejs采用单线程的非阻塞模式,可以使CPU的利用率达到100%。(单线程是指我们所写的代码代码每次只能执行一行,nodejs本身不是单线程的,比如我们调用了nodejs的ioAPI,系统会通过c/c++开辟其他线程来完成,nodejs的底层是由c/c++完成的)nodejs本身提供HTTP服务,也就是说你可以轻而易举地实现一个网站和服务器的组合而nodejs项目不需要类似tomcat等web容器。

    4、nodejs适合的做什么,不适合什么:

             适合:具有复杂逻辑的网站; 基于社交网络的大规模 Web 应用;Web Socket 服务器; TCP/UDP 套接字应用程序; 命令行工具;交互式终端程序; 带有图形用户界面的本地应用程序;单元测试工具; 客户端 JavaScript 编译器。

             不适合:1. 计算密集型的程序,2. 单用户多任务型应用3. 逻辑十分复杂的事务4. Unicode 与国际化

    5、安装开发环境:(值举例window下的)

             下载nodejs开发环境http://nodejs.org/download/一直next,nodejs会自动将路径加入到path中,安装完可以在cmd中输入path查看环境变量。可以在cmd中输入node --version查看nodejs的版本。输入node进入node的命令行模式,输入console.log('测试');可以看到在控制台有想响应的输出。ctrl+d 或者两次ctrl+c退出命令行模式。

             编写第一个.js文件文件,在cmd中用node 文件名的方式就可以执行。如 console.log("hello word!");

    6、建立web项目处理不同的请求: 

    1.构建一个 路由模块

    模块作用:提供请求的URL和其他需要的GET及POST参数,随后根据这些数据来执行相应的代码。因此,我们需要查看HTTP请求,从中提取出请求的URL以及GET/POST参数。

    2.构建一个 处理请求的程序模块

    模块作用:存放不同的处理程序,和请求的URL相对应

    3.将前面两个模块和http服务器 结合起来

    一、构建一个 路由 模块

    新建一个 router.js 写入

    // 路由模块,针对不同的请求,做出不同的响应
    // handle 处理请求方法
     
    function route(handle, pathname) {
      console.log("About to route a request for " + pathname);
     
      // 检查给定的路径对应的请求处理程序是否存在,如果存在的话直接调用相应的函数
      if (typeof handle[pathname] == "function") {
        handle[pathname]();
      } else {
        console.log("No request handler found for " + pathname);
      }
    }
     
    exports.route = route;

    二、构建一个 处理请求 的程序模块

    新建一个 requestHandlers.js 写入

    // 存放不同的处理程序,和请求的URL相对应
    function start() {
      console.log("Request handler 'start' was called.");
    }
     
    function upload() {
      console.log("Request handler 'upload' was called.");
    }
     
    exports.start = start;
    exports.upload = upload;

    三、将前面两个模块和http服务器 结合 起来

    路由模块的作用是:提供请求的URL和其他需要的GET及POST参数,随后根据这些数据来执行相应的代码。因此,我们需要查看HTTP请求,从中提取出请求的URL以及GET/POST参数。

    我们需要的所有数据都会包含在request对象中,该对象作为onRequest()回调函数的第一个参数传递。但是为了解析这些数据,我们需要额外的Node.JS模块,它们分别是url和querystring模块。

    在server.js里面分别引入

    url模块:解析url

    querystring模块: 解析GET和 POST请求带的参数 (后面再说)

    修改 server.js

    // 请求(require)一个 nodejs 自带的 http模块
    // 请求(require)一个 nodejs 自带的 url解析模块
    var http = require("http"),
      url = require("url");
     
    // console.log(url);
     
    // 调用 http模块 提供的 createServer函数: 
    // 返回一个对象,这个对象有一个 listen 方法,这个方法带一个数值参数,
    // 指定这个 http 服务器监听的端口号.
     
    function start(route, handle) {
     
      function onRequest(request, response) {
        // 获取请求路径
        var pathname = url.parse(request.url).pathname;
     
        // 关闭nodejs 默认访问 favicon.ico
        if (!pathname.indexOf('/favicon.ico')) {
          return; 
        };
     
        // 收到来自 pathname 的请求
        console.log("Request for " + pathname + " received.");
     
        // 路由器处理
        route(handle, pathname);
     
        // 返回数据
        response.writeHead(200, {"Content-type": "text/plain"});
        response.write("Hello world!");
        response.end();
      }
     
      http.createServer(onRequest).listen(8888);
      console.log("Server has start!");
    }
     
    // 开放接口
    exports.start = start;

    修改 index.js

    var server = require("./server"),
      router = require("./router"),
      requestHandlers = require("./requestHandlers");
     
    // handle 保存不同请求路径对应的处理方法
    var handle = {};
     
    handle["/"] = requestHandlers.start;
    handle["/start"] = requestHandlers.start;
    handle["/upload"] = requestHandlers.upload;
     
    // 传入路由模块方法, 路径处理方法
    server.start(router.route, handle);

    四、测试

    在 command 面板输入 node index.js 

    http://127.0.0.1:8888/start

    7、利用express框架快速进行web项目开发:

    1.必须得安装express框架把:express的安装命令也更新了,需要安装express-generator

    $ npm install -g express  //全局安装

    $ npm install -g express-generator //这段命令可别忘了,不然会提示“express命令找不到的”

    利用指令   express -e 项目名称 建立项目

    2.建立网站工程结构:

    express -e ejs  microblog

    3.根据提示,进入文件夹安装

    cd microblog //microblog为前面创建工程的文件夹

    npm install

  • 相关阅读:
    学习进度条
    学期总结
    实验四主存空间的分配和回收
    学术诚信与职业道德
    《构建之法》第8,9,10章 读后感
    实验三 进程调度模拟程序
    团队项目:学习四则运算,团队准备 3.0
    团队项目:学习四则运算,团队准备 2.0
    "数学口袋精灵"bug(团队)
    实验二作业调度模拟程序
  • 原文地址:https://www.cnblogs.com/defineconst/p/6034309.html
Copyright © 2011-2022 走看看