nodejs learn

nodejs 是什么,
是一个简单易学的网络编程语言。
1. 它有一个好用的控制台计算器, 专业名词叫repl (request-eval-print-loop)
它不仅仅是一个计算器,它还可以使用变量,进行交互式编程。
给变量赋值,变量计算。

这都是小儿科,显然node 还有更强的功能。

2. 它是javascript 语言,运行在服务器端。
   网上说它运行速度快,单线程,事件循环,异步等优点,chrome血统,咱不用关心,
   那关心什么呢? 关心它的应用, 它能够构造网络服务器。
   编写网络服务器代码,需要处理不少事情,而作为一门语言,也有许多特性,一边编写
   着服务器的代码,一边学习着语言,这可能是一个捷径,有人这么做了,写了一个

   <<nodejs 入门>>的书,我迫不及待的看了。

   为什么用node 编写服务器代码特别少,因为它包含了(require) http 模块,站的位置高,那些创建socket,

    send, recv等操作都给封装起来了,看不见了,你只需要关心,request, response 就行了。


3. 一门语言,有它自己的语法,自己的对象,自己的api, 还要有扩展能力,等等要素
   才能构成一门语言,就是人跟计算机打交道的一种方式。一种对话规则。

    此外,编完的程序,还要调试,保证功能的正常运行。当然nodejs 都做到了。先用
   node-inspector 调试了。 控制台内嵌debuger, 这个也能调,但是太土了。为什么?
   看不见代码,看不调用栈。 是的是的,控制台也能敲出来,或着你令切换到代码页面。
   但它毕竟不方便啊, 有inspector 图形调试,鸟枪换炮了,谁肯不换。

4. ubuntu 默认安装的node 版本太低v0.10,纵使添加ppa 源,版本还是低,低了有什么不好呢?
    chrome 浏览器说版本低显示信息会不完整,必需升到0.11 我必需要升到高版本了。
    从网上下载了一个0.12 的二进制包, 删除apt 安装的包, 把二进制包解压并直接copy 到/usr/local/bin 下,就可以使用了。
    回头到官网上看了一样,node 版本已经窜到v5.x了,发展也太快了,不过0.12能用,就先不折腾了。先用着。

5. node-inspect 调试方法:
举例:
    1. node --debug demo.js
    2. node-inspector &
    3. chrome 浏览器中打开 http://127.0.0.1:8080/?port=5858
    就可以在图形界面调试了


从node-inspector 中看见了_http_server.js 的代码, 可是到处找不到这个文件在哪, 也不知道require("http") 到底require 什么,
一查, 原来http 模块叫核心模块或内置模块,是编译在node二进制中的,加载到内存后有缓冲机制,二次加载没有开销,哦,原来是这样。

我们自己编写的模块为文件模块或第三方模块,是以文件形式存在的。你可以指定路径加载(相对或绝对路径),
不指定路径,从 本地node_modules中加载,直至搜索到/下的node_modules.

欲知内置模块有哪些,http, https, global, fs, util events,erros, console,process.... 还是查看官方文档吧。

https://nodejs.org/api/index.html

inspector 能够显示对象的属性和方法,好的模块直接封装成对象, require 返回一个对象,是个书写代码的好习惯。面向对象。


nodejs, 擅长控制台计算器, web服务器编程,还擅长什么呢? 这要看它的module了,那么多优秀的人才在为它贡献。


----------------------------------------
nodejs 的语言特征:
----------------------------------------
1. nodejs 是javascript 语言, javascript 与c 语言表达格式近似。
       流程控制语句:if,else,while,switch,break,continue.
    块语句{}
    注释语句//, /**/
    看起来有亲切之感,降低了学习的门槛。
2. 作为语言,必需要解决数据输入,数据输出,数据处理的功能。
    console.log("hello,world"). 表达了它与用户交互,向控制台输出的方式。
    如何从控制台输入,如何从空间输入,如何从文件输入是语言要解决的问题。
    作为网络语言,除了与控制台交互,与磁盘交互,还有如何有效的与网络交互。
    这都是我们要关心的问题。
    是的,nodejs 有它自己的核心类,例如:console, fs, http, https,buffer,stream类等。
    它能够比其它语言做的更好吗?

3. 关于nodejs的异步编程特性。
 异步编程我使用过libevent, 一查,nodejs竟然是建立在libev基础上的,这就比较清楚了。
异步编程要求你的书写代码不能有阻塞操作, 你想啊,它是一个单线程的程序,干你这件事耽误了很久,那别的事就干不成了,全耽误了。
所有,对于耗时的操作,例如IO操作,会引起阻塞,由于资源未准备好而主动放弃运行权的操作是不能使用的。资源未准备好我可以注册一个回调函数,继续执行我后续的事情,这叫异步操作,非阻塞操作。nodejs 就是这样的。
异步操作的编程特点是把会引起阻塞的操作分两步来完成。
第一步,注册一个事件回调函数。
第二步。处理一个事件回调函数。
这两个函数中都不包含阻塞操作。

----------------------------------------
nodejs 的代码书写。
----------------------------------------
好的代码书写工具,应该辅助我们提供查阅,选择api的功能。
学习的路径不外乎以下三种:
1. 参考文档。
2. 参考内置的代码或api文件,头文件等。
3. 参考第三方的代码
2,3项我更看中一些,侧重实战。
notepad 虽然可用,但它提供不了上述三种辅助功能,不是一个好选择。
有nodejs代码提醒和帮助文档的编译器是什么呢?
根据网上说法,我下载了破解版webstorm.

----------------------------------------
调试:用node-inspector
----------------------------------------



                                                      1,1           Top
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值