Nde模块篇

/*模块分为两种:原生模块和文件模块。原生模块即Node.js API提供的原生模块,原生模块在启动时已经被加载。文件模块即为动态加载模块,加载文件
模块的工作主要由原生模块 module 来实现和完成。原生模块在启动时已经加载,文件模块则需要通过调用Node.js 的 require 方法来实现加载。
Node.js会对原生模块和文件模块都进行缓存,因此在第二次require该模块时,不会有重复的开销去加载模块,只需要从缓存中读取相应模块数据即可。

Node.js如何处理模块
Node.js中原生模块和文件模块的调用方法存在一定的区别,但是二者的应用大同小异。

1.原生模块的调用
应用Node.js提供的API require来加载相应的Node.js模块,require加载成功后会返回一个Node.js模块的对象,该对象拥有的所有属性和方法,例如:
var httpModule = require(‘http‘);//require http模块
http:HTTP时Node.js提供的原生模块,该模块中有createServer、request和get等多个方法和属性,这些都可以在API文档中查找到
httpModule:则require原生HTTP模块后返回的对象,通过该对象可以调用HTTP模块的所有方法和方法。
httpModule.creatServer(function(res,req){}).listen(port)//调用httpModule的对象方法
httpModule对象调用了HTTP模块中的createServer和lister方法来创建简单的http服务器

2.文件模块调用方法
文件模块的调用和原生模块的调用方式基本一致,但是需要注意的是,原生模块的加载不需要指定模块的路径,而文件模块加载时必须指定文件路径
否则会出现"can not find XX module"。
var test = require(‘/path/.../test.js‘)也可以var test = require(‘/path/.../test‘)
/path/.../test.js:代表test文件模块的绝对路径,如果需要使用相对路径,则需要在路径前加一个"./",例如require(‘./test.js‘)
/path/.../test.js也可以省略js后缀名
test返回值:require加载模块成功后返回的同样也是一个对象
在得到require返回对象test以后,那么该test对象可以调用文件模块的那些属性和方法呢?Node.js中明确指出,在文件模块中,只有express和
module.express对象暴露给该外部的属性和方法,才能够通过返回的require对象进行调用,其他方法和属性是无法获取的,因此test对象只能调用
test.js文件模块中的exports和module.exports的方法和属性。例如test.js中的love方法和yourName属性不能通过返回test对象进行调用,而由于
name属性和exports暴露给调用者,因此二者可以通过test对象访问。

*/
exports.name = "xiao er";
exports.happy = function(){
    console.log("mm");
};
var yourName = "reader";
function love(){
    console.log("mm vs gg")
}

/*
test对象可见属性和方法:只有name属性和happy方法是通过调用exports,因此对于require加载模块后返回对于require加载模块返回后的test
对象来说,其可见方法和属性只有name和happy。
test对象不可见属性和方法:yourName属性和love方法由于没有调用exports,返回暴露给外部调用者,因此对require返回烦人对象test是不可见
的,这点类似于类的私有成员和私有方法。

我们通过代码打印出来的require后的test对象信息,查看其拥有的属性和方法。

由此看来,仅有exprots和module.exprots的方法和属性是可见的。
*/

时间: 2024-11-06 15:15:19

Nde模块篇的相关文章

SAP FICO hande汉得培训资料---I 总帐模块篇.pdf

SAP FICO hande汉得培训资料---I 总帐模块篇.pdf 电子版 淘宝上好价钱 https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-5741239872.2.LkMKkv&id=44491214074

Python之模块篇

简介 你已经学习了如何在你的程序中定义一次函数而重用代码.如果你想要在其他程序中重用很多函数,那么你该如何编写程序呢?你可能已经猜到了,答案是使用模块.模块基本上就是一个包含了所有你定义的函数和变量的文件.为了在其他程序中重用模块,模块的文件名必须以.py为扩展名. 模块可以从其他程序 输入 以便利用它的功能.这也是我们使用Python标准库的方法.首先,我们将学习如何使用标准库模块. 使用sys模块 #! /usr/bin/python import sys print ' The comma

导入模块篇

导入模块使用import 命令,如调用windows 命令: #os命令,此命令是调用windows命令import osos.system("dir") #用于打印原始输入信息os.popen("dir").read() #查询python目录import sysprint(sys.path) #windows下匿名输入密码 import getpass ;\ #getpass 用的是匿名模块username =input("username:"

开源电子书

操作系统 开源世界旅行手册 鸟哥的Linux私房菜 The Linux Command Line (中英文版) Linux 设备驱动 (第三版) 深入分析Linux内核源码 UNIX TOOLBOX Docker中文指南 Docker -- 从入门到实践 Docker入门实战 Docker Cheat Sheet FreeRADIUS新手入门 Mac 开发配置手册 FreeBSD 使用手册 Linux 命令行(中文版) Linux 构建指南 Linux工具快速教程 Linux Documenta

收集了一些python的文章

来自: 戴铭 2010-08-31 17:52:31 newthreading - safer concurrency for Python 安全并发(1回应) http://www.starming.com/index.php?action=plugin&v=wave&tpl=union&ac=viewgrouppost&gid=73&tid=7607 几个 Google App Engine 开源的Blog程序 http://www.starming.com/i

分享这几年收藏的C# PDF电子书定制制作下载

本人背靠海量纸质图书,可以制作各种纸质书籍的电子化,有需要可以Q:1481449626 <基于ASP.NET的网站建设与管理 C#>作者:陈光军,韩立军主编 页数:300 出版社:北京市:北京邮电大学出版社 出版日期:2013.05 简介:本书共分12章,列举大量实例,详细介绍了网站建设与管理的最新理念与应用技术,从网站的建设目标.总体规划开始,全面论述了网站建设与管理的基本知识.网页设计和制作的技术与技巧. <C#实用教程>作者:郑阿奇 页数:364 出版社:北京市:电子工业出版

Python花式错误集锦(长期更新)

Python是一门灵活的,有意思的,用途广泛的语言.近些年来,收到越来越多的重视.也有越来越多的人来学习这门语言. 于是,问题来了,对于初学者,往往在写代码的过程中,出现这样或那样的错误,导致程序运行报错.这些错误或简单,或复杂,或诡异,或神奇,要么令人抓耳挠腮,要么让人恼羞成怒,要么让人难以忘怀.但是,在学习编程的过程中,就是这些错误让我们成长,让我们逐渐从采坑再爬坑的过程中,感受到编程的魅力. 到底有哪些错误呢,请看DE8UG给你带来的"Python花式错误集锦",如果你遇到了Py

Java架构师“修仙”之路:推荐几本适用于所有Java程序员阅读书籍,希望你有一天成为架构狮

1.<深入理解Java虚拟机:JVM高级特性与最佳实践>本书适合所有Java程序员.系统调优师和系统架构师阅读. 共分为五大部分,围绕内存管理.执行子系统.程序编译与优化.高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理. 第一部分从宏观的角度介绍了整个Java技术体系.Java和JVM的发展历程.模块化,以及JDK的编译,这对理解本书后面内容有重要帮助. 第二部分讲解了JVM的自动内存管理,包括虚拟机内存区域的划分原理以及各种内存溢出异常产生的原因:常见的垃圾收集

诗经 全文

诗经 全文 (带注释和译文) http://www.edu009.com/Article/HTML/Article_60756.html <诗经> 春秋·孔丘 <诗经>是我国第一部诗歌总集,先秦时代称为“诗”或“诗三百”,孔子加以了整理.汉武帝采纳董仲舒“罢黜百家,独尊儒术”的建议,尊“诗”为经典,定名为<诗经>. <诗经>现存诗歌 305 篇,包括西周初年到春秋中叶共 500 余年的民歌和朝庙乐章,分为风.雅.颂三章. “风”包括周南.召南.邶.鄘.卫.王