关于Node的基础总结

238 阅读2分钟

关于引入第三方包所在位置问题node_modules

package.json是项目的描述文件,可以用npm init -y生成

当我们没有传递node_modules这个第三方包文件时,我们可以执行命令行 npm install,系统会根据package.json描述文件,自动下载第三方包

项目依赖:如jQuery

开发依赖:就是开发阶段需要的依赖,我们可以用npm install 包名 --save-dev将包添加到devDependencies中,以此区分开发依赖,用npm install --production下载安装

Node中模块加载机制

require('find')node会假设它是系统模块

Node.js会去node_modules文件夹中,看是否有该名字的JS文件以及文件夹

如果有该文件夹的话,看文件夹中是否有index.js如果没有则在package.json中的main选项确定入口文件

同步API和异步API

同步API可以从返回值拿到执行结果,但是异步API需要通过回调函数得到返回值

由于在处理异步请求时,直接取得的返回值是未定义的,所以我们要用回调函数将数据返回

但是回调函数之间有依赖或者是顺序关系时,我们就面临使异步API有序的问题

我们可以用循环嵌套的方法解决这个问题,但是我们陷入了回调地狱

为了进一步解决回调地狱,我们用Promise构造函数

let promist=new Promise((resolve,reject)=>{
    setTimeout(()=>{
        
    },2000
}));
promise.then(result=>console.log());
.catch( );

promise构造函数构造的实例有两个参数,在promise内进处理后,将返回结果通过这两哥参数返回到外面,这能够将异步操作和数据结果相分离

function p1(){
    return new Promise((resolve,reject)=>{
        异步函数
    })
}
p1().then((r1)=>{return p1()})
.then...

异步函数

将异步函数写成同步的形式

async function(){} 函数返回的是一个promise对象,所以可以.then

在async中错误用throw抛出,用return返回正确的值

await关键字,只能出现在异步函数中,后面只能跟promise对象

async function run(){
    let p1=await p1();
    let p2=await p2();
    let p3=await p3();
}

await只有promise对象有返回值后,才会进一步向下执行 其本质就是用return代替resolve这个语法

const promisify = require ('util').promisify;

将方法promise化