zoukankan      html  css  js  c++  java
  • 谈一谈最近学了一段时间的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调试好,我觉得就很不错了,哈哈哈)

     

     

     

  • 相关阅读:
    电商系统服务拆分实战
    打通电商多模式支持的“任督二脉”
    win10 home安装docker快速攻略
    如何深入理解一套MQ消息中间件
    自带win10的笔记本电脑如何装win7
    《大数据日知录:架构与算法》读书笔记(多图)
    一个典型的后台软件系统的设计复盘——(三)打通任督二脉-context
    一个典型的后台软件系统的设计复盘——(二)如何id一个事物
    dubbox源码分析(一)-服务的启动与初始化
    svn老鸟转用git必须理解的概念
  • 原文地址:https://www.cnblogs.com/lucio110/p/7569790.html
Copyright © 2011-2022 走看看