[Node JS] Node JS 要点

1. no http server.

PHP->User  :   PHP interpretor - > HTTP interpretor(Apache, IIS, Nginx) -> browser - > user

Node JS -> User :  Node JS -> browser - > user


2. Asynchronous I/O

Synchronous I/O  - multithread to improve performance

Aynchronous I/O  - no need to concern about it, because node just forward I/O request to system, and continue to process.

 

3. exports.SomeFunction = SomeFunction  vs    module.exports = SomeFunction

    require('someFilePath')    vs    require ('someFunction')


4. npm -> node; pip -> python; gem -> ruby; pear -> PHP; CPAN -> perl; apt-get -> debian/ubuntu; yum -> fedora/rhel/cent os; homebrew -> mac os x


5. npm install someModule -> local install module to subdir(node_modules)  of current dir. we can require the module directly. but it is not set for global use, and bin is not in PATH.


   npm install -g someModule -> global install mobule to /usr/local/lib/node_modules, and bin is linked to /usr/local/bin, here, /usr/local/bin exist in PATH by default. but we can`t require this modules directly. we need npm link


6. npm link someModule in project folder(not support by windows)

    ./node_modules/someModules - > /usr/local/lib/node_modules/someModule, link the global modules as local use.

    npm link can also link local module as global use, we should run npm link in package folder(which include package.json)


7. server side, node --debug-brk debug.js (default port is 5858, we can change this by --debug=xxxx)

 client side,  node debug 192.168.59.32:5858

n,c,s,o,sb(),list(5), bt, watch(expr)


8. global variable and global object.

   in JS, 'window' is the global object.

   in Node JS, 'global' is the global object.

   global object is the holder of global variables.

   Global Variables:

   a. the most outside variables

   b. variable in 'global' (for example 'process')

   c. implicit defined variables(assign value without define)(we can use 'var' to avoid global)

9. process

    process.argv

    process.stdin.resume(), and set a callback to get user input.

    process.stdin.on('data', function(data){...})

    process.netxTick(cb)

    process.platform

    process.pid

    process.execPath

    process.memoryUsage


10. util.inherits(sub, base)

     ctor override?

     Base.prototype.somefunction = function will be inherited. other in the body won`t. and even the prototype can`t be displayed as console.log(subobj), but we can invoke it.


11. util.inspect(obj), util.inspect(obj, true), util.isArray(), util.isDate(), util.isError(), util.format(), util.debug().


********************************************************

12. event drive. events.


      events.EventEmitter

      emitter.on('eventStringAsType', function(arg1, arg2){...})

      emitter.emit(''eventStringAsType', arg1, arg2')

      emitter.once(event, listener), register 1 time cb

      emitter.remove(event, listener)

      emitter.removeAllListeners([event])

      emitter.emit('error'), trigger bt


13. for vs forEach, (function(i){xxx(i)...};)(i)


14. scope

brace (for, if , etc...) is not a scope identifier.

       variables  are searched from inside to outside of a function. And it is a 'static scope', not a 'runtime scope'


15. closure, return a embedded function and its env(variables), used in embedded cb, or private variable


16. prototype

      declare class belongings(like static in c++) as a prototype, or all the variables and functions in ctor will be copied when create a new instance.

 

17. call (pass variable separately), apply(pass variables in array), bind (change 'this' permanently)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值