NodeJs ·

NodeJS记 – 开启nodejs之旅

之前一直从事Android方面的工作,负责公司产品的应用层app和修改framwork的工作。从一个月前开始从事后端开发,本来可以选择java做为后端开发的,对java比较熟悉,得心应手些。但我想尝试下其他的语言,然后就选择近些年比较火的javascript来开发。那这样只有NodeJs当仁不让的成为了我得选择。其实也是一种尝试,一个学习的过程,在这个过程中可以学到很多没有接触过得东西。

一:何为NodeJS。

官方解释:它是一个基于Chrome V8引擎的JavaScript的运行环境,事件驱动,非堵塞I/O模型,轻量高效,npm是其包管理器,好处全球最大的开源库生态系统。

V8:一个类似java虚拟机的东西,和JVM原理差不多,只是它运行的是javascript,比jvm要轻量,内置google的chrome浏览器中,得益于V8的实现,提升了javascript的运行效率,使其在服务端也有不弱的表现。

事件驱动:NodeJS是单线程,基于事件驱动的。这点其实很Android的UI处理方式有相似之处。Android是通过异步线程之间的消息通信来通知主线程处理。而nodeJS通过在主线程注册一个event callback,当对应的event发生后,主线程就会调用响应的callback函数处理。

非堵塞I/O模型:NodeJS操作I/O的时候不会堵塞程序的执行。因为读写I/O是耗时任务,并且NodeJS是单线程模型,不能长时间处于堵塞状态。这个点其实也是有点像Android的UI处理方式(UI线程不能执行耗时任务,会引发ANR)。下面比较堵塞I/O和非堵塞I/O的区别,以读一个文件案例:

java读文件

public  static  void main(String[] args) throws Exception {
    File file = new File("text");
    FileInputStream fs = new FileInputStream(file);
    int length;
    byte[] data = new byte[1024];
    while((length = fs.read(data)) != -1){
        //处理data
    }
    //打印
    System.out.println("test");
}

最后的打印一定是在读取完成处理数据后才能打印执行。 NodeJS读文件

var fs = require('fs');
fs.read('text','utf-8',function(err,data){
    //出错会返回error
    if(error){
        //to do
    }
    //处理data
});
console.log('test')

最后的打印不用等待fs.read处理完毕就会执行。换个角度就是Nodejs在主线程开启了一个读取I/O的子线程。

NodeJS就是因为上面三个原因才得到众多程序员青睐。但是任何东西和事情都有双面性,没有满足所有的需求的编程语言。NodeJS也不例外。暂且不去讨论NodeJS缺点。

二:创建NodeJS服务。

本次旅程我们用NodeJS创建微服务,满足一些简单的功能。

  • 后端包括用户,用户的血压记录,医生的备注。
  • NodeJS后端编程,使用Mysql数据库,
  • 前端使用ajax,html,css,jquery,bootstrap的一个登陆,查询记录的web端。
  • 给Android APP提供数据接口。

创建简单的HttpServer

var httpServer = require('http');
httpServer.createServer((req,res) =>{
	res.end('hello world!!welcome to NodeJs');
}).listen(3000);

创建server,监听3000端口。这样就简单的创建了一个HttpServer,然后在浏览器中输入:https://localhost:3000,就可以看到hello world!!welcome to NodeJs。

如果没有出结果,请注意端口是否被占用

NodeJS官方链接:http://nodejs.cn/

NodeJS API文档:NodeJS官方文档

仅仅是一个小小小的测试程序,但是可以看到NodeJS简简单单的几句就创建了一个httpServer,这也是它的优势之一。

后面将会记录如何一步步创建个微服务的过程,在这个过程中我们将用的以下技术:NodeJs,Express, JWT,Mysql,ORM,Redis,Bootstrap,Bootstrap-table,X-editable,Ajax,Jquery等等,会一步一步渐进的方式让我们一起去了解后端开发的技术。

NodeJS 版本:V6.11.1, Mysql版本是5.6。

参与评论