一、基础知识
1. 终端、shell命令:
dir:列出当前目录下所有路径
.:表示当前目录; .. 表示上一级目录
md 目录名: 新建文件
rd 目录名: 删除文件
文件名:直接打开文件
2. 环境变量(windows系统中的变量)!!!配置path
当在命令行窗口打开一个文件,或调用一个程序时,系统会首先在当前目录下寻找文件程序,如果找到了则直接打开,如果没有找到,则会一次到环境变量path的路径中寻找。如果没找到,则报错。(寻找的过程和作用域链是一致的。)
因此可以将一些经常需要访问的程序和文件的路径添加到path中,这样就可以在任意位置访问文件和程序了。
3. 进程和线程
(1)进程:负责为程序的运行提供必备的环境。
进程相当于工厂中的车间。
(2)线程:是计算机中的最小的计算单位,线程负责执行进程中的程序。线程相当于工厂中的工人。
单线程:js是单线程语言
多线程:容易有并发问题
二、node.js简介
2.1 node.js是一个能在服务器端运行js的开放源代码、跨平台js运行环境。使用事件驱动、非阻塞和异步I/O模型等技术来提高。可优化应用程序的传输量和规模。
Node处理请求时是单线程,但是在后台拥有一个I/O线程池。
2.2 node用途:
2.3 模块化
- 在node 中,一个js文件,就是一个模块。
- 在node中,每一个js文件中的js代码都是独立运行在一个函数中,而不是全局作用域,所以一个模块中的变量和函数在其他模块中无法访问。因此,可以通过exports来向外部暴露属性。exports.x = 10
- 通过require(路径)引入模块。其实引入的是一个对象,因此需要设置一个变量来接收。var md = require(路径)
- 使用require()引入外部模块时,使用的就是模块标识,可以通过模块标识来找到指定的模块。
- 在node中,有一个全局对象global,它的作用和网页中window类似,在全局中创建的变量都会作为global的属性保存,在全局中创建的函数都会作为global的方法保存。使用var定义的函数是,局部变量,不是函数变量。(在函数中,有arguments属性,arguments.callee 得到是当前执行的函数对象;输出arguments.callee+"",就可以得到函数的真身)
5个参数介绍:
基本数据类型是放置在栈内存中的。
对象,new时,会在堆内存中开辟空间。对象在栈内存中的值,存的是一个地址。
expotorts和module.exports的区别:
exports = module.exports;
因为module.exports{}修改的是本身,而 exoorts{}修改的是对象,此时exports不指向module.exports。因此使用exports只能使用exports.xxx;(修改对象中的值,而不是修改exports的指向),不能exports{}
三、 包管理器NPM
3.1 包简介
json文件中不能写注释
NPM(node package manager:帮助完成了第三方模块的发布、安装和依赖等。借助NPM、Node与第三方模块之间形成了很好的生态环境。
3.2 npm命令
npm remove/r 包名:删除包
npm version 查看所有模块的版本
npm install 包名 --save 安装包并添加到依赖中
npm install :下载当前程序所依赖的包
安装包的时候,首先要安装package.json、使用 node init,即可创建package.json文件。
install可以简写成i。
一般上传项目,不会传node_module。所以下载下来以后,要先运行npm install
3.3镜像
3.4 使用:
node在使用模块名字来引入模块时,会首先在当前目录的node_modules中寻找是否含有该模块。
如果有则直接使用,没有就去上一级目录的node_modules中寻找。如果有则直接使用,没有继续去上级目录中寻找,直到找到为止。如果到了根目录,依然没有,则报错。
四、Buffer缓冲区
后面再继续看。加油!