谈一谈最近学了一段时间的node.js

Posted MaxLucio---大张

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谈一谈最近学了一段时间的node.js相关的知识,希望对你有一定的参考价值。

官方说明

1.NodeJS宣称其目标是“旨在提供一种简单的构建可伸缩网络程序的方法”。

2.node是一个基于Chrome V8引擎进行代码解释的、轻量、可伸缩的具有事件驱动和非阻塞I/O机制的js运行环境。

3.node适合处理高并发要求的项目,适合高I/O密集型应用。

所以:不适合CPU密集型应用;

CPU密集型应用给Node带来的挑战主要是:由于javascript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起。不过,可以分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞I/O调用的发起。

4.node当下很火。

/-----------------------------------------------------------------------/

我的理解

对于node.js我的了解是从我开始使用git和webpack的时候,因为要用到node环境,而且要接触一部分的node控制台代码,不过这些都是简单的了解,让我知道了,node是可以让git和webpack运行的一种安装环境,并且是个npm包管理工具,你需要什么代码,node的包也会有一部分,比如说jquery,bootstrap等;

然后就是开始看到node官网的文档,了解到node可以作为后台的语言进行一系列的操作,能够自己搭建服务器,作为服务器的时候我们会用到http模块,这属于node自带的模块,然后就是createserver搭建服务器,后来觉得一直npm创建开启服务器比较麻烦,就在网上了解到有个supervisor这个插件吧,可以监听服务器,然后就开始考虑作为后台的功能,比后台给数据之前自己先测试一下,再比如,了解一下服务器与终端之间的交流SocketH5新增的webSocket,做点聊天室的demo,当然了有点丑陋,不过基本的对话功能也是基于sorket实现了。

有时候node也需要进行与数据库的链接,数据库的端口为27017---下面以node中的路由/liuyan---->数据库User,集合liuyan做一个简单的查找demo

mysql我就有点看不懂了,而对于SQLServer也是仅限于学校的知识,那么在网上学的时候就看到了另一种Mongodb,(稍后谈一下下);

var router = express.Router();
var mongodb = require("mongodb").MongodbClient;
var db_str = "mongodb://127.0.0.1:27017/{{你数据库的名字}}"


router.get("/liuyan", (req, res) => {
     // res.render("liuyan",{});
        var findLy = function(db, cb) {
           var conn = db.collection("liuyan");
           conn.find({}).toArray((err, result) => {
               cb(result);
           })
        }

   mongodb.connect(db_str, (err, db) => {
      if (!err) {
          findLy(db, (result) => {
              res.render("liuyan", { result: result });
              db.close();
          })
      }
   })

})

简单说一下Mongodb,我用这个数据库也是由于node.js,而且,控制台的代码我也没有记得很清楚,所以就常在小火箭V3可视化工具里操作Mongodb的数据。

Mongodb:作为数据库是一种不难的数据库,他的流行应该归于他的分布式和非关系型数据库上,以及操作简单,有大量的查询指令,但是他已经不支持32位系统了,并且占用空间比较大。

而且和一般数据库不同的是,他的三元素构成是数据库,集合,文档,当然也和关系型数据库中的数据库,表,行相对应。并且,使用前(仅限于window系统,Mac等有钱了再买吧)需要将在盘符下的mogodb/bin/mongod.exe和mongo.exe依次打开,敲黑板这是重点操作,并且,直接盘符下还要有一个空的db文件夹,用来存储数据。

 

后来,了解到node可以创建后台项目,摸索着用express框架做了个个人的系统,express -e pro创建pro文件目录结构,

 1 pro
 2 |----bin
 3 |     |----www
 4 |
 5 |----public
 6 |     |----images
 7 |     |----javascript
 8 |     |----stylesheet
 9 |
10 |----router
11 |     |----index.js
12 |     |----users.js
13 |
14 |----view
15 |     |----index.ejs
16 |     |----error.ejs
17 |
18 |----app.js

 

 

当然,express也需要进行npm install下载,页面虽说不够完美不过也在一直完善,页面的ejs文件也是从最初的index.ejs到现在的有了简单的登录注册留言等,虽然里面的数据是我写的假的数据,但是也是我用node.js链接数据库,再使用mongodb的查询或者是写入的代码进行的浏览以及写入,而数据库的控制台的代码查看着有点费劲,我就用他的可视化工具“v3小火箭”进行操作。

--------------------------------------------------------------------------------------------

在接下来的了解中发现,node.js不是很适合作为纯粹的后台,和java,php这种成熟的语言来说,他本身就有一定的缺陷,比如不能充分利用cpu,而且他是单线程的,有一部分可能性会崩溃。但他也有好处,高并发的场景下很实用,就是因为他的非阻塞I/O机制,很适合那种大量ajax请求的情况,而且他和前端js的合作很好,让我一个前端人员也有机会接触到了后台的语言。

虽然现在node.js出现没几年,东西比较新,但是,他作为和js合作的很融洽的后台,再加上非常好用的npm,可以加快我们的代码开发速度.

不过要说node火了,我觉得不然,而为隐隐觉得这是假象,虽然node用起来真的很顺心,也放宽了撸代码时间。不过,就目前来说,node还算是挺新的,还算是在开荒的状态,想让他真的火起来,可能还需要一点时间。而他火起来的原因,大概是,前端同志们被后台大哥们"打压"的太久了吧,哈哈哈,好不容易有了可能翻身的机会,抓住机会就开始学,当然,不能否认node和前端的接触真的很融洽,而且接触的Mongodb这个数据库也不是很艰难。

(ps:做项目和它火不火有什么关系啊,项目以最优的水平做出来,bug调试好,我觉得就很不错了,哈哈哈)

 

 

 

以上是关于谈一谈最近学了一段时间的node.js的主要内容,如果未能解决你的问题,请参考以下文章

谈一谈我为什么放弃学了六年的C++

从前端优化角度谈一谈 - 缓存

谈一谈重写函数

重回博客 谈一谈Node中的异步和单线程

谈一谈标准化代码在团队中的实践

谈一谈时间管理