node.js 의 exports,module.exports 와 ES6 의 export,export default 깊이 있 게 설명 합 니 다.
4946 단어 node.jsmodule.exportsdefault
최근 모처럼 시간 이 나 서 node 프로 그래 밍 을 다시 규범화 하기 로 했다.그러나 도입 모듈 은 require 방식 으로 우리 의 ES6 각종 export,export default 를 연상 하 는 것 을 보 았 다.
아 시 죠?머리 가 커 졌 는데...................................................
머리 가 다 컸 으 니 앉 아서 먼저 그들의 사용 범 위 를 정리 하 자.
노드 모듈
Node 안의 모듈 시스템 은 CommonJS 규범 을 따른다.
그 문제 가 또 왔 습 니 다.무엇이 CommonJS 규범 입 니까?
js 가 예전 에 혼 란 스 러 웠 기 때문에 각 코드 를 썼 고 모듈 의 개념 이 하나 도 없 었 다.이 규범 은 바로 모듈 에 대한 정의 이다.
CommonJS 가 정의 하 는 모듈 은 모듈 표지(module),모듈 정의(exports),모듈 참조(require)로 나 뉜 다.
exports 와 module.exports 를 먼저 설명 합 니 다.
node 에서 파일 을 실행 할 때 이 파일 에 exports 와 module 대상 을 생 성 합 니 다.
모듈 에는 exports 속성 이 하나 더 있 습 니 다.그들 사이 의 관 계 는 다음 그림 과 같 습 니 다.{}메모리 영역 을 가리 키 고 있 습 니 다.
exports = module.exports = {};
그럼 코드 를 살 펴 보 겠 습 니 다.
//utils.js
let a = 100;
console.log(module.exports); // :{}
console.log(exports); // :{}
exports.a = 200; // module.exports {a : 200}
exports = ' '; // exports
//test.js
var a = require('/utils');
console.log(a) // {a : 200}
위 에서 알 수 있 듯 이 require 내 보 낸 내용 은 module.exports 가 가리 키 는 메모리 블록 내용 이지 exports 가 아 닙 니 다.한 마디 로 하면 이들 의 차 이 를 구분 하 는 것 은 exports 가 module.exports 의 인용 일 뿐 후자 가 내용 을 추가 하 는 데 사용 하 는 것 을 보조 하 는 것 이다.
백화 로 말하자면 exports 는 module.exports 가 메모리 에 있 는 데 이 터 를 보조 하 는 것 입 니 다.여러 가지 조작 데이터 가 끝나 고 지 쳐 죽 을 지경 입 니 다.결국 정말 require 에 의 해 나 간 내용 은 module.exports 입 니 다.정말 힘 들 었 습 니 다.
사실 모두 가 메모리 블록 이라는 개념 으로 이해 하면 잘 알 수 있 을 것 이다.
그리고 헷 갈 리 지 않도록 module.exports 로 내 보 내 고 require 로 가 져 옵 니 다.
ES 모듈 내 보 내기 가 져 오기
솔직히 es 의 모듈 은 매우 뚜렷 하 다.하지만 자세 한 것 도 알 아야 할 것 이 있 습 니 다.
예 를 들 어 export 와 export default,그리고 가 져 올 때 import a from..,import{a}from.............................................................
export 와 export default
우선 우 리 는 이 두 가지 도 출 을 이야기 하고,다음은 그들의 차 이 를 이야기 합 시다.
testEs6Export.js
'use strict'
//
export const a = '100';
//
export const dogSay = function(){
console.log('wang wang');
}
//
function catSay(){
console.log('miao miao');
}
export { catSay };
//export default
const m = 100;
export default m;
//export defult const m = 100;// 。
index.js
//index.js
'use strict'
var express = require('express');
var router = express.Router();
import { dogSay, catSay } from './testEs6Export'; // export
import m from './testEs6Export'; // export default
import * as testModule from './testEs6Export'; //as
/* GET home page. */
router.get('/', function(req, res, next) {
dogSay();
catSay();
console.log(m);
testModule.dogSay();
console.log(testModule.m); // undefined , as export , export default default 。
console.log(testModule.default); // 100
res.send(' , ');
});
module.exports = router;
위 에서 보 듯 이 ES6 의 모듈 시스템 이 매우 유연 하 다 고 느 꼈 다.코드 주소
GitHub: https://github.com/XuXiaoGH/exportImportTest
로 컬 다운로드:http://xiazai.jb51.net/201710/yuanma/exportImportTest(jb51.net).rar
참고 문헌
1. 고목 새싹,ES6 에서 Express 사용
2. exports 와 module.exports 의 차이
3. module.exports 와 exports,export 와 export default 간 의 관계
이 세 선배 님 의 나 눔 에 감 사 드 립 니 다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Express + AWS S3 이미지 업로드하기웹 사이트 및 모바일 애플리케이션 등에서 원하는 양의 데이터를 저장하고 보호할 수 있다. 데이터에 대한 액세스를 최적화, 구조화 및 구성할 수 있는 관리 기능을 제공한다. AWS S3 에 저장된 객체에 대한 컨테이너...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.