node.js 1绪论 2基础

第一章 Node.js绪论

第一讲.命令行窗口
命令行窗口也叫 小黑屏 cmd窗口 终端 shell

win+r,cmd,回车

常用指令:

dir 列出当前目录下的所有文件
cd+目录名 进入文件夹
md+目录名 创建一个文件夹
rd+目录名 删除一个文件夹
直接输入文件名+回车 打开文件
e: 进入e盘
’ + '表示一个空格

目录:

. 表示当前目录
… 表示上一级目录
cd ..    回到上一级目录
1
环境变量(window系统中的变量)

分为用户变量和系统变量

path变量:存放的是在cmd命令行中可以直接打开的文件

当我们在命令行窗口打开一个文件或调用一个程序时,系统会先在当前目录下寻找文件程序,如果找到了,就直接打开,如果没找到,则会依次到环境变量的path中寻找,直到找到为止

如果没找到,则报错

所以我们可以将一些经常访问的程序和文件添加到path中,这样我们就可以在任意位置访问这些文件和程序.

修改之后要重启命令行才能生效

第二讲.进程和线程
进程:

进程负责为程序的运行提供必备的环境

进程就相当于工厂中的车间

线程:

是计算机中最小的计算单位,负责执行进程中的程序

线程相当于工厂中的工人

单线程是一个人干活,多线程是多个人干活

js是单线程

第三讲.Node历史
Node.js是一个能够在服务器端运行JS的开源代码,跨平台的JS运行环境

Node采用谷歌的V8引擎运行js代码,使用事件驱动,非阻塞和异步IO等技术提高性能,可优化应用程序的传输量和规模

Node.js创建起初的目的是创建高性能的web服务器

传统服务器是多线程的,每进来一个请求,就创建一个线程去处理请求

Node处理请求时是单线程的,但是在后台拥有一个IO线程池

第二章 Node.js基础
第一讲.操作JS
node书写js代码步骤:

安装node.js
打开cmd命令行
输入node,进入node状态,即可编写js代码
但是这样体验不是很好,我们更希望直接在.js文件中书写,然后用node执行

步骤:

打开cmd命令行
打开js所在文件夹
输入node+js文件名,即可执行
直接在目录中输入cmd,可以直接进入该目录所在的cmd

第二讲.模块化简介
JS的缺陷:

没有模块系统
标准库较少
没有标准接口
缺乏管理系统
模块化可以将一个完整的程序分成一个一个小的程序

降低耦合性,便于代码复用

如果程序设计的规模达到了一定程度

模块化可以有多种形式,但至少应该提供能够将代码分割为多个源文件的机制

CommonJS的模块功能可以帮我们解决这个问题,则必须对其进行模块化

CommonJS对模块的定义十分简单:

模块定义
模块引用
模块标识
模块化:

在node中,一个js文件就是一个模块

在node中,每一个js文件中的js代码,都是独立运行在一个函数中,而非全局作用域

因此,一个模块中的变量和函数在其他模块中无法访问

通过require( )函数来引入外部的模块

可以传递一个文件的路径作为参数,node将会自动根据该路径来引入外部模块

这里的路径如果使用相对路径,必须使用.或…开头

使用require引入模块,该函数会return一个对象,该对象代表的是引入的模块

var md=require('./02.module.js');


由于每个js文件都是封闭的,因此如果想向外部暴露变量和方法,可以将需要暴露给外部的变量和方法,设置为exports的属性:

exports.x=10;
exports.fn=function(){
    console.log('a');
}


就不用var了

在引用时,这么写:

​
var a=require('./module01');
console.log(a.fn());

​

 


第三讲.模块化详解
模块标识:

require中的文件路径,称为模块标识

我们使用require引入外部模块时,使用的就是模块标识,我们可以通过模块标识来找到指定的模块

模块分为两类:

核心模块

由node引擎提供的模块,核心模块的标识就是模块的名字

var fs=require('fs');


文件模块

用户自己创建的模块,模块标识就是文件路径,可以说绝对或者相对路径

相对路径使用.或…开头

在全局对象有一个global,他的作用和网页中的window类似

在全局中创建的变量都会作为global的属性保存

在全局中创建的函数都会作为global的方法保存

可以通过global判断一个变量是不是全局变量

实际上模块中的代码都是包装在一个函数中执行的,并且在函数执行时,同时传递了五个实参

当node在执行模块中的代码时,它会首先在代码的最顶部添加如下代码:

function(exports,require,module,_filename,_dirname){


在代码的最底部,添加如下代码:

}//就是一个大括号


所以,我们可以使用exports和require

exports 用来将变量或函数暴露到外部

require 函数,用来引入外部的模块

module 代表的是当前模块自身

exports就是module的属性,所以既可以使用exports导出,也可以使用module.exports导出

_filename 当前模块的完整路径

_dirname 当前模块所在文件夹的完整路径

第四讲.exports和module.exports
我们不论使用exports还是module.exports,最后改变的都是module的exports属性

但是如果这样赋值:

exports={
    a:10;
    b:20;
}
module.exports={
    a:10;
    b:20;
}


第一个不能用,第二个可以用,因为exports是引用数据类型,它实质上是一个指针,如果直接修改exports,相当于将它指向了一个其他的对象.而修改module.exports,则是直接修改值本身

第五讲.包
CommonJS的包规范允许我们将一组相关的模块组合到一起,形成一组完整的工具

包规范:

包结构

用于组织包的各种文件

包描述文件

描述包的相关信息,以供外部读取分析

包实际上就是一个压缩文件,解压以后还原为目录.

符合规范的目录,除了主js文件以外,应该包含如下文件:

package.json 描述文件,相当于包的说明书,必须有
bin 可执行二进制文件
lib js代码
doc 文档
test 单元测试
后面四个都是可有可无的

package.json,实质上就是一个json文件,用于描述非代码的相关信息

它是一个JSON格式的文件,其中的字段主要有:

dependencies 依赖

这个包使用时依赖于哪些包

devDependencies 开发依赖

开发时需要依赖什么,但是使用时并不需要

main 主文件目录

maintainers 开发者

version 版本

keywords 关键字

bugs 提交bugs的地址

在JSON中,不能写注释!!!

第六讲.npm
NPM: Node Package Manager Node包管理系统

类似于360安全卫士里的软件管家

对于Node而言,NPM帮助其完成了第三方模块的发布,安装和依赖(会自动下载所有依赖的文件).借助NPM,Node与第三方模块之间形成了很好的生态系统

Node中最重要的功能就是NPM

NPM的使用:(要先在命令行中输入npm)

npm±v 查看版本

npm 帮助说明

npm+search+包名 在网上搜索期望的包

npm+install+包名 在当前目录安装包

如果后面加一个–save 在安装包的同时加入到依赖中

npm+install+包名±g 全局模式安装包,一般都是些工具,适用于计算机,而非项目.

npm+init 在当前目录下创建.json文件(一路回车)

npm+remove+包名 删除包

npm+install 下载当前项目依赖的包,这是每一个包使用之前的必须指令!!!

第七讲.配置cnpm
npm是外网的,有时候不稳定

于是中国有一个镜像,将美国的东西都下载下来了

输入:

npm install -g cnpm -registry=https://registry.npm.taobao.org
1
然后以后使用的就是cnpm,而非npm去下载包

cnpm的文件格式与npm略有不同,目的是不会覆盖npm的官方版本

第八讲.搜索包的流程
通过npm下载的包,都放到了node_modules文件夹中

我们通过npm下载的包,直接通过包名引入即可

node在使用模块的名字引入模块时,会首先在当前目录的node_modules中寻找是否有该模块

如果有就直接用,如果没有则去上一个目录的node_modules中寻找

一直找到磁盘的根目录,如果一直没有则报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值