node学习
1、node是什么?
官方解释:node.js is a JavaScript runtime built on chrome's V8 JavaScript engine
JavaScript-提供灵活的语法
V8-为JavaScript运行提供足够高的效率和实现
编译语言的运行环境(编译器+操作系统的底层支持)
node=c++代码编写+ECMAScript语法规范
个人理解:JavaScript可以在后端运行的一个环境
2、node内部机制?
node中的IO:node程序在Libuv支持下与系统磁盘和网络交互的过程
node没有提供多线程的支持,用户编写的代码只能运行在当前线程中
开发者无法在一个独立进程中添加新的线程,但是可以派生出多个进程来达到并行完成工作的目的
node中的并发:node虽然运行在单线程中,但任然支持高并发,就是依靠事件循环实现的
3、npm理解
npm其实是Node.js的包管理工具(package manager)
为啥我们需要一个包管理工具呢?因为我们在Node.js上开发时,会用到很多别人写的JavaScript代码。如果我们要使用别人写的某个包,每次都根据名称搜索一下官方网站,下载代码,解压,再使用,非常繁琐。于是一个集中管理的工具应运而生:大家都把自己开发的模块打包后放到npm官网上,如果要使用,直接通过npm安装就可以直接用,不用管代码存在哪,应该从哪下载。
一、包管理工具是什么
1、定义:就是将别人写好的很多js代码放在一起(粗略的理解),然后对其进行管理
这里所谓的包指的就是各种插件(例如:jquery/Vue……)
2、包管理工具的好处:
1、复用别人已经写好的代码
你不会为每个项目都写一个 jQuery、React 这样的东西,而是直接使用别人已经写好的。
传统做法是:去官方网站下载对应的 js 文件,然后放到自己项目的对应路径下,比如 /assets/js/
。
而现在有了 npm 和 yarn 这样的东西,99.9999 % 的开放获取的包都在一个集中存放的地方,方便了查找和下载。
2、管理包之前的依赖关系
因为大家写的包都放在这里了。
如果我要写一个新的包,里面的一个小程序正好是别人已经写好的,所以我就拿来用了。
这样就是我的包对别人的包有了依赖关系。
一个大型的库(包)这个依赖关系可能很复杂,
比如:依赖于几十个别的包,
同时,每个包都要求对应一个确定的版本(因为版本相差太大,可能会有API不兼容的情况)。
这样,如果人工去下载每一个依赖的包,将是一个指数级的任务:
A 包依赖于 B 和 C,同时 C 依赖于 D 和 E,B 又依赖于 F、G、H,D 又依赖于 I、J、K…
如此,基本是人类无法完成的任务。
当然,在没有包管理器之前,也没有人写包会依赖于这么多其它人的包,结果当然就是重复劳动:每个包都把一些常用的功能自己实现一遍。
二、npm是什么
npm全称Node Package Manager,他是node包管理和分发工具
Node.js 自带了软件包管理器 npm
1、是javascript的包管理工具
2、是nodejs官方的一种包管理工具
简单点来说,就是开发人员通过cmd命令符下载各种包版本的工具
三、npm安装:
1、安装出现的问题:由于npm的软件源地址在国外,所以会出现速度慢很多包安装不上时候
2、安装需要的条件:想要安装npm就得需要先安装好nodejs,nodejs是基于C++编写的JavaScript引擎
3、安装分类:npm安装:分为本地安装和全局安装,
(1)本地安装后你可以在的程序中用require('package')
访问,
(2)全局安装通常是用于命令行工具,例如构建工具grunt CLI.