nodejs学习笔记

Nodejs学习文档整理

一、nodejs是什么:

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

二、nodejs如何运行javascript:

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

三、nodejs的特性:

         Node.js 用异步式 I/O 和事件驱动代替多线程,带来了可观的性能提高。nodejs采用单线程的非阻塞模式,可使CPU的利用率达到100%。(单线程是指咱们所写的代码代码每次只能执行一行,nodejs自己不是单线程的,好比咱们调用了nodejs的ioAPI,系统会经过c/c++开辟其余线程来完成,nodejs的底层是由c/c++完成的)nodejs自己提供HTTP服务,也就是说你能够垂手可得地实现一个网站和服务器的组合而nodejs项目不须要相似tomcat等web容器。node

四、nodejs适合的作什么,不适合什么:

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

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

 

五、安装开发环境:(值举例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!");web

六、创建web项目处理不一样的请求: 

1.构建一个 路由模块sql

模块做用:提供请求的URL和其余须要的GET及POST参数,随后根据这些数据来执行相应的代码。所以,咱们须要查看HTTP请求,从中提取出请求的URL以及GET/POST参数。数据库

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

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

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

1、构建一个 路由 模块

新建一个 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;

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

新建一个 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;

3、将前面两个模块和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);

4、测试

在 command 面板输入 node index.js 

http://127.0.0.1:8888/start

七、链接数据库以MySQL为例:

    利用nodejs自带的npm模块(node 包管理模块)加载数据库链接模块 在项目路径下执行npm install mysql 能够看到路径下多了node_modules文件夹,里面有MySQL文件夹。编写文件执行。

var mysql  = require('mysql');

URL = 'localhost';

USERNAME = 'root';

PASSWORD = 'root';

DATABASE = 'testnode';

var mysqlcon;

mysqlcon = mysql.createConnection(

    {

        host: URL,

        user: USERNAME,

        password: PASSWORD,

        database: DATABASE

    }

);

 

exports.getDate = function getDate(){

    mysqlcon.query('select * from user where id=?',[20],

       function(err,re){

           if(err){

              console.log(err);

           }else{

              console.log(re);

           }

       }

    );

}

八、利用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

每次修改代码后会自动重启。懒程序员就期望这种省事省力的工具活着了:)

  安装:npm install -g supervisor

  执行:supervisor app.js

相关文章
相关标签/搜索