nodejs入门到实战-01-基础模块介绍

  • 什么是node.js

node.js是一个基于Chrome v8引擎的javascript 运行环境。Node.js使用了一个事件驱动、非阻塞式 I/O的模型,使其轻量又高效。(由c++语言编写的)Node.js的包管理器npm,成为世界上最大的开放源代码的生态系统。 简单说:编写高性能网络服务器的javascipt工具包(用于js开发服务端程序) 单线程、异步、事件驱动。

 

  • nodejs的特点

快、耗内存多——-网上一个百万级并发测试,未优化的情况下1M的链接消耗了16G内存

 

  • nodejs可以做什么

node.js可以解析js代码(没有浏览器安全级别的限制),提供很多系统级别的api,如:文件的读写、进程的管理、网络通信。。。。

 

  • 为什么要学习nodejs

  1. node-webkit/内核  

  2.   nodeos/系统       

  3.  express/框架

  4. jade     EJS   /模版       

  5.  forever   PM2  /实现负载均衡    

  6.  log.io/在浏览器打印各种输出的日志 

  7. grunt、gulp、webpack/自动化构建工具

  8.  mocha 、karma  /测试工具     

  9.  可以辅助前端开发,代替后台开发

 

  • Node    vs     php

优点:性能高 开发效率高 应用范围广

 缺点: 新、会的人少 中间件少(函数) IDE不完善

 

  • 框架的选择

比较热门的包括:

Express(Sails),koa,Hapi

Express:完善、稳定、文档全、社区大 

koa :超前(koa2)

 Hapi:复杂(一个简单的helloworld都要做很多堆砌),适合复杂的大型项目

egg(阿里巴巴团队刚推出的)

 

  • node.js安装

Node.js版本: LTS(长时间支持版本——-推荐) 

 Current(最新版本,有些api会有变动)

 

  • node环境下js文件的执行

创建index01.js文件

console.log("hello nodejs");

终端中进入index01.js所在目录,在终端中执行 

node index01.js

  • nodejs模块化开发规范(commonjs)

定义模块

 

ajax.js文件 

var obj={

    get:function(){

        

    },

    post:function(){

        

    }

}

module.exports=obj

 

加载自定义模块

//自定义文件模块 './a.js'

var obj=require('./ajax')

 

加载 自己安装的 模块

var http=require('gulp');

var http=require('webpack');

 

加载nodejs内置模块 (不需要安装依赖)

var http=require('http')

 

  • 搭建第一个服务器

 

创建server.js

 

 

// nodejs内置(原生)模块 不需要安装依赖

//依赖模块

var http=require('http')

var hostname='localhost'

var port=8000;

var obj=require('./common')

 

 

http.createServer((req,res)=>{

//  req==request 请求对象

//  res==response 响应对象

//头部

    res.setHeader('content-type','text/html;charset=utf-8')

//  状态码

    res.statusCode=200;

    

    console.log(req.url)

//  过滤掉对ico图标请求,提高性能

    if(req.url!='/favicon.ico'){

//      res.write('2')

//  //  结束标识

//      res.end()

//      obj.fn1(req,res)    

        say(req,res)        

    }

 

}).listen(port,hostname,()=>{

    console.log('服务器已经启动')

})

 

function say(req,res){

    res.write('你好')

    res.end()

}

 

 

在终端中执行server.js 文件

node server.js

 

 

简化版

var http=require('http');

 

http.createServer((req,res)=>{

    res.writeHead(200,{'content-type':'text/html;charset=utf-8','Access-Control-Allow-Origin':"*"})

    if(req.url!='/favicon.ico'){

        res.write('hello world')

        res.end()

    }

}).listen(3000)

 

  • 推荐一个工具

每次修改完js文件的代码必须要重新 使用node 命令执行js文件,比较浪费事件

supervisor  可以监听文件的变量并自动执行js文件

 

自动更新nodejs 代码,并执行

安装  npm install supervisor -g  

启动     supervisor xxxx.js 

 可以不用执行node,自动更新(supervisor)

 

  • Nodejs-api    url

操作:--require(‘url’)

node url——提供很多方法 

url.parse(urlString)查询url信息 

url.format(urlObject)将信息解析成正常的url地址 

var url=require('url')

console.log(url.parse('http://www.baidu.com/api#aaa/bb?id=1234'))

 

var str={

protocol: 'http:',

slashes: true,

auth: null,

host: 'www.baidu.com',

port: null,

hostname: 'www.baidu.com',

hash: null,

search: null,

query: null,

pathname: '/api',

path: '/api',

href: 'http://www.baidu.com/api' }

 

 

console.log(url.format(str))

  • Query String

querystring模块用于实现URL参数字符串与参数对象的互相转换,示例如下。

require(‘querystring’)

 

 querystring.parse(str[, sep[, eq[, options]]])转换成对象 

querystring.stringify(obj[, sep[, eq[, options]]])转换成字符串 

 

 

 

var querystring = require('querystring');

 

var str=querystring.stringify({'name':'hello','age':10})

var str=querystring.parse('name=hello&age=10')

 

console.log(str)

 

你可能感兴趣的:(nodejs)