欢迎使用CSDN-markdown编辑器
来源:互联网 发布:mac暴风影音传片 编辑:程序博客网 时间:2024/04/29 13:44
node.js 入门
最早听说node.js是在2010年,当时我在公司的前端开发组,比较热爱技术的同事就有人开始钻研起这门技术,说起来惭愧,当时也开始有些厌倦在框架下码砖的活,加上一段时间的频繁加班,后来一度告别前端开发这个行列,时至今日,项目关系又拉回前端这个位置,但是这次我想在用js日常开发客户端程序的时候也来试试后端开发。node.js的教程目前网上也有很多了,我写相关文章的目的只是出于自己学习,记录,虽然随时有可能坑掉,还是希望自己能坚持。
为什么是node.js?,简单来说就是性能出众,javascript受众广门槛低。
先来说性能,服务端开发人员无不追求的就是能开发出一款高性能的服务器程序,所谓性能的优劣,区别在于对服务器资源调度的合理程度。高并发其实是合理调度系统资源的一个难点,传统的服务器架构,io连接通过线程池管理,一旦碰到高并发,线程池阻塞的连接一多,就极其容易宕机。node的出现,就是利用了自身的特点解决高并发的问题,简单来概括其特点就是 单线程 异步无阻塞io。
有用过javascript ajax调用对异步编程一定有所了解。有人会说异步编程是反人类的。来看下面一段代码。
$.ajax({ url: "...", success: function(){ console.log("step A");}});console.log("step B");
按照一般线性的编程思维,直觉上会认为先执行step A 再 step B 但实际的执行结果是:
step B
step A
这就是异步编程被认为反人类的地方,ajax调用会在浏览器中另起线程,而程序则继续往下执行,直到ajax收到请求信息才执行stepA,应该有不少初学者踩过这个坑,我也在初学时很多次忽略了异步问题而出bug。
对于异步编程是不是反人类,这个我的理解是,异步可能才是最接近正常人类处理事务的思维,比如你在烧开水的时候不会一直傻等在炉子前面,而是会去洗洗碗或者干点别的吧。
node.js正是利用了异步和事件相应的特性,很好的解决了传统服务器阻塞线程占着茅坑不拉屎的问题。
网上也有关于node.js不适用于业务逻辑复杂,运算较多的后端逻辑,因为如果运算占用cpu较多的资源,也会让node.js的相应变得迟钝。不过这一问题可以通过多进程分布式架构解决,所以我个人不是特别担心。
通过目前的了解,node.js最大的问题还是在于js语言本身的特性,不善于处理异步问题会让回调变得很深,如:
function(function(){ function( function( ..... ); );}});
这样的代码看起来也是很恶心的…
加上js本身松散的语言特性,代码维护也是比较麻烦,目前我还没有找到node.js debug的方法,据说是可以的,加上异步调用的问题,即便是try catch 也会让异常抛出变得支离破碎。
综上问题,node.js可谓是后端编程的九阴真经,威力强大,但是不好掌控,没有点代码洁癖和强迫症还是较难驾驭的。
下一章,node.js安装及小例子,待续…
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 去哪网实习总结:easyui在JavaWeb中的使用,以datagrid为例(JavaWeb)
- C++ Primer 第(4-5)章一句话知识点总结
- java继承知识总结
- xcode快速生成文档
- MyBatis基础
- 欢迎使用CSDN-markdown编辑器
- 10.1 Qemu的网络管理
- 从上往下打印二叉树(算法)
- Unity Action Game Demo(1)
- What is the modified poplar formwork plywood
- cocos2d-js中chipmunk简单碰撞检测
- 正方形
- 背景滚动视差的一个页面[仿雅虎邮箱主页]
- 10.2KVM嵌套虚拟化原理