当年有个叫Ryan Dahl的哥们,他用C++写高性能的web服务,对于高性能,异步IO事件驱动是基本原则,但是用C/C++来写太痛苦了,它对比了各种高级语言,发现很多语言都支持异步IO,但是一旦写同步IO,他们就懒得写异步IO了。所以Ryan Dahl就将目光放到javascript上了,因为js是单线程、单进程地去执行,根本不能同步地进行IO操作,所以javascript的这一缺陷导致了它只能使用异步IO,正好也符合了Ryan Dahl的需求,由此,node.js就诞生了。
那么node.js到底是什么,为什么它能够让javascript运行在服务器端呢?
先看一下Node.js的官网https://nodejs.org/en/
Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine.
它这里说,ndoe.js是基于ChromeV8引擎的javascript运行时环境。V8引擎是chrome中专门用于解析js的引擎,Node.js相当于把这个V8引擎放到了服务器端,从而让js跳出了浏览器环境,也能够运行在服务器端,因为有了js引擎,就相当于有了js运行环境,只要有了运行环境,那么js代码就能快乐得跑起来了。
Node.js的下载安装
官网主页就有下载,左边那个是稳定版本,右边的是最新版本,建议下载左边的。
下载好后,直接安装,一直点next,直到finished,就是这么简单!
安装好后,可以在命令行输入node -v
来检查是否安装成功,若出现node.js的版本号,说明安装成功!
还可以查看npm版本npm -v
npm(node package management)是node.js的包管理工具,我们在安装node.js时会自动安装npm,我们可以用npm来安装node.js的各种扩展包。
设置nodejs prefix(全局)和cache(缓存)路径
在nodejs安装路径下,新建node_global和node_cache两个文件夹,如下图:
win+R,输入cmd
设置缓存文件夹
npm config set cache "D:\Program Files\nodejs\node_cache"
设置全局模块存放路径
npm config set prefix "D:\Program Files\nodejs\node_global"
设置环境变量
在“高级系统设置”–>“环境变量”
系统变量中新建NODE_PATH:
Path中添加
用户变量的Path中添加:
npm报错npm ERR! code EPERM,以管理员身份运行解决
安装淘宝镜像(类似于阿里云的maven中央仓库镜像)
npm install -g cnpm --registry=https://registry.npm.taobao.org
安装webpack
cnpm install webpack -g
查看是否安装成功
webpack -v
然后会提示你是否安装,它提示的命令不好用,你直接回车即可,或者使用这个命令
npm install webpack-cli -g
官网:https://koajs.com/
koa是Node.js的下一代web框架
koa作为一个Node.js的框架,代码量非常少。
koa v1和koa v2(2017推出koa v2)
既然谈到koa代码量非常少,是不是它的功能就不是很强大呢?其实这样引入中间件这个概念,很多框架的扩展功能都是基于中间件来实现的,中间件本质上是框架的一种扩展机制。
koa脚手架
koa脚手架是用于生成koa项目的生成器,它可以让我们更方便快捷得创建koa项目。
在命令行中进行:
全局安装koa脚手架:
npm install koa-generator -g
上面这个命名你可能会安装不成功,因为它的包是在国外的服务器。
我们可以使用淘宝架设在国内的node.js包的镜像服务器去下载这些包
cnpm install koa-generator -g
关于npm install -g koa-generator出错,安装不上的问题
安装成功!
我们可以查看koa2可以使用的命令
koa -h
使用koa2命令创建web项目
首先我们转到创建项目的目录,比如我这里演示D:\Documents\Documents\webProjects\nodejs
,如果你和我一样用的是windows可以在地址栏输入cmd,打开命令行,使用该命令创建web项目
koa2 项目名
这样脚手架就给我们的项目就创建好了
项目组成如下:
并且它已经提示接下来要做的了:
使用npm install安装依赖包
进入项目目录
cd my-koa-project
安装
npm install
由于是包都放在国外服务器上了,你可能下载不了,这样你可以使用淘宝提供的cnpm,安装很简单,有教程https://npmmirror.com/
使用npm start 运行项目
npm start my-koa-project
如果当前就在项目目录中,直接
npm start
这样项目就启动了
现在成功启动了,那么如何访问呢?
我们在浏览器地址栏输入localhost:3000
访问
这也意味着koa2默认提供服务的端口号是3000!
回头再观察命令行,发现有访问的日志:
下面介绍一下项目目录的作用:
bin
下放的是命令;有个www代表web
node_modules中存放的是刚才npm install命令安装依赖的node.js包;
public下主要是放一些静态的资源,比如图片,js脚本,css脚本等;
routes,路由目录,放的是路由文件;
views中放的是视图文件,也就是页面,这里默认有pug格式的文件,它是页面的一种模板引擎;
app.js是整个项目的入口文件,项目运行的时候是从这个文件开始运行的
package.json这个文件特别重要,我们去查看一个node.js项目,首先应该从package.json这个文件开始分析,比如项目的一些信息,运行的命令,依赖包都可以在这里查看。