在后台开发语言中,好比Java、C#。他们都是隐含模块化的,Node.js默认帮咱们提供了模块化这种机制。 在服务器端,咱们想要使用底层的一些功能须要导入一些“包”来对其操做,好比操做文件、网络须要导入对应的包。其它语言中都是基于类来实现的模块化的思想,使用类来组织文件和文件之间的关联。 而Node.js中使用的是JavaScript语言,ECMAScript仅仅规定了基本的语法的书写,并无规定文件之间 关联,也就是说每一个js文件之间是独立的,Node.js已经帮咱们实现了js文件之间的关联(模块化) Node.js中的模块化是基于CommonJS规范的
使用核心模块以前首先要导入模块javascript
path模块html
basename() 获取文件名+后缀java
path.basename("/foo/hello/world/123.html") //第二个参数,去掉获取的文件名中的相同部分 path.basename("c:/foo/hello/world/123.html",".html")
dirname() 获取目录node
path.dirname("/foo/hello/world/123.html")
extname() 获取文件的扩展名git
path.extname("/foo/hello/world/123.html")
join() 合并路径程序员
var p1 = "c://abc/xyz"; var p2 = "/123/456"; console.log(path.join(p1,p2));
parse() 把路径转换为一个对象github
path.parse("c:\\home\\hello\\world\\123.html") { root: 'c:/', dir: 'c://home/hello/world', base: '123.html', ext: '.html', name: '123' }
format() 把一个路径对象转换成一个路径字符串web
var obj = { root: 'c:\\', dir: 'c:\\home\\hello\\world', base: '123.html', ext: '.html', name: '123' } console.log(path.format(obj));
delimiter 环境变量的分隔符,能够跨平台 windows下是; 其它平台 :数据库
url模块npm
parse() 把字符串的路径转换成对象
var uri = "http://www.baidu.com:8080/images/1.jpg?version=1.0&time=1123#abcd"; console.log(url.parse(uri));
format() 把路径对象转换成字符串
var obj = { protocol: 'http:', slashes: true, auth: null, host: 'www.baidu.com:8080', port: '8080', hostname: 'www.baidu.com', hash: '#abcd', search: '?version=1.0&time=1123', query: 'version=1.0&time=1123', pathname: '/images/1.jpg', path: '/images/1.jpg?version=1.0&time=1123', href: 'http://www.baidu.com:8080/images/1.jpg?version=1.0&time=1123#abcd' }; var str = url.format(obj); console.log(str);
querystring模块
parse() 把参数字符串解析成对象
var obj = querystring.parse("version=1.0&time=123"); console.log(obj);
定义文件模块 add.js
function add(a,b) { return a + b; } //导出成员 exports.add = add; //module.exports.add = add;
使用文件模块 main.js
var obj = require("./add.js"); console.log(obj.add(5,6));
//使用相对于main.js 的方式查找add.js var obj = require("./add.js"); var obj = require("./add"); //下面这种方式是引用核心模块或者包 //var obj = require("add");
CommonJS的包规范给程序员提供了组织模块的标准,减小沟通成本
包的使用:
导入包的执行过程 require("calc")
package.js
名称 | 功能 |
---|---|
name | 包名称 |
description | 包介绍,介绍包的功能 |
version | 版本号,用于版本控制 |
keywords | 关键词数组,用于在npm中搜索 |
main | require引入包时优先检查此字段 |
dependencies | 标记当前包所依赖的包列表,npm会自动加载依赖的包 |
Author | 包做者 |
License | 开源许可 |
{ "name": "calcpack", "version": "1.0.0", "description": "", "main": "app.js", "scripts": { //能够经过npm run来执行 "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
建立包的标准方式
一个标准包的结构
名称 |功能 |---|---| package.js |包描述文件 bin |存放可执行文件 lib |存放JavaScript代码 doc |存放文档 test |存放单元测试用例代码 README.md |说明文档,描述包的做用和用法
把包发布到NPM官网 https://www.npmjs.com/
"name":"nllcode", "email":"xxxxx@qq.com"}]
错误
安装包
require()加载规则