1 node
基础
node 导出语法
var path = { a:1,b:2}
module.exports = path
node 导入语法
const path = require('path')
深入
导入分为3 部分,核心模块,第三方库,自定义文件
let fs = require('fs'); // 导入核心系统模块
let my = require('./my.js') // 导入文件或第三方库
导出用module.exports 和 exports 都行 ,尽量使用 module.exports
当一个模块需要导出特定类型的单个成员的时候,比如数组,方法等, 这个时候必须使用module.exports方法,而exports只能是返回一个object对象。
let a = {"name":"zhangsan"};
let b = "这是一个字符串";
let c = ['1','2','3'];
module.exports = { a,b, c }
例1
//a.js
function test (args) {
// body... console.log(args);
}
module.exports = {
test
};
//b.js
let { test } = require('./a.js'); (用es6方法取出text)
test('this is a test.');
require的核心概念:在导出的文件中定义module.exports,导出的对象类型不限定, 在导入的文件中使用require()引入即可使用。本质上,是将要导出的对象, 赋值给module这个对象的exports属性,在其他文件中通过require这个方法来访问 exports这个属性。
上面b.js中,require(./a.js) = exports 这个对象, 然后使用es6取值方式从exports对象中取出test的值
例2
// main.js
module.exports = {
a : function() {},
b : 'xxx'
};
// b.js
var m = require('./main');
m.a();
2 es6
基础
es6 导出语法
export default {} (只能暴漏一个成员)
export var s = {}(可以暴漏多个成员)
export var b = {}
es6 导入语法
import a from '包名(或者是文件路径)' (导入export default暴漏的成员) import {s} from '包名(或者是文件路径)' (导入export 暴漏的成员,名字要一致)
深入
导出
// .test.js
export {
name:'zs',
age: 20
}
// index.js
导入
import {name,age} from './test.js
默认导出的模块,让使用者自己命名,且只能使用default导出一次
export default {
name:'zs',
age: 20
}
import m1 from './test.js //m1为自定义名字
导出的其他模块
export var title = "小星星"
export var content = "哈哈哈"
导入模块
import {title,content} from './test.js
如果非要给导出的非默认模块起别名,使用as起别名:
import m1,{title as title1,content as content1} from './test.js'
注意:使用export暴露的成员,只能使用{}的方式来接收,这种形式,叫做按需导出
同时,如果某些成员,在import的时候不需要,则可以不在{}中定义
注意:使用export导出的成员,必须严格按照导出时的名称,使用{}接收。
// a.js
var b = 'xxx';
export {b}; // 这是ES6的写法,实际上就是{b:b}
export function a () {}
export default function() {}
export {fun as default,a,b};
//b.js
import {a,b} from './a';
import {default as alias, a as a_a, b} from './a';