一、模块
每一个js文件是一个模块;多个js文件相互调用,共同实现一个功能,也叫作一个模块。所以:模块就是一些功能的封装
1》js文件和js文件有两种合作模式:
1、某一个JS文件中提供了函数,供别人使用,只需要暴露函数就行了。用exports和require联合使用;
2、某一个js文件中描述了一个类。module.exports=构造函数名;
2》node_modules文件夹:
node中,引包的时候,如果不写“./”,默认是从node_modules中引用相应的js文件;eg:var foo=require("foo.js");类似于:var foo=require("./node_modules/foo.js");
不写“.js”,默认引用node_modules文件夹下的子文件夹中的index.js文件;eg:var foo=require("foo"); 即:引用node_modules文件夹下的foo文件夹下的index.js文件;
3》package.json文件:
每一个模块文件夹中,推荐都写一个package.json文件,这个文件的名字不能改。node将自动读取里面的配置。有一个main项,就是入口文件:
{ "name": "kaoladebar", "version": "1.0.1", "main" : "app.js" }
|
package.json文件,要放到模块文件夹的根目录去。
二、npm(node package management)
工程师将一些常用的函数封装成一个个的包,放到社区npm(https://www.npmjs.com/)上供别人使用;
使用方法:在https://www.npmjs.com/中找到要使用的包,在cmd中输入命令: npm install 包名
代码中引用的时候,直接用require(“包名”);即可
eg:
var silly=require("silly-datetime");
console.log(silly.format(new Date(),"YYYYMMDDHHmm"));
三、路径
_dirname :表示绝对路径(访问模块的时候,直接写相对路径即可,但是当访问文件如txt,则需要写绝对路径);
require()别的js文件的时候,将执行那个js文件。
require()中的路径,是从当前这个js文件出发,找到别人。而fs是从命令提示符找到别人。
所以,桌面上有一个a.js, test文件夹中有b.js、c.js、1.txt
a要引用b:
var b = require(“./test/b.js”); |
b要引用c:
var b = require(“./c.js”); |
但是,fs等其他的模块用到路径的时候,都是相对于cmd命令光标所在位置。
所以,在b.js中想读1.txt文件,推荐用绝对路径:
fs.readFile(__dirname + "/1.txt",function(err,data){ if(err) { throw err; } console.log(data.toString()); }); |