针对开发中的技术选型:node的优点如下:
node面向网络并且擅长并行I/O,能够有效的组织起更多的硬件资源,从而提供更好的服务。I/O密集的优势主要是在于Node利用事件循环的处理,而不是启用每一个线程为每一个请求服务,资源占用极少。node可以合理的调度子进程,从而处理cpu密集型的操作,也可以通过c/c++扩展的方式实现高密度的计算。
node引入模块的流程:
node进程启动时,部分核心模块就已经被加载进内存中,所以在路径分析,文件定位时加载的速度非常的快,而用户编写的模块则需要完整的路径分析,文件定位,编译执行过程,也就是要严格执行模块加载的3个流程。
模块加载的过程:优先从缓存中加载模块,node中对二次引入的模块会一律采用缓存优先的方式,就是第一次模块编译和执行之后的对象。
node引入文件模块时可以不加扩展名,这样在定位文件的时候,会根据后缀为.js,json,.node依次尝试,所以查找会比较慢,好的方式就给文件加上对应的后缀名。
编写node的模块中的require,module,exports,__filename,__dirname是哪里来的呢?
js开发中多模块的文件引入,为了不造成全局变量不被污染,所以都是以立即执行函数形成一个封闭的作用域,每个模块都这么写不是很费事吗?所以,node就把这种重复的工作给拿过来啦,在编译的过程中,Node对js文件的内容进行头尾包装,在头部添加了(function(exports,require,module,__filename,__dirname){//模块代码 }),每个文件都做了作用域的隔离,当前的模块对象的exports,require,module,__filename,__dirname,作为参数传递给function内部使用。
node在启动时,会生成一个全局变量process,并提供Binding()方法来协助加载内建模块。Binding()模块的实现代码在src/node.cc中,
发布包:
npm init //生成一个package.json文件
npm adduser //在npm官网注册或登录
npm publish .//将包发布到npm官网中
网友评论