关于大名鼎鼎的Nodejs是什么就不用再介绍了,他的牛逼之处数都数不完——让javascript称霸全宇宙、将一个只用于前端的编程语言同时可以制霸前后端、让致力于前端开发的小哥又多了一项事业新增了一门手艺、亮瞎人的全异步事件驱动型架构(event-driven、non-blocking、scalability)。总的来说就是,学好Nodejs必须能够赚大钱迎娶白富美。
本人一直垂涎与Nodejs的鼎鼎大名,但是由于工作繁忙,一直没时间深入亵玩。最近因为一些机缘,又要着手一些前端开发的工作才觅得一次全面接触的良机。
看到这里你肯定要说,又是一个要把Nodejs吹上天的文章!NoNo,本文会一步一步的说明我是怎么学会和用上nodejs的,然后结合其我所了解的语言告诉各位我所了解的Nodejs坑和优势。
学习基础
先说说本人开始学习使用的基础。早期在某外企开发室内3D设计软件,那段时间用已经成为古董的MFC做各种windows事件驱动开发。
之后就一直在做Java生态的东西、反正就是SSH啦、MVC啦、Dao啦、Entity啦、JNDI啦、JDBC啦等等,相信每个Javaer都懂的。早些年做Java时,前端部分基本就是玩转Jsp,页面清一色的用Jsp动态生成,然后丢给浏览器。现在所属团队几乎已经放弃这种方式,都是用spring-boot等弄前后端分离了。
随后有幸接到一个自己可以全权负责的全新的项目,于是带着2个人开始尝试抛弃JSP,引入了大量的ajax异步请求的客户端组装数据。那时候这样做其实蛮痛苦的,新项目根本没有真正意义的前端开发人员(都玩JSP呢),所以自己不得不去研究前端的各种前端技术。在随后的许多时光中,深入且大量的学习了前端开发的所有东西,从一穷二白只会用div画画静态页面,到后面自己封装列表、消息通知等组件,通杀jquery、angularjs,了解各种脚手架。所以学习Nodejs开发,我基本上是没有语言障碍的,只是需要跟上它的思路。
安装Nodejs
要用一样东西之前,当然是要先安装环境。Nodejs的安装网上一搜一大把,这里就简单记录一下流程,方面以后查阅。因为本人用一台windows(windows10)办公、用一台linux(ubuntu16.04)开发,所以2个操作系统都安装了Nodejs,像OSX这样高大上的玩意,暂时没机器去弄(穷)。
windows
- 先去官网(https://nodejs.org或https://nodejs.org/en/download/)下载一个安装包,我下的是长期稳定版。建议下载.msi。
- 然后就是安装了,这没什么好说的。无非就是设定一下安装目录,然后一通Next。
- 安装好之后检查下环境变量,看看path下添加入了Nodejs的运行路径。cmd中输入path可以看到添加了nodejs的安装目录。然后输入node --version可以看到当前的Nodejs版本号。如下图:
- Nodejs自带npm,npm和其他未来要使用的组件都存放在“X:\yourpath\nodejs\node_modules”里。所以需要在windows环境变量重增加一个NODE_PATH=X:\yourpath\nodejs\node_modules的参数,保证未来新增的一些模块工具可以正常使用。右键“我的电脑”->高级系统设置->环境变量->然后新建以上参数。
- 再然后就是最后一步了,设置node_cache(用于npm存放一些临时文件)和node_global(全局工具文件夹),当然这里也可以不设置,他会自动放在当前用户的文件夹下,但是有强迫症的我必须要设置。在cmd中输入一下命令:
npm config set prefix 'X:\yourpath\nodejs\node-global'
npm config set cache 'X:\yourpath\nodejs\node_cache'
linux
linux安装和windows安装Nodejs差不多,都是下载包、解压、开用。
- 先去官网下载一个linux版本的安装包(下首页的那个就行)。下载以后发现是 xz后缀,先得用xz命令解压成tar,再用tar完成解压。
- 添加Nodejs运行环境:直接把node的运行目录添加到&PATH里。在profile中添加Node的运行环境:
#node export NODE_HOME=/yourpath/node-v4.5.0-linux-x64 export PATH=$NODE_HOME/bin:$PATH
然后再任意位置测试了一下运行node命令都可以正常使用。
-
然后我们需要添加node_modules到PATH中,保证npm可以使用:
#npm export NODE_PATH=$NODE_HOME/node_modules
配置完之后,就可以使用npm命令了。(修改之后切记注销用户)
完成以上步奏之后,就可以用node和npm命令干你相干的事了。安装之前按看到很多教程说是要安装python2.2到2.7的版本。但是我解压完nodejs包后在bin下运行了node -v命令居然可以跑,我就没去管python的事,应该是我用的是打包版的原因。
Apt安装Nodejs
1.设定Nodejs安装源:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
2.安装Nodejs
sudo apt-get install -y nodejs
验证安装结果
安装完成之后,我在windows和linux都测试了一下。
测试nodejs:输入node打开REPL,然后使用log打印数据:
$ node
> console.log("hello nodejs!");
hello nodejs!
undefined
然后用npm测试安装grunt-cli:
$ npm install -g grunt-cli
/yourpath/node-v4.5.0-linux-x64/node_global/bin/grunt -> /yourpath/node-v4.5.0-linux-x64/node_global/lib/node_modules/grunt-cli/bin/grunt
grunt-cli@1.2.0 /me/soft/node/node-v4.5.0-linux-x64/node_global/lib/node_modules/grunt-cli
├── grunt-known-options@1.1.0
├── resolve@1.1.7
├── nopt@3.0.6 (abbrev@1.0.9)
└── findup-sync@0.3.0 (glob@5.0.15)
运行一个Nodejs程序
安装好之后,node的命令行和npm的命令行就都可以使用了,随后当然就是要跑跑Nodejs了。像下面这样创建一个创建一个example.js文件,随便放在某个文件:
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) -> {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World Nodejs\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
然后在当前文件下打开一个cmd运行以下命令:
node example.js
可以看到输出:
$node example.js
Server running at http://127.0.0.1:3000