-
什么是node?
js作为脚本语言,就需要解析器,在HTML文件中引入的js,浏览器就可以作为解析器。而需要独立运行的js文件,NODEJS就是js独立运行的解析器。
例如在HTML文件中的js,js负责操作dom,浏览器提供dom之类的内置对象。 而运行在node中的js用来操作磁盘中的文件,或者搭建http服务器,node提供fs,http等内置对象。
-
什么是node的模块?
在稍大的程序中,为了方便维护,通常都会将代码拆分到不同的js文件中,每一个JS文件都是模块,而文件路径就是模块名。
在编写模块时,都会有require
,exports
,module,
三个预先定义好的变量课提供使用。
1.require ——用于引入别的模块,方法如下:
var foo1 = require('./foo');
var foo2 = require('./foo.js');
var foo3 = require('/home/user/foo');
var foo4 = require('/home/user/foo.js');
以上写法都是引入磁盘里的相同的模块,其中.js文件后缀可省略。其中Json文件也可以引入。
var foo4 = require('/home/user/foo.json');
当传递给require
的是node的内置模块名称
,将做路径解析,直接放回内部模块的到处对象,例如require('fs')
。
2.exports ——用于到处模块共有方法和属性
别的模块通过上面的require函数使用当前模块时,得到的就是当前模块的exports对象,一下例子中到处了一个共有方法。
//foo.js
exports.hello = function(){
console.log("hello world!")
};
接着,我们和require结合起来,先创建一个和foo.js目录同级的index.js文件,在index.js文件中应用foo.js
//index.js
//引用foo.js文件的导出对象
var foo = require('./foo.js')
//执行hello
foo.hello();
编写完成了,打开cmd,在你的编写目录下运行index.js
node index.js
hello world!
3.module——访问当前模块的的相关信息
通常用于替换当前模块的导出对象,例如模块导出对象默认是一个普通的对象,我想替换成一个函数,方法如下:
module.exports = function(){
console.log("hello world!");
};
以上代码中,模块默认导出对象呗替换为函数。
在开发过程中,一种作法是把各个模块对象化,模块导出对象替换成自定义独享。如下:、
//user.js
function User(AGname){
this.name = AGname;
this.say = function(){
console.log("你好,我是隔壁"+this.name)
}
}
//将模块导出对象替换为User;
module.exports = User;
//index.js
引用user.js导出模块
var user = require('./user.js');
//创建一个user对象
var user1 = new User("老王")
user1.say();
你可以自行创建index.js和user.js这两个文件,将上面的代码拷贝到对应的文件,自己运行一下,这里,index.js就是模块的入口,也就是这个工程的主模块。
-
模块初始化
一个模块中的JS代码仅在模块第一次被使用时执行一次,并在执行过程中初始化模块的导出对象。之后,缓存起来的导出对象被重复利用。
1.使用NodeJs内置模块
NodeJs
内置了很多常用模块,你可以在 nodejs中文网上看到最新稳定版的API,下面举个栗子来说明如何使用NodeJs
的内置模块。
//引用NodeJs内置模块文件系统模块fs
var fs=require('fs');
//在当前目录下创建一个名为“dir”的文件夹,如果已存在,则报错
fs.mkdirSync('dir');
NodeJs的内置模块直接通过模块名称引用即可
2.使用第三方模块
在开发过程中我们常常会用到第三方模块,而起到作用的就是npm
了。栗子如下:
1,初始化工程并生成package.json文件
$ npm init
2,安装第三方模块xxx
(所谓的插件)
$ npm install xxx --save
此时,你会在当前目录可以看到,多了一个文件夹node_modules,打开node_modules,多了一个fs-extra的文件夹,这就是我们从npm上下载的第三方模块fs-extra.我们可以开始使用了xxx
模块了。
Tips: 一个工程中,我们往往不只引入一个模块,只要package.json存在,你就可以使用npm install命令引入所有你需要的模块
网友评论