同步和异步
JS是单线程,通过异步可以实现同时执行多个任务,但不是真正的同时执行。
执行策略:
- 看到同步代码,就直接执行
- 看到异步代码,放到一个队列中
- 所有的同步代码执行完毕后,再从异步队列中执行异步任务
注意:
常见的异步任务有:ajax 请求、setTimeout、setInterval、node api 中的异步方法(例:writeFile,readFile)....
模块化
常见作用:
在一个js文件中引入另一个js文件或解决引用不明确的问题
模块化思想:
编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并互相依赖的多个小模块
模块化规范
在实际的发展中,js模块化大体有如下几种规范
- AMD
- CMD
- CommonJS
- ES6 模块化-官网标准,正规军
node.js中默认使用的就是commonjs模块化规范
如何模块化开发?
- Node.js规定一个JavaScript文件就是一个模块,每一个模块都是一个单独的作用域,模块内部定义的变量和函数默认情况下在外部无法得到
- 模块内部可以使用exports对象进行成员导出,使用require方法导入其他模块
引入其他模块的步骤:
-
require('xx'),require引入模块并赋值给一个变量,方便使用该模块的变量或函数,若是自定义模块需写路径,可以省略后缀名
-
在需要引入的模块中,导出想要使用的变量,exports.属性名称=变量名(属性名称随便起);
还有module.exports.属性名称也可以用来导出变量(且可以同时导出多个,减少代码)
let name='lxy' let age=18 let address='深圳' function sayHello(){ console.log('hello') } module.exports={ name:name, age:age, address:address, sayHello:sayHello } 推荐方式 注意:如果对象中的属性名称,与变量名称一致,可以使用属性的简写方式,上面改写如下: module.exports={ name, age, address, sayHello } 注意点2:若直接使用exports exports={ name, age, address, sayHello } // 则导出的对象为空对象 -
处理函数方法
function sayHello(){ console.log('hello') } exports.sayHello=sayHello -
简洁写法
省略一个变量的写法,直接将值赋值给属性,可以省略定义变量和函数的步骤
exports.gender='男' exports.goodBy=function(){ console.log('byby') }
-
-
调用引入模块的变量或函数(利用属性名称/函数名调用)
var a_module=require('./a') //引入自定义模块需要写路径 console.log(a_module) //对象类型 console.log(a_module.age) //引用变量 a_module.sayHello() //引用函数
let
let和var的区别
- var 声明的都是全局变量
- let 可以声明块级作用域变量
注意:
- let 在 for循环、while{ }循环、花括号中声明的变量就是块级(局部变量),且函数内部声明的也是局部变量
- 若直接在最外面声明的变量,不论是let声明的,还是var声明的,都是全局变量
- 建议声明变量尽量使用 let
第三方模块
npm(安装"包"工具)
安装/卸载某个包
npm install 包名
npm uninstall 包名
注意:
- 使用npm安装的模块,直接引用,不用加路径
- 下载安装好一个模块后,会自动在当前路径中加一个node_modules文件夹,安装好的包就在下面;并且还有两个js文件(package-lock.json和package.json)且这两个文件和node_modules文件夹同级
- 默认本地安装(只能在当前项目用)
- npm install 可以简写为 npm i
全局安装/卸载
npm install [包名] -g
npm uninstall [包名] -g
注意:
- 全局安装的默认目录是:C:\Users\用户名\AppData\Roaming\npm\node_modules
- 安装全局后就所有项目都可以使用该模块了
nodemon模块(自动化运行)
安装:npm i nodemon -g
注意:
- 则之后打开要运行的文件就变为:nodemon .\nodemon自动化测试.js
- 若该文件改动后,保存之后,则该文件就会自动运行了
http-server模块(打开网页)
简介:
- nodejs中的http模块中封装了一个HTPP服务器和一个简易的HTTP客户端,http.Server是一个基于事件的http服务器,http.request则是一个http客户端工具,用于向http服务器发起请求。
用法:
- 在对应的网页路径中,shift+右击,打开powershell,看到的一些网址
- 打开网址对应的即使网页的内容
安装慢的问题
默认下载的网址在国外: jquery - npm (npmjs.com)
配置国内镜像(推荐法):
-
先安装 nrm 模块
nrm是一个npm源管理器,npm源管理器,意思就是说npm包来源的网址,对它进行管理
-
nrm ls
查看源地址
-
设置新的下载源地址
nrm use taobao(淘宝的地址)
提示: Registry has been set to: registry.npmmirror.com/这句话即为成功了!
-
则之后使用 npm install [xxx],就不是使用默认的国外的地址了,而是按你设置的淘宝的源地址了,提升速度
\