步遥——Node之模块实现

针对开发中的技术选型: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官网中
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 该篇文章来源博客园小火柴的蓝色理想 Commonjs规范及Node模块实现。 与JS比较   NodeJS是区别于...
    小小的开发人员阅读 3,146评论 0 1
  • 异步I/O 在Node中,我们可以从语言层面很自然的进行一并I/O操作,每个调用之间无须等待之前的I/O调用结束,...
    Upcccz阅读 3,550评论 0 2
  • node的模块实现 Node在实现中并非完全按照规范实现,而是对模块规范进行了一定的取舍,同是也增加了少许自身需要...
    萘小蒽阅读 4,172评论 0 0
  • 原文链接 之前笔者对nodejs中的模块是如何引入的也是一头雾水,读了一本《深入浅出nodejs》,加上自己工作时...
    鸥晓栢阅读 5,670评论 0 1
  • CommonJS规范 Javascript作为前端语言一直发展的很好,但是作为后端JavaScript的规范却远远...
    人失格阅读 4,270评论 0 0

友情链接更多精彩内容