nodejs学习笔记-第一课

什么是Node.js

简单来说是运行在服务器端的javascript。

Node.js的特点

基于 Chrome V8 引擎的 JavaScript 运行环境。

Js的运行是依赖于Js引擎的,而所谓的Js引擎就是Js的虚拟机,这个虚拟机被附带在网页浏览器中,而Chrome V8引擎就是一款Js引擎。

异步非阻塞式 I/O 的模型

首先理解非阻塞式之前,我们了解一下什么是阻塞式的。在程序执行的过程中会涉及到很多的IO操作,读写操作等等,其中IO操作是最花费时间的。比如我要调用IO操作的时候,其他的程序就必须停下来等IO操作执行完成才可以。这样的执行过程无疑耽误了其他的程序执行。所以Nodejs的异步非阻塞式IO模型就避免了这个问题。

创建一个简单的Node.js应用

在创建以前我们来宏观的了解一下Node.js的创建的组成部分。
  1. 引入一个required模块:使用required指令来引入Node.js模块
  2. 创建服务器:创建一个Http服务器
  3. 接收请求与响应。

     下面我们用一个实际的列子来讲解
    
var http_first = require('http');

http_first.createServer(function (request, response) {

    // 发送 HTTP 头部 
    // HTTP 状态值: 200 : OK
    // 内容类型: text/plain
    response.writeHead(200, {'Content-Type': 'text/plain'});

    // 发送响应数据 "Hello World"
    response.end('Hello World\n');
}).listen(8888);

console.log('服务器运行在 http://127.0.0.1:8888/');
关于response.wirteHead():其中200是响应码([Http的响应码详解](http://blog.sina.com.cn/s/blog_4ae187490100x9u7.html))。
关于content-type:[content-type](http://blog.csdn.net/junhuahouse/article/details/23040563)表示用什么编码的和类型。
关于:text/plain:表示无编码格式正文。对比text/html:表示html编码格式。
关于reponse.end:表是服务器停止工作,并返回当前结果。
listen:表示监听某个端口。

关于NPM

什么是npm

Node Package Manager(包管理工具),它的作用类似github,用户可以直接在命令行通过npm分享,下载,上传代码,管理你的包,代码等。而Node.js的安装包中自带了npm,也就是说安装好node.js就可以直接使用npm了。
当然npm还有许多的其他功能,大家可以自己去百度。

什么是commonjs

commonjs并不是一种框架(像jquery),而是js的一种代码规范,这是由于js的历史原因导致的,commonjs的出现,使得在大规模编码或者协同作业的时候可以避免代码污染等问题。

nodejs的模块

nodejs中模块就是文件,模块可以使js文件,json文件等等(这就是代码模块化)。
nodejs的模块分为核心模块,文件模块和第三方模块。

模块的引用方式

  1. 路径引用
  2. 模块名引用

    下面的实例是通过路径来引用模块
    创建main.js和hi.js

    在main.js中

//通过require获取一个模块,模块就是一个文件,获取的方式就是当前路径
var hi = require('./hi');
//用hi调用boy()方法
hi.boy();
在hi.js中
//所谓的创建模块就是创建一个文件
//exports表示提供公共的一个接口,类似java中的public
exports.boy = function(){
    console.log('你好哟!');
}
在控制台输出"你好哟!"

我们可以总结出一个简单的模块流程

  1. 创建模块:创建文件(比如创建一个new.js的文件)
  2. 导出模块:exports.youfunction = function(){}
  3. 加载模块:var getModule = require(./new.js);
  4. 使用模块:getModule.aMathod();

在回顾上面的代码,其中exports.boy可以替换成module.exports
在main.js中

//通过require获取一个模块,模块就是一个文件,获取的方式就是当前路径
var hi = require('./hi');
//这个使用boy就不是函数了,而是一个对象
hi = new hi();
hi.boy;

在hi.js中

function boy(){
    console.log('你好哟!');
}

module.exports = boy;

那么module.exports和exports的区别是什么呢?
在每一个nodejs的模块被创建的时候,都会自动创建一个module.exports = {}的空对象,而exports是对module.exports的引用,而require返回的是module.exprots的引用。

转载于:https://www.cnblogs.com/comefuture/p/8305936.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值