1、什么是nodejs
2、什么是node
3、npm的简单使用
4、webpack介绍
1、什么是nodejs
打开Nodejs英文网:https://nodejs.org/en/
中文网:http://nodejs.cn/
咱们会发现这样一句话:
翻译成中文以下:
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
Node.js 的包管理器 npm,是全球最大的开源库生态系统。
1.什么是JavaScript?
javascript是一门运行在浏览器端的脚本语言,用来作客户端页面的交互。
2.JavaScript的运行环境呢?
故名思意他的运行环境就是浏览器,可是真的是这样的吗?其实否则,他的真正运行环境实际上是运行在浏览器内核中的js引擎。为何是这样的了?由于通俗来说浏览器得做用就是用来浏览网页得,咱们在浏览器除了执行js外还能执行其余得东西,好比咱们在浏览器输入一个地址敲回车就能够发送请求而且接收服务器得响应。因此说浏览器的第一功能是请求一个http地址,也就是能够封装一个请求报文出来,将一个url的地址封装成一个请求报文,这个报文到服务端,而后给咱们一个响应报文,而后在将响应解析出来,这也是浏览器的最大的做用。固然服务器响应的内容有可能不同,好比说服务器返回一个html文件,css文件,img文件,用来渲染,咱们称之为渲染引擎,除此以外,还能够执行js,由js引擎来完成,所以能够说javascript的运行环境是浏览器中的js引擎,而不是浏览器。浏览器是一个大的概念。
浏览器的javascript能够作什么?
3.浏览器中的javascript能够作什么
以前由提到过,javascrip就是用来作交互的,可是笼统的说交互有点不明确,具体一点能够分为:“
(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,那么node究竟是什么东西?
2、什么是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的环境办不到的事,如文件操做,网络操做等等)。
知道了什么是node,应该还要清楚node在web中有什么用途?
(1)node能够接受客户端用户的全部请求,而且可以快速的给出响应,所以node能够用来作网站。
(2)node能够做为一个中间层来来分发调用数据接口,好比有一个网站数据是有java提供的,咱们可让node做为一个中间曾,来接受用户的请求,而后经过node来调用java数据接口,获取到数据后直接在node层面作html的瓶装,而后将渲染好的页面直接给用户。为何要这样作,直接请求java接口不行吗,这是由于node被称之为高性能的web服务器,在并发和抗压方面都比传统的平台要好不少,所以这样一包装能够极大的减轻服务器的开发。
经过上面的两点,能够总结出,node在web中要么从前端页面到后端服务全包了,一个是只作其中的一点。
一言以蔽之,node就是一个javascript的运行环境(平台),他不是一门语言,也不是javascript的框架。能够用来开发服务端应用程序,web系统。其特色是体积小,快速,高性能。
3、npm的简单使用
2.安装后检测是否安装成功
3.因为npm更新频率比node.js高,所以npm版本可能不高,须要升级的话,用这个命令
npm install npm@latest -g
4.npm能够用来下载jquery,bootstrap等等,可是要先建立项目
1.新建文件夹项目后,npm初始化
2.npm安装的模块分为两类dependencies和devDependencies,分别对应生产环境须要的安装包和开发环境须要的安装包。
npm install jquery --save # 生产环境安装jquery
npm install bootstrap --save-dev # 开发环境安装bootstrap
npm install jquery@2.0.1 --save # 下载指定版本
npm uninstall jquery # 卸载,会自动在package.json中删除写入的模块
3.若是package.json中开发环境和生产环境中的模块本身电脑上没有,运行npm install能够自动下载
因为npm是国外的服务器,所以可能出现网络问题,可使用国内源cnpm,用法与npm同样
4、webpack介绍
中文连接地址:https://www.webpackjs.com/
1.为何要使用webpack?
现今的不少网页其实能够看作是功能丰富的应用,它们拥有着复杂的JavaScript代码和一大堆依赖包。为了简化开发的复杂度,前端社区涌现出了不少好的实践方法
* 模块化,让咱们能够把复杂的程序细化为小的文件;
* 相似于TypeScript这种在JavaScript基础上拓展的开发语言:使咱们可以实现目前版本的JavaScript不能直接使用的特性,而且以后还能转换为JavaScript文件使浏览器能够识别;
* Scss,less等CSS预处理器
* ...
这些改进确实大大的提升了咱们的开发效率,可是利用它们开发的文件每每须要进行额外的处理才能让浏览器识别,而手动处理又是很是繁琐的,这就为WebPack类的工具的出现提供了需求。
2.什么是webpack
WebPack能够看作是模块打包机:它作的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其转换和打包为合适的格式供浏览器使用。
中间那个是webpack的图标,能够看做webpack这个工具。左边是咱们项目生产环境下因此来的包,经过这个webpack工具咱们能够打包全部的图片,因此的脚本,全部的样式等等,最后打包成了右边的静态资源文件。
注意了:每一个webpack的版本都有不一样的功能,并且高版本的webpack可能会出现意想不到的bug,在这里推荐你们使用2版本的webpack。
另外webpack还支持咱们的模块化加载, 这让咱们更加快速的开发。