谈一谈最近学了一段时间的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这个插件吧,可以监听服务器,然后就开始考虑作为后台的功能,比后台给数据之前自己先测试一下,再比如,了解一下服务器与终端之间的交流Socket和H5新增的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调试好,我觉得就很不错了,哈哈哈)

时间: 2024-10-06 01:18:50

谈一谈最近学了一段时间的node.js的相关文章

一段经典的node.js 数据库高并发实现

var proxy = new EventProxy(); var status = "ready"; var select = function(callback){ proxy.once("selected",callback); if(status == "ready"){ status = "pending"; db.select("SQL", function(results){ proxy.em

再谈Segmentation fault (core dumped)问题 -查找段错误原因

再谈Segmentation fault (core dumped)问题 -查找段错误原因    在前一篇文章"Segmentation fault (core dumped) "有说了具体core dumped产生的原因. 下面主要来介绍下问题的解决与查找,在linux下一般都使用gdb进行调试,那今天我就以Ubuntu 14.04环境作为介绍 来查找正在的core dumped的原因.需要说明的是,你在编译程序的时候要加调试选项 -g. $ gcc -o app reverse.c

已经工作了一段时间,谈下自己编程的能力,谈下自己的项目

编程的人,就是要扎实的基础哦,我现在已经工作了一段时间,感觉自己还很差的样子哦,但是,我会继续努力的哦.下面是我自己感觉的能力: 1.具备扎实的PHP开发基础,深入理解OOP编程思想,具有良好的编码习惯,: 2.熟悉HTML.CSS,熟练使用DIV+CSS进行页面布局: 3.熟练掌握Javascript,jQuery,AJAX技术: 4.熟悉MVC设计模式,Smarty模板技术: 5.熟练掌握Thinkphp开源框架的使用 6.熟练使用Mysql数据库,熟悉索引.视图.事务.了解Mysql数据库

谈一谈我在阿里的成长

前几天受阿里通信的同事邀请,分享了一个关于成长的话题.其实我不太热衷于分享此类话题,作为一个技术人,分享那些没有技术干货的内容总感觉有些怪怪的.但最后还是拟下了这个话题 ——<谈一谈我在阿里的成长>,所以本文主要是对分享的 PPT 做简述. 可以回首一下,毕业工作后的这段时间里,你做过哪些事情让自己感觉有了很大的成长? 我简单枚举了一下,主要是这几个方面: 涉足一个未知的领域,走进去,那就是成长:能够坚持不懈的完成一件事情,优化一个项目,那也是成长:能够沉淀方案,推广自己的想法,让更多的人收益

阿里面试回来,想和Java程序员谈一谈(转载)

引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的. 但是,最近问LZ的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回复了. 其实之前LZ写过一篇文章,但是那篇文章更多的是在讨论“面试前该不该刷题”这个话题,而这篇文章将会更加聚焦在面试前如何准备,以及工作当中如何学习这个话题上

阿里面试回来,想和Java程序员谈一谈

引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的. 但是,最近问LZ的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回复了. 其实之前LZ写过一篇文章,但是那篇文章更多的是在讨论“面试前该不该刷题”这个话题,而这篇文章将会更加聚焦在面试前如何准备,以及工作当中如何学习这个话题上

谈一谈今年的移动互联网寒冬

转载请注明出处:http://blog.csdn.net/sinyu890807/article/details/51933728 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新. 大家好,好像有段时间没写技术文章了.主要是最近<第二行代码>刚刚出版,一直都要忙碌于新书的各种事情,访谈.答疑.勘误处理等等,每天公众号的消息就有一大堆,也是让我目不暇接. 首先我要感谢一下大家对我的支持,目前<第二行代码>销售非常火爆,同时也是收到了

谈一谈Http Request 与 Http Response

谈一谈Http Request 与 Http Response 写在前面的话:最近帮朋友弄弄微信商城,对于微信的基础开发,基本上就是各种post.get,有时是微信服务器向我们的服务器post.get数据,有时需要我们自己的服务器向微信服务器各种post.get,之间通过json或者xml传送数据.今天就来总结一下http相关的request和response,就从以下几个问题入手吧. ======正文开始======== 1.什么是HTTP Request 与HTTP Response? 我们

谈一谈用户的默认收货地址

如题,今天要谈一谈用户的默认收货地址 为什么要谈这个问题,感觉这是一个非常成熟的设计和解决方案了,为什么还要谈.谈这个的导火索是产品妹妹过来跟我说咱们的用户地址是不是用问题,为什么我的地址不是上一次的收货地址了.然后我balabalabala说了一堆,我想我们是想要做一好的产品,还是要做一个产品,是为了解决问题,还是为了更好的解决问题,现成的京东淘宝当当可以参考的模式,我们为什么不学习一下.然后我balabalabal说了一堆之后,让产品妹妹看了设计,看了数据库,让她再次看了自己的收货地址,然后