欢迎使用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安装及小例子,待续…

0 0
原创粉丝点击