谈一谈最近学了一段时间的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文件目录结构,
pro
|----bin
| |----www
|
|----public
| |----images
| |----javascript
| |----stylesheet
|
|----router
| |----index.js
| |----users.js
|
|----view
| |----index.ejs
| |----error.ejs
|
|----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的更多相关文章
- 一段经典的node.js 数据库高并发实现
var proxy = new EventProxy();var status = "ready";var select = function(callback){ proxy.o ...
- 学废了系列 - WebGL与Node.js中的Buffer
WebGL 和 Node.js 中都有 Buffer 的使用,简单对比记录一下两个完全不相干的领域中 Buffer 异同,加强记忆. Buffer 是用来存储二进制数据的「缓冲区」,其本身的定义和用途 ...
- 阿里面试回来,想和Java程序员谈一谈(转载)
引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...
- 谈一谈JDK8的函数式编程 (一)
系列之前我想说的 最近有一段时间没写博客了,这几天回到学校,才闲下来,决定写一写最近学习到的只是,既是为了分享,也是为了巩固.之前看到过一篇调查,文章的数据是学习新知识,光是看只能获得大约5%,然 ...
- 阿里面试回来,想和Java程序员谈一谈
引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...
- 谈一谈前端多容器(多webview平台)处理方案
文中是我个人的一些开发经验,希望对各位有用,也希望各位多多支持讨论,指出文中不足以及提出您的一些建议. 双容器 得益于近几年移动端的发展,前端早已今非昔比,从大型框架来说angularJS.react ...
- 谈一谈Java8的函数式编程(二) --Java8中的流
流与集合 众所周知,日常开发与操作中涉及到集合的操作相当频繁,而java中对于集合的操作又是相当麻烦.这里你可能就有疑问了,我感觉平常开发的时候操作集合时不麻烦呀?那下面我们从一个例子说起. 计 ...
- 谈一谈深度学习之semantic Segmentation
上一次发博客已经是9月份的事了....这段时间公司的事实在是多,有写博客的时间都拿去看paper了..正好春节回来写点东西,也正好对这段时间做一个总结. 首先当然还是好好说点这段时间的主要工作:语义分 ...
- 蓝的成长记——追逐DBA(5):不谈技术谈业务,恼人的应用系统
***************************************声明*************************************** 个人在oracle路上的成长记录,当中 ...
随机推荐
- install redis
1.Office Download redis.tar.gz from website --- redis.io 2.uncompact file $ tar zxvf redis-3.2.9.ta ...
- Redis入门 (CentOS7 + Redis-3.2.1)
1. 编译安装1.1 下载redis # cd /tmp/# wget http://download.redis.io/releases/redis-3.2.1.tar.gz# tar zxvf r ...
- 【2016北京集训测试赛(八)】 crash的数列 (思考题)
Description 题解 题目说这是一个具有神奇特性的数列!这句话是非常有用的因为我们发现,如果套着这个数列的定义再从原数列引出一个新数列,它居然还是一样的...... 于是我们就想到了能不能用多 ...
- Python数据类型-布尔/数字/字符串/列表/元组/字典/集合
代码 bol = True # 布尔 num = 100000000; # 数字 str = "fangbei"; # 字符串 str_cn = u"你好,方倍" ...
- 各种选择框jQuery的选中方法
select下拉列表的选中方法是:$("slect option:eq(1)").attr("selected",true);//选中第二个option che ...
- Json作为配置文件注意事项
错误描述 在一次开发中,使用了JSON数据作为配置文件,但反序列化时总是出错,开始还以为是转义字符的问题,因为存了一个绝对路径(D:\xx\xx.json),后来测试发现竟然发现是类嵌套的问题. 解决 ...
- 正则表达式过滤HTML、JS、CSS
功能用途 主要是用来提取html页面内容时使用. 示例代码 using System; using System.Collections.Generic; using System.Linq; usi ...
- 走近RDD
RDD(Resilient Distributed Datasets)弹性分布式数据集.RDD可以看成是一个简单的"数组",对其进行操作也只需要调用有限的"数组" ...
- Oracle之range,hash,list分区现实应用及优缺点汇总
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp51 [align=center;] Oracle之range,hash,l ...
- 图像处理:卷积模块FPGA 硬件加速
本文记录了利用FPGA加速图像处理中的卷积计算的设计与实现.实现环境为Altera公司的Cyclone IV型芯片,NIOS II软核+FPGA架构. 由于这是第一次设计硬件加速模块,设计中的瑕疵以及 ...