1.在node中创建一个简单的HTTP服务器
var http =require('http');
http.createServer(function (req,res)
{
res.writeHead(200,{'Content-Type':'text/plain'});
res.end('Hello World\n');
}).listen(1337,'127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
2.npm安装
打开终端(右键点击windows,再点击运行,输入cmd,最后回车)
找到当初安装node.js的文件夹并进入到node_modules中的npm文件夹,复制路径,粘贴到终端中
输入指令(例如npm install colors)进行安装
3.关于package.json
name为模块名称,由用户设置
versio为以major.minor.patch表示的包的版本
script 在从改目录运行时提供额外的npm命令
dependencies 存储在任何package.json文件中的大多数信息的位置
4.package.json初始化
首先找到并进入你需要初始化的package.json所在的文件夹,复制地址,在终端中输入指令cd+地址(粘贴地址在此处)
输入指令npm init
根据提示对package.json进行初始化
5.node_modules文件夹
此文件夹是npm安装本地模块的地方,也是需要模块时Node寻找的第一个地方
许多模块都有自己的node_modules文件夹
6.模块依赖关系
(以Express为例)Express使用send模块,send 模块使用mime模块,则会发现在Express的node-modules文件夹中有send模块的文件夹,而send模块的文件夹中有其自己的node_modules文件夹,其中有mime模块的文件夹,如图:
由此可知如果一个模块使用另一个模块时,其node_modules文件夹中会出现相应模块的文件夹,并且强制使每个模块拥有自己的node_modules文件夹能保证各个模块的正常工作。
7.require()
require()特定于Node,不适用于web浏览器,该函数是基于所提供的参数来执行JavaScript
以建立简单Node服务器中的require()为例,通过require(
'http')来设置变量,这将出现以下流程:
检查这个模块是否为核心模块->检查当前目录的node_modules文件夹->如果不存在则移动一个目录并查看其node_modules文件夹->重复查找,直至移动到根目录->在全局目录中查找->如果还是找不到,则抛出错误
在抛错之前,Node会多次常识找到所需的模块,一旦找到,模块将被解析,其中代码会被执行并返回一个具有附加的函数和值的JavaScript对象
require() 的其他用途
1.为数据类型原型添加方法
var colors = require(' colors ');
console.log('Hello World'.green);
如代码所示,此处require()为String原型添加了颜色方法
2.用来执行“运行一次”的代码,例如数据库初始化,构建日志单例等任何单运行代码
3.该函数也可以接受文件路径(该用途用于不打算发布npm注册表的模块)
例如:你编写了一个执行基本数学加法,乘法,分解整数的数学模块的JavaScript文件mmm1.js
exports.add=add;
exports.multiply=multiply;
exports.factorial=factorial;
exports.now=Date.now();
function add (number1, number2){
return parseInt(number1,10)+parseInt(number2,10);
}
function multiply(number1,number2) {
return parseInt(number1,10)*parseInt(number2,10);
}
function factorial(number) {
if(number===0){
return 1;
}
else{
return number*factorial(number-1);
}
}
并在相同目录下创建另一个JavaScript文件mathtest.js并想引用mmm1.js中的模块,那么require()中可填入文件路径
var m = require('./mmm'); console.log(m.add(3,5)); console.log(m.multiply(4,5)); console.log(m.factorial(4));
8.如何编写一个模块
注意:在编写Node代码时会发现似乎缺少定义的export,require和module。Node执行的所有JavaScript文件都会有一个预定义模式将export,require和module自动包含在函数中
如上文数学模块所示,你编写了模块中的函数,为了使你编写的模块的函数能在模块之外可用,须在开头使用dot(.)运算符将函数附加到exports上,如果不想在模块外被公开,则避免附加到exports上
9.npm link链接模块与文件
我们编写一个模块后,如果要将它移动到新的地方而要在原地址的文件中使用这个模块的话(保持模块功能),有两种方法使我们做到:
1.将需要的路径参数更改,指向新位置
2.使用npm link指令色织一个全局服链接到该模块
设置npm link首先在新文件夹目录中打开一个终端,创建一个package.json文件在文件夹中并初始化package.json回到需要调用模块的文件所在的文件夹,在该文件夹中打开一个终端输入指令‘npm link +package文件初始化时的模块名称’,路径信息将提醒你链接到模块的位置,在文件之中使用模块时直接输入require(‘模块名称’)即可。
如何初始化package.json文件
在需要初始化的package.json文件的目录下打开一个终端,输入npm init,它将引导你完成package初始化