码迷,mamicode.com
首页 > Web开发 > 详细

nodejs从0到1(Node简介+模块机制)

时间:2017-08-29 21:39:36      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:有趣   加载   标准   全局变量   包管理   ports   编写   mon   code   

1.nodejs简介:

1.Node不是js应用,而是js运行平台。客户端js通过浏览器和v8引擎联系到了一起,服务器端js用Node和v8又牵起了小手,所以说Node是运行平台,类似于客户端的浏览器。Node采用c++语言编写,v8引擎也是c++写的。Node为神马用c++写呢?这是个有趣的故事,详见《深入浅出Nodejs》.

2.模块机制:

说模块机制之前,先说下CommonJS.CommonJS是一种规范。原来js规范比较薄弱,不利于js大规模应用:主要有以下的缺陷:

2.1:js没有模块系统,没有原生的支持密闭作用域或依赖管理。

2.2:js没有标准库,除了核心库以外,没有文件系统的API,没有IO流API.

2.3:js没有标准接口,没有web server 或者数据库的统一接口。

2.4:js没有包管理系统,不能自动加载和安装依赖。

于是乎就有了CommonJS规范,就是为了解决以上问题,Node.js就是这种规范的实现。Node自身实现了require方法作为其引入模块的方法,同时NPM也是基于这种规范。

3.模块的简单定义及应用:

写一个circle.js

1 var PI=Math.PI;
2 exports.area=function(r){
3     return PI*r*r;
4 }
5 exports.zhouchang=function(r){
6     return 2*PI*r;
7 }

写一个testCircle.js

1 var circle=require("./circle");
2 console.log("erea:"+circle.area(1)+"zhouhcang:"+circle.zhouchang(1));

执行结果:

技术分享

require是导入;exports是导出,内部方法原理是由node自身实现的,在es6之前node导入导出用这两个实现,es6出现后,export;import成为主流。

ES6发布的module并没有直接采用CommonJS,甚至连require都没有采用,也就是说require仍然只是node的一个私有的全局方法,module.exports也只是node私有的一个全局变量属性。

 

nodejs从0到1(Node简介+模块机制)

标签:有趣   加载   标准   全局变量   包管理   ports   编写   mon   code   

原文地址:http://www.cnblogs.com/gaoxuerong123/p/7450040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!