• 深入Node.js的模块机制


    Node.js模块的实现

    之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都着墨不多。在后续介绍模块的使用之前,我认为有必要深入一下Node.js的模块机制。

    CommonJS规范

    早在Netscape诞生不久后,JavaScript就一直在探索本地编程的路,Rhino是其代表产物。无奈那时服务端JavaScript走的路均是参考众多服务器端语言来实现的,在这样的背景之下,一没有特色,二没有实用价值。但是随着JavaScript在前端的应用越来越广泛,以及服务端JavaScript的推动,JavaScript现有的规范十分薄弱,不利于JavaScript大规模的应用。那些以JavaScript为宿主语言的环境中,只有本身的基础原生对象和类型,更多的对象和API都取决于宿主的提供,所以,我们可以看到JavaScript缺少这些功能:

    • JavaScript没有模块系统。没有原生的支持密闭作用域或依赖管理。
    • JavaScript没有标准库。除了一些核心库外,没有文件系统的API,没有IO流API等。
    • JavaScript没有标准接口。没有如Web Server或者数据库的统一接口。
    • JavaScript没有包管理系统。不能自动加载和安装依赖。

    于是便有了CommonJS(http://www.commonjs.org)规范的出现,其目标是为了构建JavaScript在包括Web服务器,桌面,命令行工具,及浏览器方面的生态系统。

    CommonJS制定了解决这些问题的一些规范,而Node.js就是这些规范的一种实现。Node.js自身实现了require方法作为其引入模块的方法,同时NPM也基于CommonJS定义的包规范,实现了依赖管理和模块自动安装等功能。这里我们将深入一下Node.js的require机制和NPM基于包规范的应用。

    简单模块定义和使用

    在Node.js中,定义一个模块十分方便。我们以计算圆形的面积和周长两个方法为例,来表现Node.js中模块的定义方式。

    var PI = Math.PI;
    exports.area= function(r){
       return PI*r*r;
    }

    将上面这段代码保存成一个circle.js

    创建一个app.js ,在该文件中写下

    var circle = require('./node_modules/new/circle');
    console.log('the area of a circle of radius 4 is'+circle.area(4);

    运行 app.js 

    将会得到 the area of a circle of radius 4 is 50.2654824573

    到这,你就成功的创建一个简单的模块并调用成功了!

    只要肯努力学习工作,面包会有的,牛奶也会有的
  • 相关阅读:
    RabbitMQ 内存控制 硬盘控制
    Flannel和Docker网络不通定位问题
    kafka集群扩容后的topic分区迁移
    CLOSE_WAIT状态的原因与解决方法
    搭建Harbor企业级docker仓库
    Redis哨兵模式主从持久化问题解决
    mysql杂谈(爬坑,解惑,总结....)
    Linux的信号量(semaphore)与互斥(mutex)
    SIP协议的传输层原理&报文解析(解读rfc3581)(待排版) && opensips
    SIP协议的传输层原理&报文解析(解读RFC3261)(待排版)&&启动
  • 原文地址:https://www.cnblogs.com/sandraMaying/p/node_module.html
Copyright © 2020-2023  润新知