Nodejs介绍及npm⼯具使⽤
matlab被禁用高校名单⼀、Nodejs介绍
Node.js 是⼀个基于 Chrome V8 引擎的JavaScript 运⾏环境。
Node.js 使⽤了⼀个事件驱动、⾮阻塞式 I/O 的模型,使其轻量⼜⾼效。
Node.js 的包管理器 npm,是全球最⼤的开源库⽣态系统。
1、JavaScirpt介绍
(1)什么是JavaScript?
javascript是⼀门运⾏在浏览器端的脚本语⾔,⽤来做客户端页⾯的交互。
(2)JavaScript的运⾏环境呢?
故名思意他的运⾏环境就是浏览器,但是真的是这样的吗?
其实不然,他的真正运⾏环境其实是运⾏在浏览器内核中的js引擎。
为什么是这样的了?因为通俗来讲浏览器的作⽤就是⽤来浏览⽹页的,我们在浏览器除了执⾏js外还能执⾏其他得东西,⽐如我们在浏览器输⼊⼀个地址敲回车就可以发送请求并且接收服务器得响应。所以说浏览器的第⼀功能是请求⼀个http地址,也就是可以封装⼀个请求报⽂出来,将⼀个url的地址封装成⼀个请求报⽂,这个报⽂到服务端,然后给我们⼀个响应报⽂,然后在将响应解析出来,这也是浏览器的最⼤的作⽤。
当然服务器响应的内容有可能不⼀样,⽐如说服务器返回⼀个html⽂件,css⽂件,img⽂件,⽤来渲染,我们称之为渲染引擎,除此之外,还可以执⾏js,由js引擎来完成,因此可以说javascript的运⾏环境是浏览器中的js引擎,⽽不是浏览器。浏览器是⼀个⼤的概念。
(3)浏览器中的javascript可以做什么
javascript就是⽤来做交互的,但是笼统的说交互有点不明确,具体⼀点可以分为:
1)操作dom(也就是对dom的增删改,注册事件之类的事情)
2)发送AJAX请求/跨域
3)BOM交互如给我们提供页⾯跳转,历史记录,控制台打印⽇志
4)ecmascript(js的核⼼语⾔,如⽤来定义变量,函数等)
(4)浏览器端的javasscript不可以做什么?
貌似javascrip对我们⽇常的交互都可以完成,貌似什么都可以做,但是他也有不能做的事。如:
1)涉及到端对端的应⽤程序,我们需要操作⽂件,浏览器中的javascript是不能进⾏⽂件操作的,虽然h5⾥⾯提供了关于⽂件相关的API,但是这些API⼤多数只限于只读的层⾯,不能像传统的语⾔如java,通过传⼀个路径,然后将对应的⽂件读出来,说⽩了就是不能进⾏⽂件和⽂件夹的CURD.
2)浏览器端的javascript也没有办法去操作操作系统,如获取操作系统的版本之类的。
那么为什么不能进⾏这两类操作?
其实是出于安全考虑,因为,js这门语⾔运⾏的环境⽐较特殊,说他特殊,特殊在什么地⽅?
虽然我们编写好的js代码最终会放在服务器上,但是他毕竟不是在服务器上执⾏的,⽽是通过服务器发送到浏览器端执⾏的,在浏览器端执⾏⽂件的操作显然是不安全的,因此说这些功能在客户端不是不能做,⽽是由于特殊的运⾏环境没法做。
(5)了解了客户端的js所能做的事,javascrip只能运⾏在浏览器端吗?
前端开发⼈员都知道,javascrip是有ecmascrip语⾔,BOM,DOM组成的,在语⾔层⾯,她只是给我们提供⼀些操作语法,如定义变量,函数,类型,流程控制等的操作。⽽BOM,DOM是浏览器提供的,并⾮es提供的。因此我们常提及的js其实就是es,js的⼤部分功能(DOm,BOM(浏览器开放出来的API)等的操作)都是由浏览器的执⾏引擎决定的,这也衍⽣出⼀个观点,任何⼀门编程语⾔,他的能⼒不是由语⾔本⾝决定的,⽽是由他的执⾏环境决定的。
⽐如说java,他即是⼀门语⾔也是⼀个平台,对于javascript来说语⾔就是es,平台是浏览器。那么js只能运⾏在浏览器中吗?⾮也!对于⼤多数语⾔,都是运⾏在⼀个平台上的,⽐如java只运⾏在虚拟机上,但是也有运⾏在多个平台的语⾔, java在⼀定层⾯上来讲是没有必要运⾏在多个平台上的,因为虚拟机是跨平台(也就是跨操作系统如window,linux等)的。
js同样是可以运⾏在多个平台的,浏览器之所以能过运⾏js,是因为他由js的执⾏引擎。js同样,只要由⽀持他的平台就可以执⾏。因此说要想语⾔有很强⼤的功能,只需要提供强⼤的平台,node就是这样⼀个平台,能够执⾏js。
2、node介绍
(1)什么是node?
根据官⽅⽂档可以知道,node就是⼀个给予⾕歌v8引擎的⼀个javascript的运⾏时,可以理解为运⾏js的⼀个虚拟机。他使⽤的是⼀个事件驱动,⾮阻塞I/O模型,他是将js的运⾏环境搬到了服务器端,和客户端没有⼀点关系。是⼀个纯服务端的东西,node只是为js提供了⼀个平台。
node⾥⾯其实还分了两块,⼀是封装了v8引擎,⽬的是为了执⾏es(如定义变量,定义函数等),另外⼀个提供了⼤量的⼯具库,是帮助node实现各种功能的,提供了⼀些以前js的环境办不到的事情,⽐如⽂件操作,⽹络操作,操作系统的操作。
既然node是⼀个平台(所谓的平台就是⽤来运⾏特定语⾔的),也就意味着node是⽤来运⾏语⾔的,那么java也是语⾔,node能运⾏java吗?据nodejs创始⼈Ryan Dahl回忆,他最初是选择了Ruby这门语⾔,但是Ruby这门语⾔的虚拟机效率不怎么样最终放弃了,按照这种思路,貌似node将java 的虚拟机集成进来应该可以运⾏java,但node作者最终选择了javascript。
这样js就实现了在服务端运⾏的可能,js运⾏在node平台上(分为v8部分,⽤来执⾏es,和⼤量的⼯具库组件(API)称之为libuv,提供了以前js的环境办不到的事,如⽂件操作,⽹络操作等等)。
(2)node在web中有什么⽤途?
(1)node可以接受客户端⽤户的所有请求,并且能够快速的给出响应,因此node可以⽤来做⽹站。
(2)node可以作为⼀个中间层来来分发调⽤数据接⼝,⽐如有⼀个⽹站数据是有java提供的,我们可以让node作为⼀个中间层,来接受⽤户的请求,然后通过node来调⽤java数据接⼝,获取到数据后直接在node层⾯做html的瓶装,然后将渲染好的页⾯直接给⽤户。为什么要这样做,直接请求java接⼝不⾏吗,这是因为node被称之为⾼性能的web服务器,在并发和抗压⽅⾯都⽐传统的平台要好很多,因此这样⼀包装可以极⼤的减轻服务器的开发。
通过上⾯的两点,可以总结出,node在web中要么从前端页⾯到后端服务全包了,⼀个是只做其中的⼀点。
⼀⾔以蔽之,node就是⼀个javascript的运⾏环境(平台),他不是⼀门语⾔,也不是javascript的框架。可以⽤来开发服务端应⽤程序,web系统。其特点是体积⼩,快速,⾼性能。
⼆、nodejs中npm
1、npm是什么?
简单的说,npm就是JavaScript的包管理⼯具。类似Java语法中的maven,gradle,python中的pip。
2、npm安装/更新/初始化
在这⾥虽然node.js更新到了8.11.1的版本,还是使⽤6.10.3版本。
(1)安装
使⽤mac电脑选择下载安装。
npm是和Nodejs⼀起并存的,只要安装了Nodejs,npm也安装好了,安装好Nodejs之后。打开终端,执⾏如下命令,检查是否安装成功。MacBook-Pro:~ hqs$ node -v
v6.10.3
MacBook-Pro:~ hqs$ npm -v
js网页模板3.10.10
(2)npm更新
由于npm⾃⾝的更新频率⽐Node.js⾼很多,所以通过上⾯安装的npm可能不是最新版本,可以通过下⾯的命令单独更新npm。在这⾥不建议更新。$ sudo npm install npm@lastest -g
(3)npm初始化
在去下载包之前,⾸先去当前项⽬的包进⾏初始化操作,执⾏命令:npm init。
运⾏这个命令后,它会询问⼀些关于包的基本信息,根据实际情况回答即可。
如果不喜欢这种⽅式,可以使⽤npm init --yes命令直接使⽤默认的配置来创建package.json⽂件,最后根据需要修改创建好的package.json⽂件即可。
$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.二郎神之深海蛟龙预告片
name: (ES6_demo) npm_study
version: (1.0.0) 1.0.3
description: 学习npm
entry point: (index.js)
test command:
git repository:
keywords: 123
author: hqs
license: (ISC)
About to write to /Users/hqs/PycharmProjects/ES6_demo/package.json:
{
"name": "npm_study",
"version": "1.0.3",
"description": "学习npm",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"123"
],
"author": "hqs",
"license": "ISC"
}
Is this ok? (yes) yes
⽣成的package.json⽂件,主要字段的含义如下:
name: 模块名, 模块的名称有如下要求:
全部⼩写
只能是⼀个词语,没有空格
允许使⽤破折号和下划线作为单词分隔符
version: 模块版本信息
description:关于模块功能的简单描述,如果这个字段为空的话,默认会从当前⽬录的READMD.md或README⽂件读取第⼀⾏内容作为它的默认值。main: 模块被引⼊后,⾸先加载的⽂件,默认为index.js。
scripts: 定义⼀些常⽤命令⼊⼝angularjs简介
关于最后⼀个英⽂的意思,我们可以证明,当我执⾏npm init之后,会⾃动的⽣成package.json的⽂件。
三、使⽤npm安装和卸载模块
使⽤npm install会读取package.json⽂件来安装模块。
安装的模块分为两类dependencies和devDependencies,分别对应⽣产环境需要的安装包和开发环境需要的安装包。同样在安装模块的时候,可以通过指定参数来修改package.json⽂件,以jquery和webpack做例⼦。
$ npm install vue --save # --save:让vue包下载到当前⽬录下
npm_study@1.0.3 /Users/hqs/PycharmProjects/ES6_demo
└── vue@2.6.10
$ npm install jquery --save
$ npm install webpack --save-dev
执⾏后,会将新安装的模块信息记录到package.json⽂件(该⽂件主要负责项⽬包的管理):
{
"name": "npm_study", # 模块名
"version": "1.0.3", # 项⽬版本号
"description": "学习npm", # 项⽬描述
"main": "index.js", # 项⽬⼊⼝⽂件
"scripts": { # 项⽬脚本
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"123"
]
,
"author": "hqs", # 项⽬作者
"license": "ISC", # 认证证书
"dependencies": { # 当前项⽬依赖
"jquery": "^3.3.1",
"vue": "^2.6.10"
jquery下载文件请求}
}
1、下载jquery包
hqs$ npm install jquery --save
npm_study@1.0.3 /Users/hqs/PycharmProjects/ES6_demo
`-- jquery@3.3.1
npm WARN npm_study@1.0.3 No repository field.
执⾏以上命令,便可以安装对应的包到执⾏命令的当前⽬录,并创建⼀个node_modules的⽂件夹,然后把需要安装的安装包下载到⾥⾯。同时package.json⽂件的dependencies配置更新。
2、下载不同版本的模块
在npm install安装时,可以通过@来指定下载的模块版本。
MacBook-Pro:ES6_demo hqs$ npm install bootstrap@3.1.1 --save
npm_study@1.0.3 /Users/hqs/PycharmProjects/ES6_demo
`-- bootstrap@3.1.1
npm WARN npm_study@1.0.3 No repository field.
node_modules和package.json变化如下:
3、卸载模块
MacBook-Pro:ES6_demo hqs$ npm uninstall bootstrap --save
- bootstrap@3.1.1 node_modules/bootstrap
npm WARN npm_study@1.0.3 No repository field.
变化效果如下:
4、使⽤cnpm(淘宝镜像)
使⽤npm下载依赖时,由于是从国外的⽹站上下载内容,所以可能经常会出现不稳定的情况,所以需要下载cnpm代替npm,cnpm是国内淘宝的做的,在国内使⽤稳定。
1.下载cnpm
npm install -g cnpm --registry=registry.
2.使⽤cnpm
pc热压成型cnpm install jquery --save
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论