谈一谈最近学了一段时间的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路上的成长记录,当中 ...
随机推荐
- EclipseIDE--使用整理
EclipseIDE--使用整理.. ---------------- /--------------------习惯上的字体使用,华文中宋GeorgiaCambria华文中宋/----------- ...
- Win10家庭版设置桌面右键更换桌面壁纸
Win10家庭版设置桌面右键更换桌面壁纸.. ------------------------- 这是设置之前的右键快捷菜单.. ------------------------- 开始设置:右键桌面 ...
- 从零构建一个react+webpack+typescript的应用
今天要完成在windows下从零开始构建一个react应用的任务 首先,新建一个文件夹,然后在该文件夹下使用命令npm init 初始化一个node项目. 然后安装所需依赖, npm i react ...
- 微信小程序结合后台数据管理实现商品数据的动态展示、维护
微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,本篇随笔介绍微信小程序结合后台数据管理实现商品数据的动态展示.维护,介绍如何实现商品数据在后台管理系统中的维护管理,并通 ...
- hdu3416 Marriage Match IV(最短路+网络流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3416 题意: 给出含n个点.m条有向边的图,每条边只能走一次,给出起点和终点,求起点到终点的最短路径有 ...
- 部分iphone手机上的div的点击事件无效
最近在做一个手机移动端的项目,Andrio手机和部分iphone手机上点击事件都是好的,只有在老的型号上的iphone手机上点击事件无效果. 后来在网上查了很多资料,发现有加样式cursor:poin ...
- 求最长公共前缀和后缀—基于KMP的next数组
KMP算法最主要的就是计算next[]算法,但是我们知道next[]求的是当前字符串之前的子字符串的最大前后缀数,但是有的时候我们需要比较字符串中前后缀最大数,比如 LeetCode的shortest ...
- 配置文件http://www.cnblogs.com/Jevon-ran/p/7112007.html
author:JevonWei 版权声明:原创作品 /etc/centos-release 记录系统版本信息 /etc/issue 系统登录前提示信息 /etc/motd 系统登陆后提示信息 /etc ...
- .net基础第一天
.net基础 <head>+控制类标签 +<head> 1 <body>+网页要显示的内容+</body> <body +空格+bgcolor= ...
- js文件引用方式及其同步执行与异步执行
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp74 任何以appendChild(scriptNode) 的方式引入 ...