[Node JS] Node JS 要点

本文深入探讨了Node.js的核心技术,包括其与PHP等其他服务端语言的区别、异步I/O的特点、模块加载方式、全局变量的使用、进程管理、事件驱动机制及闭包等高级特性。

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)



这个是完整源码 python实现 Flask,Vue 【python毕业设计】基于Python的Flask+Vue物业管理系统 源码+论文+sql脚本 完整版 数据库是mysql 本文首先实现了基于Python的Flask+Vue物业管理系统技术的发展随后依照传统的软件开发流程,最先为系统挑选适用的言语和软件开发平台,依据需求分析开展控制模块制做和数据库查询构造设计,随后依据系统整体功能模块的设计,制作系统的功能模块图、E-R图。随后,设计框架,依据设计的框架撰写编码,完成系统的每个功能模块。最终,对基本系统开展了检测,包含软件性能测试、单元测试和性能指标。测试结果表明,该系统能够实现所需的功能,运行状况尚可并无明显缺点。本文首先实现了基于Python的Flask+Vue物业管理系统技术的发展随后依照传统的软件开发流程,最先为系统挑选适用的言语和软件开发平台,依据需求分析开展控制模块制做和数据库查询构造设计,随后依据系统整体功能模块的设计,制作系统的功能模块图、E-R图。随后,设计框架,依据设计的框架撰写编码,完成系统的每个功能模块。最终,对基本系统开展了检测,包含软件性能测试、单元测试和性能指标。测试结果表明,该系统能够实现所需的功能,运行状况尚可并无明显缺点。本文首先实现了基于Python的Flask+Vue物业管理系统技术的发展随后依照传统的软件开发流程,最先为系统挑选适用的言语和软件开发平台,依据需求分析开展控制模块制做和数据库查询构造设计,随后依据系统整体功能模块的设计,制作系统的功能模块图、E-R图。随后,设计框架,依据设计的框架撰写编码,完成系统的每个功能模块。最终,对基本系统开展了检测,包含软件性能测试、单元测试和性能指标。测试结果表明,该系统能够实现所需的功能,运行状况尚可并无明显缺点。本文首先实现了基于Python的Flask+Vue物业管理系统技术的发
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值