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

NodeJS-001-Nodejs学习文档整理(转-出自http://www.cnblogs.com/xucheng)的更多相关文章

  1. 2013 最新的 play web framework 版本 1.2.3 框架学习文档整理

    Play framework框架学习文档 Play framework框架学习文档 1 一.什么是Playframework 3 二.playframework框架的优点 4 三.Play Frame ...

  2. Openstack python api 学习文档 api创建虚拟机

    Openstack python api 学习文档 转载请注明http://www.cnblogs.com/juandx/p/4953191.html 因为需要学习使用api接口调用openstack ...

  3. 全网首发,腾讯T3-3整理Netty学习方案(体系图+项目+学习文档)

    前言: 想要学好一门技术,最起码要对他有一定的了解,起码听说过相应的底层原理的东西吧,最起码你要有一点能和别人交流的内容吧,下面是我精简的一点内容,希望对于大家了解netty能有一点帮助 Netty是 ...

  4. mongoose学习文档

    名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对 来自cnode社区 1.创建一个 ...

  5. soapUI学习文档(转载)

    soapUI 学习文档不是前言的前言记得一个搞开发的同事突然跑来叫能不能做个WebService 性能测试,当时我就凌乱了,不淡定啊,因为我是做测试的,以前连WebService 是什么不知道,毕竟咱 ...

  6. Ext JS 6学习文档-第5章-表格组件(grid)

    Ext JS 6学习文档-第5章-表格组件(grid) 使用 Grid 本章将探索 Ext JS 的高级组件 grid .还将使用它帮助读者建立一个功能齐全的公司目录.本章介绍下列几点主题: 基本的 ...

  7. Ext JS 6学习文档-第3章-基础组件

    Ext JS 6学习文档-第3章-基础组件 基础组件 在本章中,你将学习到一些 Ext JS 基础组件的使用.同时我们会结合所学创建一个小项目.这一章我们将学习以下知识点: 熟悉基本的组件 – 按钮, ...

  8. Openstack api 学习文档 & restclient使用文档

    Openstack api 学习文档 & restclient使用文档 转载请注明http://www.cnblogs.com/juandx/p/4943409.html 这篇文档总结一下我初 ...

  9. 将Html文档整理为规范XML文档

    有多种方式可以在.NET 平台进行HTML文件解析.数据提取,其中最简单.稳妥的办法是先使用工具将Html文档整理成XML文档,再通过XML Dom模型或XPath灵活地进行数据处理.SGML便是一个 ...

随机推荐

  1. 字符设备驱动笔记——中断方式按键驱动之linux异常处理结构(四)

    .中断方式获取按键值 单片机: )按键按下 )cup发生中断,跳转到异常向量入口执行 )b 函数 a.保存被中断的现场 b.执行中断处理函数 c.恢复 linux: )trap_init()函数构造异 ...

  2. Logstash5.3借助临时字段修改@timestamp为北京时间,方便按天生成output文件

    $more config/first-pipeline.conf input { beats { port => " } } filter { if [type] == "s ...

  3. dp之分组背包hdu1712

    题意:有n门课程,和m天时间,完成a[i][j]得到的价值为第i行j列的数字,求最大价值...... 思路:分组背包,就是第n门课程,可以做一天,可以做两天,但它们相斥,你做了一天,就不能再做一天.. ...

  4. [转][SQL] SSIS 简单应用 数据库汇入导出设定& SQL Agent定期排程

    前言 本篇不是要說高深的SSIS 技巧,而是用實例的方式,說明如何應用 Visual Studio 的「Business Intelligence Projects」來建立「Integration S ...

  5. 网络虚拟化(SDN,NFV..)和企业骨干网的演化

    本来昨天就规划了今天的这篇文章,无奈昨天中午自己喝了将近一瓶的52度二锅头...晚上想着今天怎么着也完了,要颓废难受一天了...没想到早上居然一点都不难受了.于是就写下了本文.正文之前,还是做个广告, ...

  6. C++14尝鲜:Generic Lambdas(泛型lambda)

    所谓泛型lambda.就是在形參声明中使用auto类型指示说明符的lambda. 比方 auto lambda = [](auto x, auto y) {return x + y;}; 依据C++1 ...

  7. 【WordPress】外网访问WordPress时无法加载样式表CSS

    情况: 阿里云ECS服务器,用WampServer搭建的WordPress站点,服务端自身访问该站点时显示正常,但外网访问时不能加载样式表CSS的问题. 重要的参考: https://www.doub ...

  8. CentOS 6.5 x64下Hadoop安装

    Apache Hadoop安装部署模式 单机(本地)模式(Standalone Mode) 伪分布模式(Pseudo-Distributed Mode) 完全分布模式(Fully Distribute ...

  9. PHP 之前后端交互

    今天想实现一个很简单的功能,前端上面一个按键去控制 板子里面的一个LED灯,就这么一个简单的问题,困扰了一天. 以前搞底层的时候,没有服务端和客户端的深刻概念,网页不同,分在客户端运行的 html 代 ...

  10. signal(SIGPIPE, SIG_IGN) (转)

    signal(SIGPIPE, SIG_IGN) 当服务器close一个连接时,若client端接着发数据. 根据TCP 协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会 ...