Nodejs运行时,JavaScript代码运行时的环境。
提供了一些核心模块,应用程序编程接口(Application Program Interface,API)
- API 的意思就是。一个已经解决的问题,别人已经写好方法。你只需要调用别人写好的类就行了。比如你要造一辆车,轮胎已经有人帮你造好了,你直接使用轮胎,组合各种已有东西,再加上自己的东西就行了。你无需再造一个轮子。
- API是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
交互式解析器(Read Execute Print Loop,REPL),以及一些相关的命令
- 打开命令窗口,输入node并回车,即可进入交互式解析器
- 输入.help命令,获取帮助信息。
- 输入.break或.clear(.break命令的别名)跳出当前代码块,例如,if(true){ .break
- 输入.save命令,可以将当前会话中的代码保存到一个文件中,例如,.save app.js
- 输入.load命名,可以一个文件中的代码加载到当前会话中执行,例如,.load app.js
- 输入.editor命名,进入编辑器模式,Ctrl + D编辑完成,Ctrl + C取消编辑
- 输入.exit命令,回车既可以退出交互式解析器
引入CommonJS模块化规范,同时支持ECMAScript模块化规范
CommonJS模块化规范
设计初衷
早期的JavaScript没有模块化系统,标准库比较少,缺乏包管理器工具;为了让JavaScript可以在任何地方执行,以达到Java、C#、PHP这些后台语言具备开发大型应用的能力。
设计理念
- 在Node.js模块系统中,每个文件都被视为一个独立的模块,拥有独立的作用域。
- 使用普通方式定义的变量、常量、函数以及类等等都属于当前模块。
- 通过exports和module.exports来导出模块中的成员。
- 使用require()方法导入其他模块导出的成员。
- 所有的代码都运行在当前模块作用域下,不会污染全局作用域。l 模块可以被多次导入,但是模块中的代码只会在第一次被加载时执行,执行结果会被缓存,再次加载 时,则读取上次缓存的结果。
- 模块会按照引入的顺序同步加载