node.js快速了解与应用
589
2022-05-30
Node.js简要小总结
Node.js简要小总结
node是什么?
node.js模块系统
概要
关键知识点梳理
核心模块和文件模块
模块间函数和变量无法访问到的原因
function(exports,require,module,__filename,__dirname)简要理解
exports和module.exports的区别
为什么会有这样的差别?
怎样理解?
包和NPM
什么是包(package)?
NPM
node是什么?
node完整的名字是node.js,顾名思义,以js为后缀名那就多少与javascript有点关系。简单的说,Node.js是运行在服务端的JavaScript。
是一个事件驱动I/O服务端JavaScript环境,基于V8引擎执行JS。
node.js模块系统
概要
node.js提供模块系统目的是让node.js的文件可以相互调用
简要的说一个node.js文件就是一个模块(模块和文件是一一对应的)
文件不一定就是JavaScript代码,也可以是JSON文件或者C/C++扩展(编译过的)
模块可以分为核心模块和文件模块
模块间的变量和函数在其他模块无法访问到,每个JS文件代码都独立运行在一个函数中
关键知识点梳理
核心模块与文件模块在来源、标识和导入方式上有所区别:
node.js的每一个模块都会包装到一个函数中执行:
function (exports, require, module, __filename, __dirname){ //编写的模块代码 }
如上:在test模块中编写代码console.log(arguments.callee +'');,在main.js中引入并执行得到上图输出结果,得证被引入模块的变量和函数无法被访问到的原因是模块在执行时会被包装到一个函数中,相当于引入了一个函数,变量为局部变量,故而不能被访问到。
exports:用来将变量或函数暴露到外部
require:函数,用来引用外部的模块,引入模块后会返回一个对象,改对象代表引入得那个模块
module:代表当前模块本身,exports是module的一个属性
__filename:当前模块的完整路径
__dirname:当前模块所在文件夹路径,(__filename的上一级目录)
exports和module.exports都可以将变量暴露到外部,但方法上有所不同:
exports暴露:方法为:exports.变量名=值;如:exports.num1=10
module.exports:
module.exports.变量名=值
module.exports={变量1=值,变量2=值}
首先需要理解什么是引用变量,然后最关键的一句话是:exports其实是module.exports的一个引用即:
var exports = module.exports;
exports 只是一个变量(类似C语言中的指针的概念),在栈中存储。而module.exports则是对象实体,在堆中存在。简单说,好比一个仓库,你要往仓库里放东西,如果你知道仓库在哪直接去放就可以,如果不知道在哪,就可以让exports领着你去仓库。至于exports为什么不能直接赋予一个对象就显而易见了——人家只是领着你去仓库的,你把东西交给他就好比你给他说这个就是新仓库的地址(如果可以的话),人家领路的本来放的是去仓库的路线,硬生生的被搞没了。
包相当于一个整合的模块,将一组相关的模块组合到一起形成一个包。包的组成主要有:
package.json json格式文件,称为包描述文件,描述包的相关信息供外部分析,类似说明书的存在。
bin :目录,存放可执行二进制文件
lib :目录,存放js代码
doc:目录,存放文档
test:目录,存放单元测试文件
npm:(Node.js package manager)Node.js包管理工具;通俗讲类似生活中的应用商店,只不过应用商店的界面和其中的应用都稍微抽象了点。
cnpm:cnpm是淘宝npm镜像,主要是解决国内使用npm访问速度的问题,需要注意cnpm是只读的,即不可以上传发布,且对npm的同步频率为十分钟一次。
关于更多npm详情请访问官网:
npm 包管理器简介:http://nodejs.cn/learn/an-introduction-to-the-npm-package-manager
JavaScript Node.js
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。