http模块:配置简单 的web服务,npm/cnpm工具
express框架:express中间件进行服务配置;路由;请求处理;
DB服务:学习使用mysql关系型数据库;
web接口服务:使用express、koa简单配置接口服务、JSON解析;
nodejs RESTful API:提供跨语言、跨平台的服务接口、支持web/app
node文件系统:服务端基本的文件读写操作
一、命令行窗口(cmd窗口/终端):
1、常用的命令:
dir:列出当前文件夹下的所有文件;
cd 目录名:进入到指定的目录;
md 目录名:创建一个指定的文件夹;
rd 目录名:删除一个指定的文件夹;
2、目录:
.:表示当前目录;
..:表示上一级目录;
3、环境变量:
path:当我们在命令行窗口打开一个文件或调用一个程序时系统会首先在当前目录下寻找程序,如果找到了则直接打开,如果没有找到则会依次到环境变量path的路径中寻找,直到找到为止,如果没有找到则会报错。
4、快速进入指定文件夹的方法:
在指定文件夹的地址栏中输入:cmd
二、进程和线程:
进程:负责为程序的运行提供必备的环境,相当于工厂中的车间;
线程:计算机中最小的计算单元,负责执行进程中的程序,相当于工厂中的工人。
三、node执行js文件:
cmd中进入hello.js所在文件夹,cmd中输入:
四、node整合WebStorm:
WebStorm菜单的File->Settings:搜索node,找到Node.js and NPM,在右侧的Node interpreter中输入node.exe所在位置即可。
五、WebStorm中node代码提示:
WebStorm菜单的File->Settings:搜索node,找到Node.js and NPM,在右侧的Coding Assistance中启用即可。
六、模块化:
在Node中,一个js文件就是一个模块;
在 Node中,每一个js文件的js代码都是独立运行在一个函数中,比如:
其实是:
而不是全局作用域,所以一个模块中的变量和函数在其它模块中无法访问 。
在Node中,通过require()函数来引入外部模块,require()中可以传递一个文件的路径作为参数,node将会自动根据该路径来引入外部模块,这里路径如果使用相对路径,则必须以“.”或者“..”开头;
我们可以通过exports来向外部暴露变量或者方法,只需要将需要暴露给外部的变量或者方法设置为exprots的属性即可。
使用require()引入模块以后,该函数会返回一个对象,这个对象代表的是引入的模块。
我们使用require()引入外部模块时,使用的就是模块标识。
模块分成两大类:
核心模块:由node引擎提供的模块,核心模块的标识就是模块的名字;
文件模块:用户自定义的模块,文件模块的标识就是文件的路径。
node模块中用var定义的变量都是局部变量,取消掉var时定义的变量才是全部变量:
输出:
由此可知:
当node在执行模块中的代码时,它首先会在代码的最顶部添加如下代码:
在代码的最底部,添加如下代码:
实际上,模块中的代码都是包装在一个函数中执行的,并且在函数执行时,同时传递了5个实参:
exports:该对象用来将对象或者函数暴露到外部,
require:函数,用来引入外部的模块,
module:用来代表的是当前模块本身,exports就是模块的属性。既可以用exports导出,也可以用module.exports导出两者指向的是同一个对象,
__filename:当前模块的完整路径,
__dirname:当前模块所在文件夹的完整路径
七、exports与modules.exports的区别:
本质上两者是相等的,但是exports只能通过“.”的方式向外暴露内部变量,而modules.exports既可以通过“.”的形式,也可以直接赋值;
八、包简介:
CommonJS的包规范允许我们将相关的模块组合在一起,形成一组完整的工具。
CommonJS的包规范包括包结构和包描述文件。
包结构:
package.json:必须
bin:可执行的二进制文件,非必须
lib:js文件,非必须;
doc:文档,非必须;
test:单元测试,非必须
包描述文件:
用于表达非代码相关的信息,它是一个json文件-package.json,位于包的根目录下,是包的重要组成部分。
九、npm(Node package manager)简介:
相当于360安全卫士里的软件管家。
对于node而言,npm帮助其完成了第三方模块的发布、安装和依赖等。借助npm,node与第三方模块之间形成了很好的一个生态系统。
npm -v:查看npm版本;
npm version: 查看所有模块的版本;
npm search 包名:搜索包;
npm install/i 包名 :安装包;
npm remove/r 包名:删除包;
npm remove/r 包名 --save:将包名在依赖中删除(node _modules中不删除);
npm install 包名 --save:安装包并添加到依赖中(package.json的dependencies中);
npm install:下载当前项目所依赖的包(package.json的dependencies中的包);
npm install 包名 -g:全局安装包(全局安装的包一般是一些工具)
十、node搜索:
通过npm下载的包都放到node_modules中,我们通过npm下载的包直接通过包名引用即可。
node在通过模块名字来引用模块时它会首先在当前目录的node_modules中寻找是否含有该模块,如果有则直接使用,如果没有则直接去上一级目录的node_modules中寻找,如果有则直接使用,如果没有,则继续再去上一级目录中寻找,直到找到磁盘的根目录,如果依然没有,则直接报错。