粉丝5882获赞4.7万

半亩一点零正式版本发布了,他的中文名叫小面包,官网描述他具有惊人的 javascript 的运行时速度,比 note 结实快五倍,比 deno 快两倍。小面包原声支持接叉、 tsts 等于法,并且自带包管理工具功能。 说这么多,他到底有多快呢?下面我们来实践一下小面包到底有多快。先打开官方文档,帮我们点 sh, 复制安装命令到命令行中,敲击回车键。安装成功后,根据提示我们使用 vscod 打开,点 jshrc 文件中配置环境变量。 接着我们运行 sos, 点 z s h r c, 重新加载一下配置,之后输入半亩杠 v, 打印一下版本号。好了,我们就已经安装成功了。这里需要说明 一下,安装 bom 后不需要像 note 一样,还需要安装一个 npm 包管理工具,因为 bom 自带包管理工具,我们可以直接使用 bom 创建一个项目并安装项目的依赖,这是不是很 nice? 那下面我们就通过 boom 来创建一个项目试试。来到官网,点击创建一个位的项目,复制命令, copy 到命令行中,按下回车键, 我们选择 vue 加 ts 的模板创建项目,看起来运行还是很湿滑的。创建成功后,我们根据提示进入项目执行 bomb instore 安装依赖,依赖安装成功, 我们启动一下项目。好了,成功了,用 bum 开发前端就这么简单, bum 不仅能启动项目,还能直接运行 t s 等待吗?我们来看看 note 是不能运行的,运行汇报不支持 t s 文件错误。通过半亩全局变量,我们还能直接启动一个后端接口服务。 note 则是不支持的,它需要安装 express 或者是 kov 这样的工具才能实现,是不是比 note 方便多了?讲了这么多,下面我们来对比一下棒比 note 到底快了多少。我们重新创建了两个一模一样的项目, 接下来我们一个使用 pm pm 来安装依赖,一个使用 bom 来安装依赖, 我们来对比一下他们的速度差距,安装成功 pm 耗时是三十七点五秒,下面使用棒的安装 放单装用了二十一点六六秒,第一次安装棒的比 note 快了大概小一倍的样子,第一次安装时间主要是浪费在网络请求上,效果不是很明显。 下面我们把两个项目的 note 干 model 删除,再次对比一下。第二次安装都是从缓存读取依赖,对比的是谁操作文件的速度快, pm 耗时一点九秒,浪的耗时八十七毫秒, 办的整整比 pm 快了二十一倍,可见性能方面办的还是具有很大的优势的办的。今天就介绍到这,喜欢的同学赶紧上手小面包开发起来吧!

接下来我要做的事情呢,就是在我们自己的操作系统当中去安装 no 的 gs 这个代码运行环境, 要安装他,我们要先去下载他,所以我已经提前把 note gs 的官方网站打开了,在官方网站当中,我们看到他给我们提供了两种版本跟我们去下载,第一种版本呢叫做 lts, 第二种版本呢叫做 current, 这两个版本有什么区别?我们应该去下载哪一个版本呢?我们先来看 lts 版本, lts 啊是 long time、 support 这三个单词的简写,就是说这个版本是一个长期支持版,它是稳定版,这个版本是可以运行在生产环境当中的。 第二个版本叫做 current, 他呀是最新版,他是预览版。这个版本呢是不建议运行在生产环境当中的,因为在这个版本当中他是可能有 bug 的,那么在我们的课程当中呢,要选择 lts 版本就是稳定版本,接下来你只需要去点这个按钮,就可以把这个 note x 代码运行环境呢下载到本地了,当我们下载完成之后呢,就可以通过双击的方式来运行它,安装它,由于在我的系统当中呢已经把它安装好了,那么在安装的过程当中呢,我们把这个图啊给它截下来了,那么接下来我们就看一下它的安装过程, 那么当我们去点击这个安装包以后呢,我们会看到这样的一个界面哈,那这个呢就是一个欢迎界面,接下来我们只需要去点击 next 按钮进行到下一步就可以了,那么在这一步当中呢,他是让你同意他的安装协议,那么我们必然要同意哈,所以在这个地方,我们在复选框的上面去打一个勾,然后我们点击 next 进入到下一步, 这一步呢,是让你去选择 no 的 gs 的安装目录,他呢,有一个木耳男装目录,你也可以去点击,甚至去更改这个安装目录,但是在安装的过程当中呢,千万不要包含中文目录。好,那么如果你没有特殊需求的话,我建议你去更改这个目录,如果说你真的更改了,那那个更改的目录你也要记得,那么当目录选择完成之后呢,我们就可以去点击 next 进入到下一步了,这一步呀, 是让你去选择你要安装的核心功能,那么在这个地方呢,他提供了四项哈,那么每项其实我们都需要,所以呢,我们在这个地方不需要去更改,那么我们来解释一下哈,第一项呢,就是 note gs runtime, 它呀是 note gs 本身哈,我们必须要去选择它,安装它。第二项啊,是 note package manager, 那么它呢,是 note gs 平台下面的软件 包管理工具,那么我们要使用它,所以呢,我们要去下载它,那么第三个呢,就无所谓了,它是跟文档相关的,那么接下来我们看第四个哈,第四个是什么意思呢? atto pass, 就是说把 no 的 gs 的这个安装目录哈添加到系统环境变量当中,这样的话,我们就可以在命令行工具当中,在任何一个位置,我们就都可以去运行 note gs 了。 那么在这个地方呀,不需要做任何更改,我们直接去点击 next, 进入到下一步就可以了。那么在这一步当中呢,问你是否要去安装一些额外的工具,解析哈一些模块,那么这一步啊,我们不需要去选择它,如果说我们要用到这些工具呢,我们再单独去下载它就可以了哈。好,那么接下来我们去点 next, 那么当我们点击 next 以后啊,就要准备去安装了哈,如果说前面的选项我们选择的都没有问题的话,那么你直接点击 install 去安装它就可以了,那么这呢是安装的一个过程啊,那么当安装完成之后啊,如果说不出意外的话,我们会看到这样的一个界面, 那么当你看到这样的一个界面的话,就说明 note gs 就已经安装完成了,我们点击 finish 就可以去结束这个安装步骤了。那么当你安装完 note gs 之后呀,你回到桌面当中,你会看到在桌面当中他并不会多出 note gs 这样的一个图标,也就是说呀,我们安装的这个 note gs 呢,是没有可视化界面的, 我们要通过电脑当中的这个命令行工具来使用 note, 那么当 no 安装完成之后呢,我们在命令行工具当中就多出了 note 这样的一个命令,那么我们怎么样去测试说 note 有没有安装成功呢?哎,我们可以通过 note on v, 这个 v 呢,就是 version 版本的意思,我们可以去查看我们安装的这个 note 版本,如果说能够输出版本,就说明 note 就已经安装成功了。 好,那么接下来呢,我们就切换到命令行工具当中,我们打开命令行工序,在命令行工具当中呀,我们可以去输入 no 的空 哥杠 v 来查看一下我们安装的这个 note 版本,如果说这个版本出现了啊,就说明 note 已经安装成功了,那么我们在 mac 当文档当中呢,也会看到 ntm 杠 v 啊,这个 ntm 呢,就是 no 的平台下面的一个软件包工具哈,这个 ntm 呀,实际上是另外一个软件哈,只不过他和 not 是捆绑安装了,那么当 no 安装完成之后呢,我们也可以通过 ntm 杠 v 来查看一下 ntm 的版本, 关于 ntm 的更多的知识啊,我们在后面会详细的去讲解他,当我们去看到这两个版本输出的时候啊,就完完全全的证明了啊,我们已经成功的安装了 no 的了,那么在之前的课程当中呢,我们就说过哈, no 的,他是一个代码运行平台哈,那么在这个平台当中呢,可以去运行扎巴 scrap 的代码,那么我们就来体验一下哈, 在命令行工具当中呢,我们可以去输入 no 的这样的一个命令,接下来呢,我们交接回车。好,那么现在呢,我们就进入到了一个直行扎巴 代码的这样的一个环境了,那在这个环境当中呢,我们可以去直接编写扎拉斯特带码去运行扎拉斯特带码,比如说在这个地方,我们声明一个变量 a, 让 a 的值呢等于十,那么接下来我们再声明一个变量 b, 让 b 的值呢等于二十。好, 那么接下来我们使用 tongsodel 方法去输出 a 加 b, 好,那么接下来我们敲击回车去运行这个代码,注意看在控制台当中是不是输出了三十呀,就说明现在我们就已经成功的使用了 no 的 gs 去运行了扎巴斯特的代码了, 好,这就是当前我们所讲解的 note gs 这个代码运行环境啊,要如何去安装?要如何去运行扎巴斯卡特代码?

今天给大家分享一下这个文件上传啊,它的功能呢包括前大部分以及我们这个服务端后呢都给大家写一下,前大部分呢就是定一个引扑的框,然后它 tap 呢我们定义为文件类型,支持的文件类型呢使用是我们的图片,所有的图片类型包括我们可以上传多个图片, 当我们点击完触发事件之后,他会触发我们这个 on 清理方法, on 清理方法呢,他就教用我们的 staff, 这一块呢就非常的简单,这块就不写了,我们直接看一下我们获取到的文件, 当我们选择我两个文件的时候,它会打印一个 fail list, 每一项呢都是我们选择的文件,它包含我们的内蒙 size type 以及我们最后一次的修改时间。这里呢我们写一个循环,直接循环我们这个 fail list, 我们把上面给改一下, 这我们通过这个下标呢就可以拿到我们 colis 的里面的每一项文件,然后调用我们这个 uploadfiel, 这样的话我们在这里面就可以拿到这个文件。拿到文件之后呢,我们还不能直接进行上传,我们还需要读取这个文件,我们怎么读取呢? 我们可以通过这个啊 feel red, 我们这里呢建一个 red, 我们另一个 feel red, 这个方法呢是 g s t, 我们的一个 a p a 然后呢我们可以通过 red 方法 去调用它的 red s buffer, ary buffer, 也就是说它可以把我们这个文件啊读取成一个 average buffer, 那么我们还可以通过它这里面的这个 red onload 去监听我们这个文件有没有读 取结束,也就是说这里面会触发一个试点,我们打印一下这个试点,我们看一下里面的内容, 我们选择文件打开这里呢,我们看到啊,我们这里面接触的疑问呢呢,其实是一个 progress 语文的实践,它里面呢包含了一些重要信息,其中最重要的呢其实是我们这个 target, target 里面呢有个 resolve, 这个 resolve 就是我们读取的 alrebuff, 也就是说当我们 onload 执行的时候,我们这文件就读取结束了,我们读取结束我们要做一个上传的操作,我们上传是怎么上传的?我们可以通过 x 去调我们的后端接口, 也可以通过我们原声的方法来调我们后端的接口,这里呢我就通过原声的方法给大家写一下怎么调后端的接口啊?我们在上面可以定一个 x h r, 它就等于我们扭一下 x m n h t e p 蕊块四,然后这个 x h r 呢,它就有一个 sin 的方法, 这个 sin 呢就发送我们以 win 的点 target 点 result, 也就是我们这个 average buffer。 在我们调用剩的之前呢,我们肯定还需要调用一下我们后端的接口,这样的话我们才发送我们调用这个 open open 呢,接收两个参数,第一个参数呢是我们的 mess 的,第二个呢就是后端的 uil mess 呢,我们就以 pose 的形式进行发送,然后地址呢,我们现在还没有后端地址,我们现在放在这里不写, 这样的话我们完成了一个大致的布局啊,然后我们就写一下后端的服务,后端的服务呢,我们就进行一个 http, 就等于蕊块 http, 然后多复制几个,我们引用一下这个 fs, 因为我们需要保存文件,包括我们的 pass 用于获取路径。 我们创建一个服务,这个服务呢它接收两个参数,一个是 i q, 一个和 i s, i q 呢就是 request, i s 呢就是 response, 嗯,我们 a p p 点 list 去监听一下我们这个五千零一段口,写个方式, 我们打印一下这个端口,把它启动起来,这里是它,我们使用 no 的 money 来调用。我们这个时啊, 这样的话我们这个服务就启动起来了,此时呢它会进入一个 loading 的状态,是因为我们这个 i s 里面啊没有返回值,我们把 i e s 就摁的, 我们再来刷一下,此时我们可以看到有个 hello, 这样呢我们服务器啊就算是启动起来了。首先呢我们需要解决一个问题,因为我们前端这个部分呢,我们是通过这个 open leave server 打开的一个服务,后端呢是我们自己写了一个端口,这样的话他会存在一个跨越的问题,首先我们把这个跨越问题给解决掉,我们通过 is 去设置一下嗨的, 然后当它允许跨越这个允许跨越的这个代码呢,我们就直接复制过来,因为它比较长,记不住啊,把它给复制到这里。然后呢我们定 一个数组,我们叫 file, 我们都知道我们这可以通过这个 iq 点 on 去监听我们这个对的,我们前端发过来的数据呢,是以快的形式发送过来的,所以这里我们定一个创客,然后我们将这个 file 呢复制进去,我们的创客, 也就是说把我们的创卡呢加到我们这个文件数组里面,这样的话呢,最终我们 iq 点摁的 结束的时候,也就是说我们数据发动结束的时候,它会触发我们 n 的,在这里面呢,我们就可以通过 buffer 来扛开了一下我们传过来的块儿, 我们打印一下结果,然后呢我们把这个地址啊复制到前端去, 给他加到这里,让我们可以看一下上传的结果。打开看一下输出啊,我们可以看到我们这里呢打印了一个输出,这个呢就是我们上传的文件,那么我怎么把这文件给保存起来呢? 我们调用我们的 f s 点 red file, 它第一个参数呢接收的就是我们的路径, 我们就放到当前目录下的,嗯,随便写个名字啊,叫 test, 叫 png。 后面呢我们看可以接收一个 screen 以及我们的 alright buffer, 那么我们前端读取文件就是以 alright buffer 进行读取,那么我们后端呢就直接把这个 buffer 啊给放进来就 可以了,非常的方便。在这 function 打印一下错误信息,最后呢我们 r e s 摁打一下, ok, 我们再来试一次, 我们可以看到啊页面刷新了一下,原因是因为什么呢?原因是因为我们写入文件的时候啊,他会向我那个目录写入一个 test, 写入 test 的时候呢,我们前段因为使用的是 open leo server 进行监听的,所以呢他会自动刷新一下页面,这个不重要,我们看一下这个图片,这个图片出错了 啊,我们看一下报错信息啊,我们可以看到啊,这里面呢说这个 read off 的,摁呢,这里面我把这个摁呢给删掉,我们等这个文件拿到之后,我们再摁呢, 我们再来试一次啊, 此时呢就没有报错了。然后我们看一下这个 test 的图片,这个图片我们可以看到没有任何问题,我们图片上传成功,这个呢其实就是我们的文件上传了,非常简单,我们前端呢只需要读取文件, 然后呢把这个文件啊发送给后端,具体我们是以 a rebuff 的形式发送还是以其他形式发送呢?那都是自己可以选择,这个没有固定的限制。然后呢我们可以自己写一个服务,通过监听对的和按的呢把这个数据啊给整理一下,最终呢以文件, 最终呢我们就要用这个 f s 啊 redfill 把这个文件给写入到我们文件里面,这里呢我们可以加一些文件夹,比如说我们这个 upload, 把它给写到 upload 里面,具体怎么写呢?大家可以随意。并且啊在 在我们上传文件的时候,往往呢会有一个数据监听的操作,也就是说监听我们文件上传了多少, 这里呢我们可以调用啊这个 x 加里面的 upload, 然后呢去监听里面的 progress, 这里面啊他会监听我们文件上传的一个进度,并且呢把它给返回过来,我们打印一下, 我们把这个网速给调慢一点,否则的话我们看不到一个很好的效果。然后我们打开文件,点击这个上传 啊,我们页面刷新了,我们把这个 red file 先去掉,先不让它写入,因为它写入的话会让我们页面刷新,然后我们选择一下文件再次上传,在这里呢我们可以看, 看到啊,随便点开一个,它这里面有一个 low 的,也就是说我们每一次上传的一个数据,以及我们的 total, 在我们不点开的时候,我们可以看到 low 的是一万六,而我们 total 的是七万三,那么当我们这个 low 的跟我们的 total 相等的时候,也就表示我们这个文件啊上传结束了。 所以呢我们可以通过这两个数据做一个判断,来计算文件上传的进度,同时呢我们可以看到这里面还有一个属性叫 lenscon quile 宝,也就是说我们的长度可计算,表示我们的长度可计算。我们把这个参数给复制下来,在前端我们写一下,如果说 我们一点认字 cup 为处,那么我们就做一个进度的计算,我们这里定一个变量叫 p, 等于我们 max 点 ren 做一个四舍五入,我们就将这个一点 low 的呢除以我们一点 total, 同时呢我们将这个值啊乘以一百,这样的话我们得出来的是一个百分比,我们打印一下结果 直,那就是 p, 后面我们加个百分号,我们再来看一下, 点击打开好再来,此时我们可以看到啊,这样就有一个上传进度了,等他这个进度 完全相等的时候呢,这个上传进度呢也会变成百分之百,我们可以稍微等一下, 此时呢我们可以看到上传进度为百分之百,同时呢它除了可以监听我们上传进度之外啊,还可以做一个操作去监听它的 loader, 也就是说当文件上传结束的时候,它会触发这个世界, 我们再来试一下, 我们稍微等待一下,等他上传完呢,我们看会不会打印,我们这个上传结束,我们可以看到当我们上传进度百分百的时候,我们触发了这个 low 的方法,也就是我们彻底的上 上传结束了。这个呢就是我们通过原声的方式去上传一个文件,并且呢去监听文件上传的进度,以及我们这个服务端怎么写,怎么去拿到这个数据,怎么给保存,这全部都给大家讲了一遍。文件上传呢,其实 像这种普通的文件上传啊,其实内容非常的简单,当然了在开发的过程中,我们去监听这些内容的时候,一般来说是通过 x 设置去监听的, x 设置呢,它本质上还是基于这个 x m l h b request 做的封装, 我相信呢通过这个例子啊,大家能够更好地去理解我们的文件上传以及我们 x 啊一些底层原理。

好嘞,各位,那么继续来讲一下 note g s 第六张 n p x, 那 n p x 呢?它跟 n p m 是一样的,都是基于这个命令行的一个工具,同时也是在 no 的 g s 高版本之中呢,去自带的一个命令。对,如果你用的是非常非常低的版本,那你需要手动安装一下 n p x, 那你需要执行 n p m install n p x 杠 g 就可以了啊,那 n p x 它的作用呢?主要是可以在命令杭州呢,运行我们这个 note 包里边的一些可知性文件, note 的 modis 下面点并的可知性文件。在我们没有学 n p x 的时候呢,我们之前是使用这个 script, 然后在里面去配置,通过 n p m run 去给它运行。哎,我们学了 n p x 之后呢,可以直接使用 n p x 去运行,并且呢是不需 要安装这个依赖包的。对,我们本地运行呢,是不是还要去安装下这个依赖。使用 n p x 运行呢,是不需要安装这个依赖包的,所以说这个就是它的一个优势,就是避免全局安装它的依赖包,并且呢,每次使用的都是最新的版本, 并且它还可以执行任意的一个 npm 包。哦,那最后一个命令,大家只需要了解一下即可,这个用的并不多啊, 就是我们这个 n p x 呢,它也可以执行 get up 下面的一些可执性文件。对,但是前提是你的 get up 呢,要公开我们这个 javasque 文件,所以说这个功能呢,它是支持的,但是可能用的是比较少,比如说大家了解一下即可。好,那接下来是一道面试题啊, 就是 n p m 和 n p x 一个区别,那 n p x 呢?它主要是侧重于命令,比如说执行这个并下面脚本, 或者是运行一些全局的命令,这个是用的比较多的。而 n p x 呢,它主要是包管理工具,控制我们这个模块的什么蒸山改查,对,用的比较多一点,所以说这也是他们一个主要的一个区别。好,那接下来的话就给大家去演示一下 我们刚才说的这个如何避免全局安装和总是使用这个最新版本。哎,这两条是什么意思啊?哦,然后我把演示的网址呢,已经给他贴到这个博客里边了,大家来找一下就可以了啊。然后我们使用这个 react 的一个脚手架呢,去给大家展示一下。 好,那在之前的话,我们没有 npx, 那么是不是需要执行下这个命令,去给他把这个脚手架呢去装到我们这个全局?好,我们可以先看一下啊。好,这的话要给大家再介绍一个命令,这个命令也一定要记住啊,比如说我想看一下我全局安装 装了哪些可执行文件,注意啊,全局安装了哪些可执行文件?使用 n p m l s 杠 g。 对,这个命令一定要记住啊,不加杠 g 就是当前项目啊,好,回车 他就会给你列出来。好,我们稍等一下,大家看到,这是我电脑上装的一些全局的一些可执行文件,就是可以直接去给他调用的, 就是我们在之前的片当中展示过这个 t s 杠豆的,因为我把它装到了这个全局,但是我这个全局呢,并没有安装我们这个 rec 脚手架,所以说我们需要给它先安装一下哦,然后我之前这个命令啊, a p p。 好,我们稍等一下啊。好,安装完成之后呢,我们再来看一下 n p m l s 杠 g, 哎,我们会发现这多了一个 craich recta app, 多了一个这个命令,然后这个命令呢,就可以直接去给他执行了。对,比如说后面呢,可以跟一个这个项目的名称啊,比如说叉叉叉,对,你就可以去运行这个命令了,我们先不跟了, 咱们先直接输出一下,哎,发现这个命令是不是也是可以执行的?对,传统的方式呢,就是这样去做的,但是这样做有什么缺点呢?首先 注意啊,第一个缺点是什么?他这个版本就锁定了五点零点一,对吧?还有那这个东西是不是装到我们这个磁盘里边,占用我们这个磁盘的一个空间,对吧?这是他两个一个弊端,而 n p x 呢,他就可以完美的去解决这个问题。好,那现在的话我把这个命令去给他卸载掉啊, 同样也是 on install 加一个杠 g 就可以了。对,杠 g 就是卸载全局的一个包。好,一定 已经卸载完了,然后通过 n p m l s 杠 g 去看一下, 发现是不是已经没有没有了,然后我们再执行这个命令,发现是不是已经是执行不了了,但是 n p x 呢,就可以去帮我们去做这件事,比如我们切到一个桌面哦,然后使用 n p x 呢去执行这个命令, 然后呢,比如说创建个项目叫什么 my app, 好,我们回车一下,哎,发现他是不是能够,哎执行起来,对不对? 我们并没有安装这个包啊,发现 npx 是可以帮我们去执行起来哦,他的查找规则是什么呢?注意,他的查找规则呢,是会去当前的项目里边看 note 猫就是下面的,并有没有这个可执行文件,如果没有就去全局找 全局,如果再找不到,他就会去这个安瓶官网上去给你把这个东西给你下下来,下下来等你用完之后呢,又给你删掉。对,这是他的一个规则啊,注意 啊,我们现在都没有,他应该是在帮我们去下这个依赖,下完依赖呢,把这个魅力执行完成,执行完成之后呢,又会把这个包给他删掉,所以说这个包呢,他就是一次性的。那这样的话就是什么 节省了我们这个磁盘空间,并且呢,他每次下载的时候呢,版本都是最新的,对他他就可以去解决这两个问题。 好,那这下载的话比较慢啊,我们就稍微等一下。好的,那这个项目呢,究竟是构建成功了,然后我们去切到这个 my app 里边,好,然后去运行下这个项目,看能不能运行起来啊。好,回车我们来看桌面上啊,对, 桌面上是不是已经有了这个 map 哦,然后其实也是可以运行起来。好,稍等一下。哎,网页呢也是打开了,对,基本上是没有什么问题的,那这样的话就可以避免我们这个 全局的安装,而且每次安装的是一个最新的版本。对,这就是一个 n p x 的一个妙用,很多的 c l i 呢,都是推荐他们去使用的,比如说 max, g s, 还有这个 rex 以及什么 wait price 等等,都是怎么去推荐这个使用的。好,那这个的话就是它的第一个使用场景,然后我们再演示它的第二个使用场景,好,我们先把它关掉啊, 好,这些都关掉。那第二个使用场景,我们说过它可以运行我们这个呃, note modules 点并的一个可执行文件哦,比如说我们现在执行下 wechat 哦,现在是执行不了。然后呢,我们再去看一下全局我有没有 装过位车,还是通过 m p m l s 杠 g 哦,我们可以看到发现我全局是不是也没有装过这个位车哦,然后我们可以在本地检索一下,就是通过 m p m l s 就不加杠 g 了,就是检索本地的那种模式,发现是不是也是空的 哦,什么都没有。但是呢,我就想运行这个 vit 的命令,是不是也是可以的?对,你可以直接使用 npxvit, 咱们说过他从本地检索不到呢,他就去全局找全局找不到就干嘛去给你安装啊?如果他能找到的话,他就会在本地呢去给你做一个执行,所以说我们可以安装一下 n p m i h 杠 d。 好,然后我们直接执行 white 也是执行不了的,因为什么?因为我们这个稳定的目录没有在 环境变量里边配置啊。所以说这时候我们可以通过 n p x 位车哦,然后他就他呢就会去找这个 note 猫,就是点并下面的位车帮我们去运行起来,所以他是可以帮我们去执行这个命令的。哎,发现是不是也是启动起来的,而且是非常快的,因为他能找到 它,能找到就不需要,咱就下载了嘛,对吧?所以说它是可以运行我们这个命令的,那以上的就是两个 n p x 使用的一个场景啊。

s p 呢,可以比作小学的数学课程,它相对的简单直接,适合呢快速入门,网页开发。 那么它相对的简单值就体现在哪个地方呢?我们看它的变量,可以呢,不用定义,直接就使用,现在我们用设置的变量是 a 等于一, b 等于二,然后 c 呢等于 a 加 b, 最后呢输出 c 的值,那么这个时候 c 就等于三。那么 sp 呢,他就比较适合来开发小型啊,或者呢中型的一种一些网站。 php 的话,就相当于小学的科学啊,包括了什么基础的物理呀,化学的这样一些知识 等等。 php 呢,取起来也相对来说也是易于上手的。语法呢,也比较直观,比如说我们来看这样一段代码啊,但是我们就发现他的语法 比 sp 要难理解一点,他就多了一个美元的符号,在语句的结束的地方呢,还要设置一个分号,那么写法呢,就比 sp 要复杂。 ph p 相对于 s p 来说呢,学起来也要稍微的要难一点, 而且呢,随着项目复杂度的增加,需要呢更加的深入去理解和掌握更多的编程概念,才能驾驭大型的项目。那么 p h p 呢,它适合搭 中小规模的外部应用,电子商务平台等等。而肉的结实的话,就相当于我们小学高年级的计算机的编程课了啊,比如说 scratch 或者呢是 passion, 那么 low 的基石呢,它是基于 javascover 的语言的,涉及到义部编程,事件循环等,相对来说很抽象的一些概念,所以说呢,学习成本呢,比 php 会更高。 那么肉的结实呢,适用于高并发场景啊,适用于呢实时的应用, api 服务等等,这样一开放 好,那么这些呢,就是陶老师对这三个类型呢做了一个比较,如果感觉对你有帮助,欢迎呢点赞收藏。

朋友们好,通过我们之前的介绍,大家已经清楚了啊,就是借助于 no 的点 gs, 我们可以使 jealous crepe 去做后端的开发。 那现在的问题是,什么是 no 点 gs 呢?是不是咱们还不是特别清楚?那这节课呢,咱们就专门来看一下什么是 no 的点 gs, 那在这里啊啊,老师放了一段官方的英文描述,那如果大家对英文不太感冒的话呢,我们可以来看一下这个中文的翻译。 no 的点 gs 是一个基于 cum v 八引擎的 javas craft 运行环境,在这里啊,老师把一些关键的文字使用红色做了一下标注,我们可以专门来看一下啊 no 的点 gs 是 javascraft 运行环境,那也就是说,如果大家写了一段普通的 gs s 代码,你除了可以把它放在浏览器中去执行之外,我们还可以把它放到 no 的这个环境中来进行执行,因为 no 它本身呢,也是一个 gs 的运行环境。 ok, 到目前为止啊,咱们已经介绍了两个 gs 的运行环境,分别是浏览器和 no。 如果我们写了一段 gs, 把它放到浏览器中去运行,那么就证明我们正在做前端开发。那反过来,如果我们写了一段 gs, 把它放到 no 的里面去执行,那么就证明我们正在做后端开发。 那么接下来啊,咱们可以来看一下这个 no 点 gs 的官方网站啊,在这里呢,我们放了一个地址,对吧?哎,你可以复制这个地址啊,然后呢粘到自己的浏览器中去打开去访问。那打开之后呢,你蓦然会看到 no 点 gs 官网的首页,在官网首页中啊,他也明确告诉咱们了, note 点 gs 是一个基于 cum v 八引擎的 jia 八 squef 运行时,那其中啊,这个运行时也可以叫做是运行环境啊,指的是同一个意思。 好,清楚了 no 的点 gs 是什么东西之后呢?那接下来我们再来看另外一个问题,就是 no 是基于谁来运行 gs 代码的呀?哎,在 no 中,他是基于库姆 v 八引擎来解析和执行 gs 代码的。那为什么是 v 八呢? 来注意啊,咱们之前介绍过,在众多的浏览器中啊,有 croom, 有 fairfox, 有 i e 等等,对吧?那其中呢, croom 的 v 八 gs 解析引擎,它的运行效率最高。那因此啊,咱们 not 点 gs 啊,它 也是采用了 v 八引擎来解析和执行 gs 代码,因为这样的话呢,能够让咱们 gs 是不是跑的更快一些啊?哎,所以说啊,咱们一定要清楚,我们的库尔姆浏览器和 no 的点 gs 用的是同一款 gs 解析引擎,叫做 v 八啊,只不过这个 v 八啊,他用在不同的地方做的事情是不一样的,你在 crom 浏览器里面去用 v 八,你做的是前端的开发,对吧?哎,你在 not 中去使用 v 八解析 gs, 那么咱们做的是后端的 开发。那 ok 啊,这一节课我们为大家介绍了一下什么是 no 的点 gs, no 的啊,就是一个 jinx creeper 的运行环境,只不过它是一个后端的运行环境,那么咱们对应的前端运行环境就是浏览器。同时咱 咱们的 no 的啊,他是基于库姆 v 八引擎来解析和执行 gs 代码的,因为 v 八引擎他的解析效率最高。那好了,这一节课关于什么是 no 的点 gs, 我们就为大家介绍到这里, 朋友们好,这节课呢,咱们来进一步了解一下 no 点 gs 中的 jinx crepe 运行环境。 那首先啊,我们给大家去画了一张图,咱们可以一起来看一下啊,在这里这个粉红色的这个框就代表 no 的点 gs 的运行环境。在 no 的这个运行环境中,包含两个最核心的部分,分别是 v 八引擎和内置 api, 其中 v 八引擎负责解析和执行 gs 代码,内置 api 提供了一些能力啊,让咱们 在 gs 中可以调这些内置的 api 去做一些后端相关的事情。那么在这里呢,我们就可以去编写一些带直行的 gs 代码, 在这些带执行的 gs 代码中,我们可以调用 no 的为咱们提供的这些内置 api。 那然后呢,我们这些代码就可以交给 v 八引擎去解析和执行了。 那么在这张图中啊,大家可以发现这些内置的 api 我们好像很陌生的样子,那其实啊,咱们学习 no 的点这颜色里面一个很重要的部分就是学习这些内置 api 如何去进行使用。 ok 啊,那清除了咱们弄了点这些色的运行环境以后啊,哎,接下来我们再来看三个注意点,第一个浏览器是 jinx crepe 的前边 端运行环境,第二个 no 的点 gs 是 jinx crepe 的后端运行环境。那关于这两点,我相信大家都没有任何的疑问,对吧?哎,只要咱们在浏览器里面去搞开发,那肯定是前端开发,对吧?那在 no 里面去做开发的话,那肯定是后端的开发。 那接下来我们再来看第三个点啊,也是最重要的一个点,闹的点 gs 中无法调用 dom 和鲍姆等浏览器内置的 api, 为什么呢?因为咱们 no 的点 gs 是一个独立的运行环境,在 no 的运行环境中啊,他只提供了和 no 的相关的一些 api, 并没有去提供浏览器那些内置的盗盗姆、阿贾克斯等等 app。 因此啊,咱们一定要记住,在 no 的中是没有办法调用 盗姆操作和盗姆操作的,也无法去掉阿雅克斯,因为咱们弄的里面没有内置这些 api 函数, ok, 那么这一节课啊,咱们为大家介绍了一下 no 的点 gs 中的 javascript 运行环境。 no 的这个运行环境中啊,最核心的两部分就是 v 八引擎和内置 api, 那其中啊, v 八引擎负责解析和执行 gs 代码, 内置 api 提供了一些能力啊,让咱们在 note 中啊,可以去做后端开发。那其中啊,最重要一点就是这些内置 api 中不包含盗姆和爆姆或者是阿杰克斯,因为内些 api 是属于浏览器的内置 api, 咱们在 no 中啊,无法掉这些棒棒操作。 ok, 那么这一节课呢,我们就为大家介绍到 同学们好,通过之前的介绍,我们已经知道了什么是 no 的点 gs, 那么接下来问题来了,那么我们为什么要学 no 点 gs 呢?而学会他以后我们可以做什么呢? 哎,这一点我相信大家都比较关心, ok 啊,那么接下来咱们可以一起来看一下 no 的点 gs 作为一个 jax cripper 的运行环境啊, no 的仅仅提供了一些基础的功能和 api, 那也就是说啊,咱们 no 的啊,它属于一个比较底层的一个东西,明白吧?那然而呢,据咱们 no 的点 gs 提供的这些基础功能之上啊,很多强大的工具和框架像雨后春笋一样啊,层出不穷,所以说 大家学会了 no 的以后,可以让咱们前端程序员胜任更多的工作和 两位,那都可以做哪些相关的事情呢?咱们可以一起来看一下啊,那比如说我们可以基于 express 这个框架,可以快速的构建外部应用,那也可以基于 electro 这个框架,可以构建一些跨平台的桌 方面应用。那又比如说,我们可以基于 rat 这个框架,可以快速的构建出 apa 接口项,也就是说我们使用 no 的啊,可以去写接口了,咱们可以做一个真正的后端程序员去写接口。 那其实呢,咱们 not 还可以做的事情啊,非常非常多,比如说还可以去读写和操作数据库啊,可以去创建一些实用的命令行工具来辅助咱们 前端进行开发等等啊,就是说 no 的可以做任何你能想到的事情。那总而言之啊, no 的是咱们前端时代的大保健啊,有了 no 的点 gs 这个超级 buff 的加持,以后呢,咱们前端程序员的行业竞争力会越来越强。 ok, 这给大家去介绍了一下啊,咱们学会 no 了以后可以做什么事情啊?那么接下来问题来了,那 no 呢?好学吗? 就两个字,好学啊,咱们只要会 jinse craft, 就一定能够学会 no 的点 gs 啊,大家一定要放心啊, no 的是非常非常好学的。那么接下来我们再来看一下 no 到底怎么去学呢? 哎,其实啊, no 的他的学习方式啊,和咱们之前学扎拉斯 crop 的方式是比较类似的啊,咱们可以先来看一 下浏览器中的詹姆斯盔法学习路径,咱们是怎么学的呀?当时,哎,我们是先学习了一下詹姆斯盔法,他的基础语法, 然后呢,我们又学习了一下浏览器中的一些内置 api 啊,比如说如何操作 dom, 如何操作 bomb。 那学会这些基本的语法之后呢啊,咱们又学了一些第三方的一些库,比如说这块位,比如说 art, template 等等, 对吧?哎,这咱们之前关于扎拉斯盔法的一个学习路径啊,那接下来我们再来对比的看一下 no 的点 gs 的学习路径。那咱们 no 的点 gs 的学习路径啊,也是由三部分组成,首先啊,我们要保证自己 已经掌握了 jos 亏法的基础语法,那我相信这部分啊,大家都是没有问题的,因为咱们 no 的里面所用到的 gs 基础语法和咱们之前所学的 gs 基础语法是完全一样的啊,大家应该都是没有任何问题的。 那所以说咱们学习的重点啊,就是后面的 no 的内置 api 模块,还有第三方的 api 模块。那首先咱们去了解一下 no 的点这些词中一些常见的内置模块如何进行使用,当咱们掌握了这些常见内置模块的使用之后呢啊,咱们再来学习一些 第三方的好用的 apm 模块。那么通过我们的介绍啊,大家就已经知道了咱们 note 应该怎样去学,怎么学啊, 先学习内置模块,再学习第三方模块,就像咱们之前学习这些扎拉斯哥哥一样,对吧?哎,咱们先学习浏览器内置的 api, 再去学习一些第三方的。酷啊,都是先学内置的,再学第三 方的。好,这节课呢,我们为大家介绍了,学会 no 的可以做什么,可以做什么呀?哎,几乎咱们学会 no 之后,可以做任何你想做的事情啊, 只要你有想法就能够实现啊。那同时呢,我们也为大家介绍了,弄得非常好学。那怎么学啊?就是按照这样一个学习路径啊,咱们先学习内置 apm 模块, 学会之后呢,咱们再去学习一些常见的第三方一片模块。那好了,这一节课呢,我们就为大家介绍到这里。


好了,各位,那么继续来学习 note j s 的第三张 n p m 和这个 package 接粉。好,那 n p m 它的全称叫什么? note package manager, 也就是 note j s 的包管理工具。 注意啊,它是一个基于命令行的一个工具啊。对,主要就是帮助我们去在项目中安装这个依赖,那升级啊,就是 c u r d 进行我们这个依赖的一个管理啊。好, 好,那你如果学过其他的编程语言,比如说你学过 p r p, 那就类似于 p r p 的什么 composer 这么一个工具。 如果你学过 java, 那就类似于这个 mering, 如果你学过 python 呢,就类似于这个 pipe, 那你如果学过 rust 的话,它就像这个 cargo。 对,就是每一个编程语呢,其实它都有这个包管理工具。当然我们这个 note 这也是也也不例外啊。对,它叫 n p m。 哦,那么这个 m p m 它怎么去使用呢?这也我们讲过,它是一个基于命令行业的工工具,所以说它是有非常多的命理的。 好,有些常用的命令大家一定要背会啊。好,那么现在展示下第一个 n p m n h。 好,那这的话我是打开了一个空的文件夹,然后我们来写一下这个命令。好,通过 n p m init。 那这个命令是干什么的?去创建一个 packaged gesin, 也就是我们一个项目的一个描述的一个文件啊。好,我们执行一下。 好,那首先呢,他要你创建一个包名 pick the name, 一个包名,这个包名的话,我就先随便给他起一个,比如说叫小满, ok, 然后这个 watch 是一个什么?是一个版本。好,一会我们去详细解释一下这个 watch 啊,我们先给他一个默认, 对,注意这个小括号,他就是一个默认值,一点零点零,我们现在用他的默认值啊,到还有 discription, 就是一个项目的描述,这就是你这个项目或者是这个叉 j, 或者这个包,他要干什么用,你可以去描述一下。对,我这就简单写点东西。啊。 好,还有这个 entry point, 那这也是一个什么你这个项目或者是你这个包的一个入口文件,默认是这个 index 的 g s。 好,那这个的话一会我们来解释一下啊,还有这个 tis command 一个测试的命令,那这个的话就随便了。还有这个 gate repastry, 那这个话什么?这个话这是一个对应的你 get up 的一个仓库的一个地址,你可以贴到这来,我就随便写点东西。好,这个 keyword 是一个什么关键字?比如说你这个项目呢?是干什么用的?比如 说我做了一个什么工具,对,你可以把它类似的一些关键字描述可以去写上去,到时候大家搜的时候呢,就可以通过这个关键词去匹配到,就是可以去搜到你这个包的。哦, 还有这个 author, 就是一个作者这个小马随便写一个。还有这个 license, 它就是一个开源协议,常见的有这个 mit 为宽松协议,还有这个阿帕奇, 就是 mit 的话会居多啊,后面的话我们会详细讲一下这个 license 的。哦,那创建完成之后呢,你就来个 yes 就可以了, 他就会在当前的目录的一个根目录下面去生成一个 package json, 对,生成这么一个文件,其实就是描述你这个项目或者是你这个包,它是用来干什么用的?对,我们可以看到 name, 对,就是这个包名,其实都是对应的我们这个 name, 还有这个 worsion, 我审注页它是三段式的,是吧?一点零点零,好,我们来解释一下这个三段式是干什么的?我们来创建一个 read me, 啊, 对,它是一个什么一点零点零,对吧?好,那首先第一段呢?它是一个这个主版本号。 对,主版本号一般用于什么?就是重大的这个更新或者是 重大的改动,比如说我们这个 v u e, 对吧?比如说 v u e 二升级成什么 v u e 三,对,它这个版本呢?就是从这个什么二点六,是吧?一下子就变成这个什么三点零了,对吧? 二点六点零,我就举个例子,对吧?一下子就从二点六就升级升三点零了,因为他三点零呢,他是有重大的更新的,就些什么底层啊,各种乱七八糟东, 就是变了,非常非常多。那这时候的话就要修定你这个主版本号,要进行一个这个重大的一个升级,也就是这个对着我们这个第一位啊。好,我们来看这个第二位。第二位是什么?次版本号。 这是次版本号一般用于什么呢?用于这个,比如说功能的更新, 对吧?功能的更新,比如说我们这个什么 oe 三,是吧?增加了什么编译红,又新增了很多编译红,对吧?那可能就是什么三点一点零,对吧?他就把这个版本号上去前面升一个级,这就是有些功能的更新呢,他会修订这个次版本号。 好,那第三个是什么?第三个就是修订号,对,修订号一般常用于什么呢?比如说 face 一些 bug, 对吧?比如说有这个我们这个开发人员,哎,提了 这个一数了,对吧?哇,很严重,那这个物业他要进行这个修复,修复完之后呢,他就要发包,是吧?比如说就是什么三点一点一对就证明什么?证明修过这个一个 bug, 对吧?所以说这个话就是他版本号的一个意思啊,就是代表了这个 worship, 那 description 就是我们刚才这个描述,这个闷呢,就是我们这个入口文件,但是我们现在没有这个 gs, 就是比如说当有人要用到我们这个包,或者是用到我们这个插件的时候呢,这个闷呢就会帮我们去找这个 index gs, 那这个东西呢?它还有很多配置,像比如说 type 这个 module, 或者是 common g s, 还有一个什么 model, 还有一个是这个,还有一个是这个对 brother。 好,好,那这四个呢,其实都是跟我们这个模块化是相关的,所以说我们到时候呢去讲这个模块化的时候呢,会去单独讲一下,目前呢大家只需要知道这四个是跟模块化有有关的就可以了。好, 还有注意啊,这个 scraps 呢,这个也是挺重要的,他呢可以帮我们去执行命令或者是运行脚本,那现在的话,我们就可以让他去帮我们去执行这个命令。 注意,那这个命令是怎么执行的呢?需要通过 n p m 一个 run, 对,然后 run 后面这个参数呢?就对应这个 script 的词里边的参数,比如说 test, 对,它就是一个命令,然后我们去执行这个命令, 那执行这个命令之后会干什么?注意就有个 iq 就会输出这么一个字母串,还有这个 excite, 并且呢把这个进程 呢去给它呃,断掉,所以说主要是输出这个 zipper 串就可以了。好,我们来看一下 哦,我们可以看到是不是这个字母串呢?他就是正常的这个输出呢,并且呢把这个进程呢给他断掉了。这两个按的符呢,就是要执行两个命令啊,对,前面的执行完,然后才会执行这个后面的这个命令,当然这里面文字你也可以改一下,比如说什么幺幺幺,对吧? 然后来个杠,好,然后我们再执行一下,他就会输出这个幺幺幺。对,这个 icle 呢,它主要是这个就是输出一段这个座串啊。哦,那这个的话就是一个运行这个命令,当然你也可以去自定义啊,比如说叫什么 小满,对,这名字都是可以去自定义的,比如说 m p m r, 对吧?小满,哦,他就会输出这个幺幺幺。对,我们可以看到,是吧?他是正常输出这个幺幺幺,所以这些里边这些名字都是可以去 随便定一的,当然你也可以去定一个脚本,比如说要执行什么 v u e。 对,我们现在没有,后面的话,我们会去详细去讲一下这个东西的。好,目前大家只需要先了解一下即可。还有这个 repaster, 也比如说你用了什么,用了 get, 是吧?然后它的地址是什么?那这些资料呢?都会显示到这个 n p m 官网上面的, 还有这个作者,还有这个 license。 好,我们可以去看一下,然后你就可以去搜索 n p m g s 点 com, 好,然后比如说我们随便搜一个包啊,随便搜一个 wee, 好,我们来搜索一下, 好,点击这个 v v, 然后你会看到它非常多的信息啊,比如说什么周下载量,对吧?它的一个版本,对吧?我们可以看到这个 repastry, 对吧?它仓库地址就显示到这上面了,其实就是跟我们这是对应的,对,它就会显示到这个 n p 官网上。当然还有这个 home 配置也是可以去配置的,这边可以增加一个,就是这个什么 home 配置,然后配置一个什么地址啊,他也是会给你显示到我们这个 npm 官网上面的, 还有这个什么 license 这个协议看,是吧?一般默认的都是这个 mit。 对,所以说这里边有很多一些信息的,比如还有什么 e 水,对吧?就是这个提出来的问题,或者这些 bug 啊,有六百多个,还有这个 p r 等等这些信息呢,都是可以在上面去看到的。哦,那这个的话就是一个拍根阶层的一个文件的一个简单的描述啊, 哦,以及我们这个 n p m and need 的一个命令。好,然后我们再看接下来的一些命令啊,其实它命令是很多的哦,还有我们这个 n p m msto, 那这个命令呢,也是常用的,比如说我们 想要安装一下他这个 v u e 这个依赖库啊,对,我们要使用 v u e 肯定得先安装嘛,他这里话就提供了一个命令,就是 m p m i v u e i 是什么意思呢? i 就是 install 的一个简写,就是你可以用 n p m i v u e 或者是 n p m install v, 其实意思是一样的,对,只是一个简写而已,就是 n p m i v u e 和 m p m install v u e 其实都是一样的。好,我们来给它安装一下啊,回车,好,我们稍等一下。 好,那我这个 v u e 呢就已经安装完成了。注意,安装这个依赖包之后呢,他会在这个根目录下面给你创建一个 note modules, 注意,这个是正常的,并且呢会给你生成一个 package 杠 look 的 jason, 那这个文件我们下一章呢会去详细的介绍一下,并且呢, 注意啊,他还会在这个拍个 jason 里边会帮你创建一个 dependences, 也就是依赖的一个管理啊,然后会有你这个报名以及他对应的一个版本。呐,对,这个 voe, 但是比如说我想要安装 v u e 二版本怎么办呢?注意,我们这个默认是安装这个最新的三点三点四,是吧?我们来看一下啊, 三点三点四,对吧,但是比如说我这个项目我就想用 v v 二,哎,那怎么办呢?哎,其实也是有办法的,你可以通过 n p m store v u e, 注意,加一个 it 可以安装这个详细的版本,比如说二点六点零,对吧?他就安装这个二了,加一个 it 就可以了。 好,我们来看它这个版本呢,是不是进行一个变化了?对,所以说你需要安装指定的版本呢,你可以通过这个 it 符后面去 跟一个这个东西就可以了。那这个话就是一个非常简单的一个 npn install, 就是安装依赖一个东西。呃,当然既然有安装的,那肯定就是有卸载,那卸载的话就是 npm on install, 然后比如说对应的后面就是苞米 u e, 就把它卸载掉了。好,我们会看见那个 dependences, 它就没有了,那这个话就是一个卸载。那注意啊, n p m in store, 比如说 v u e 有个杠杠 save, 对,杠杠 save, 其实加不加都没有关系,只是在之前的版本不加可能会有问题,但是在 n p m 五点四之后呢?你运行 n p m i v u e, 然后刚刚 sale 加不加其实都没有什么意思的,它会都会把你放到这个 dipanics 里边来,如果是在之前的版本,你如 如果不加杠杠 c, 他是不会给你放进去的,所以说这样的话容易造成这个音量的一个丢失啊。呃,现在的话,我们一般都是这个高版本,所以说其实这两个加不加其实都可以的,但是还有一个命令啊,就是杠杠 c 杠第一位啊,对,杠杠 c 杠第一位。好,我们来运行一下。 好,注意啊,我们这个模块呢,就变成什么 d e v dependences。 好,我们再来一个别的,给大家有个区分吧,比如说我们安装个 m d 五吧,它比较小。 好,我们可以看见有两个,一个是什么 dependences, 还有一个是 dv dependences, 其实还有一个啊, 还有一个是 peer 顶判定 c s。 对,好,这三个,这三个是一个很常用的。好,我们来简单的介绍一下啊, 第一位 dependencies 是是什么意思呢?注意这个是什么呢?我们的开发的依赖都要装到这个第一位 dependences 哦,第一位 dependences 就是什么开发的依赖,对,都要装到这儿 哦,它对应的命令是什么?就是 n p m i 报名,对吧?然后杠杠 sale, 杠第一位。哦,当然它也有一个简写啊。对,它也有一个简写, 对,它也是有一个简写的。简写是什么?也就是 m p m i。 然后是一个什么?是一个苞米,直接一个杠大地就可以了,大地就是杠杠 ceo 杠 dv 的一个 简写,它呢就会帮你装到这个第一位 dependences 里边儿的。好,那什么是开发依赖呢?比如说,对吧?比如说 wire park, 对吧? wiper park 还有什么呢? which 还有这个 rough, 那这些东西呢?其实都算是这个开发依赖。对,因为你上到这个生产环境,你需要这些东西吗?那不需要啊,对吧? 对,生产环境不是不需要这些东西的,所以说 它只是作为一个开发。对,我们要 n p m 什么状 dv 的时候呢?可能会依赖这些模块,或者是 m p m 上 build 把。我们去这个打包的时候呢,可能会依赖这些工具,但是打包完成之后,你还需要它吗?它不需要了,它就没什么用了。 所以说我们只是开发的时候呢?所以说去会装这些东西,所以说所有的开发的依赖呢,都要装到这个 dv 底盘 insist 里边来就可以了。那 v u e 装到这合理吗?其实是不合理的,因为 v u e 呢, 不管是我们开发的还是这个生产的,都需要用到这个 v u e, 所以说它装到这是不合理的。对,它应该是这个 depending sits 里边来。 好,那这儿的话一般有什么?比如说 wipec, 对吧? wipec 在这是非常合理的,对吧?比如说还有什么 wipec, 什么它的一些 c o i。 对,装到这个 d v dependencies 里边是可以的。好,那这个 dependence 呢?其实你也可以理解成是一个这个生产环境所需要的依赖。 对,比如说我们 这个,对吧? v u e 肯定需要,还有什么 v u e x, 对吧?还有什么 v u e router, 对,这些我们这个生产环境是肯定是这个需要的,比如说你写代码的过程中呢?还用到这个 m d 五, 对吧?他也是需要的,所以说生产环境也就是线上所需要的依赖呢?都要装到这个 dependencies 里边来就可以了。啊,还有这个什么屁儿 dependencies, 那这个是干什么的?注意啊,这个其实我们一般用的比较少 啊,这个是一般是什么?给这个编写这个插件的人员,或者是这个, 或者是编写这个 m p m 包的开发人员去使用的。对,一般是给这类人员去使用的,比如说我们用到了什么 wait, 对吧? with, 他提供这个 plugging, 他提供这个插件,就比如说我写了一个东西。啊,这给大家举个例子啊,好,我们这些先不要了。对,我写了一个位的插件,叫什么?呃, which gun plugging? 杠小满,举个例子啊。好, 然后版本号是一点零点零。对,我写了个是这个插件,那你说这个插件他可以凭空运行吗?那显然是不可以凭空运行,因为他什么,那他要基于 wit, 对,他是 wit 上面的一个插件,所以说那怎么办呢?那这的话要有一个位置, 对,我就随便写一个,比如说二点零。好,那意思是什么意思呢?意思就是他就是一个同等依赖的一个意思啊。对等也可以叫对等依赖,对,叫对等依赖。也就 是说你安装我这个插件,必须呢也要把这个 wit 装下来,因为他是不可能凭空运行的,他需要依赖这个 wit 一个宿主的一个环境。对,就是我们这个插件呢,是不能凭空运行的。 对,需要依赖我们这个依赖宿主的环境。那我们这个 wait plugin 呢?是能依赖这个 wait。 对,所以说你要安装我这个插插件,那你必须要把这个 wait 也安装下来,那这个的话就是一个 pure dependences 的一个意义, 这本来他也不可能凭空运行,所以说你一定要按照这个啊。第二点就是这个防止安装这个重复的一个依赖啊。啊,如果你放到 dp 这次里边来,那人家如果用户已经装过未成,你又给人家装了一遍,那不就有问题了吗?所以说一般的话都会写到这个片底盘, 比如说你要开发什么 wific 插件,那你就把这个换成 wific, 对吧?上面就什么 wific plug, 对吧?就是,道理呢,都是一个道理的啊。那这个的话就是 pack 的节省里面的信息的一个详解啊。好,然后我们再看一下这个 n p m 些别的命令。对, m p m 命令是非常多的,然后我们再讲一些啊, 好,呃,有一些命令是非常重要的,就是跟着小马学,一定要把这个命令给我背会啊,就是 m p m configure list。 对,这个命令一定要背会,这个命令很重要, 它呢可以查看 n p m 或者是 no 的一些版本,比如说 no 的 worsen, n p m 的 worsion 以及 n p m 所在目录的一个位置, no 的可执行目录的一个位置,还有我们这个什么根目录啊,以及所有的信息呢,都是在这里边的,以及什么还有 n p m 圆的一些信息,对,它都是在这个文 这里边的,所以说这个命令一定要给我背会,就是去查错的时候是非常好用的。哦,那第二个命令,什么第二命令就是注意我们现在使用的什么 mpm 官网的一个镜像源,由于这个地址是国外的,所以说我们 mpm install 是吧?下载什么依赖的时候它会很慢, 就是因为走的是这个国际的一个线路,他会非常非常慢,所以说就出现了一些非常多的代理啊,比如说淘宝进项, 我们就会把这个路径的换成一个淘宝的路径,那淘宝呢?去连接这个国际线路是非常快的,所以说就出来了非常多的镜像,比如说一些著名的什么淘宝镜像,什么中科大,什么清华大学的, 他们是专门接的这个国际线路,所以说我们通过他们的代理呢,是下载这个依赖数呢,是非常非常快的。好,那这的话来演示一下这个如何去切换我们这个圆,或者是 查看这个元,首先通过 m p m get 这个 ready three 就可以去获取我们这个镜像元,其实 config 里边也可以看到,如果 config 里边看不到的话,可以使用这个 get 迷你,我们可以看到对,它就是一个 n p m 默认的一个元。好,你要想设置它的话,就可以通过 n p m config set 这个 registry 后面跟一个地址,比如说 h t t p 末号杠杠, 什么淘宝点叉叉叉是吧?这的话我是给大家随便举个例子,好,要模仿我随便举个例子,好,这样的话就已经设置完成了,设置完成之后我们再来获取一下, 好发现原呢已经变成是我这个自定的。呃,注意下,这个是返不了,我只是举个例子,到时候你们可以去搜索一下这个淘宝的原,或者什么清华的原什么什么。好,现在的话 把它这个换回来啊。 好,然后再获取获取一下, 那就已经是换回来了,所以说你可以通过这个 get registry 和这个 m p m config set registry 去设置这个呃,多音的元就可以了。当然你也可以去下载一个工具,比如说 m p m i 小买 z s 杠 g, 那这个的话就是我为了方便大家去切换这个圆,去写了一个工具包啊。好,大家去直接装一下就可以了。这个杠 g 是什么意思呢?杠 g 就是杠,杠就是 global 的意思,就是装到全局的一个意思啊,我们到时候会详细讲一下这个 global 的,然后大家就按按照这个去执行就 可以了。好,装完之后呢,会有一个 m m p 这个命点,然后杠 v 可以看一下这个版本号啊,哦,是杠大 v。 对一点,五点一。对,这是我写的一个包啊,你可以用 m m p current 对去查看当前的一个远 对,当前的语言呢,是 n p m。 哎,对,我写的这个包呢,纯中文的。然后你可以通过 m m p m m p use 去切换元,就比如说切换什么,这不是淘宝的吗?或什么腾讯的 c m p m 都可以在这儿去切换,比如说我们切换到这个淘宝上面儿。 好,切换完成之后呢,我们再通过这个 get register 去获取一下, 发现他是不是已经变了, 所以说大家可以去安装一下我这个包就可以了。去帮你去可以快速的切换这个镜像,然后我们可以把它再切回来,比如说 m p m。 好,哎,点错了,然后我们再把这个 get 这个给它复制一下,我们再看一下它是否切回来了。 ok, 也是切回来。当然你也可以去自定义啊,比如说 m m p id, 对吧?你也可以去自定义,比如说你们公公司呢?有这个。呃,自定义的这个 m p m 这个镜像服务,是吧?你可以去给它自定义这名称啊, 或者和一个什么计算地址,哎,就给你添加进去了,添加进去之后你就通过 m m p u 就可以去切换了,对吧?比如说什么?这个是我刚添加的,对吧?那现在肯定是有问题,这我随便写了,我还是给它切回去吧。好,然后我再 check 一下。 对,又变回来也是没有问题的。对,这个的话是如果你们公司,比如说京东呢,它就有这个 g m p m, 我就可以把它添加进去,然后用我这个插件去给它切换就可以了。哦,那还有一些命令,什么比如说 m p m logging 这个 ology 呢?你必须要有这个 np 的账号,你可以去注册一个,这个是非常有用的。对,然后他会让你上这个什么呃,密账号密码以及邮箱验证码。对,我这个可能登录过了,我就不需要再登录了啊,登录完成之后,你可以通过 npm publish, 对这个的话就可以把你这个依赖包呢去给它发到这个 n p m 上面。对,也就是它会根据你这个拍个 jason 的描述文件去给它进行这个发包的,到时候我们会去详细讲一下这个命令,目前只需要这个 了解一下即可。好,那以上的话这些就是一些 m p m 常用的一些命理,以及拍个这阶层一个讲解啊。