전방에서 모듈화 개발을 실현하다

3002 단어

CommonJS


서버 측의 Node.js는CommonJS규범을 따른다. 이 규범의 핵심 사상은 모듈이 require 방법을 통해 의존할 다른 모듈을 동기화하고 exports 또는module.exports을 통해 노출이 필요한 인터페이스를 도출하는 것이다.

활용단어참조


도입 모듈
let express = require('express');

내보내기 모듈
module.exports.test1 = function () {}
exports.test2 = {}

장단점


이점
  • 서버 엔드 모듈의 재사용 용이성
  • NPM에는 이미 45만 개 이상의 모듈러가 사용 가능
  • 간단하고 사용하기 쉬움
  • 결점
  • 동기화된 모듈 로딩 방식은 브라우저 환경에 적합하지 않다. 동기화는 로딩을 막는 것을 의미하고 브라우저 자원은 비동기적으로 로딩된다
  • 여러 모듈을 동시에 로드할 수 없음
  • 실현

  • 서버 측의 Node.js
  • Browserify, 브라우저 측의 CommonJS 구현, NPM 모듈을 사용할 수 있지만 컴파일된 파일의 부피가 클 수 있음
  • modules-webmake, Browserify 유사, 차라리 Browserify 유연
  • wreq, Browserify의 전신
  • AMD


    Asynchronous Module Definition 규범은 사실 하나의 주요 인터페이스만 있다. define(id?, dependencies?, factory) 모듈을 성명할 때 모든 의존dependencies을 지정하고 형참전factory으로 삼아 의존하는 모듈을 앞당겨 집행하고 선행에 의존해야 한다.

    활용단어참조


    정의 모듈
    define('module', ['dep1', 'dep2'], function (d1, d2) {
        return {}
    });
    

    도입 모듈
    require(['module', '../file'], funtion(module, file) {
        // ...
    })
    

    장단점


    이점
  • 브라우저 환경에서 비동기식 로드 모듈
  • 여러 모듈을 동시에 로드할 수 있음
  • 결점
  • 개발 원가를 높였고 코드의 읽기와 쓰기가 어려웠으며 모듈 정의 방식의 의미가 원활하지 않았다
  • 통용되는 모듈화 사고방식에 부합되지 않고 타협의 실현
  • 실현

  • RequireJS
  • curl

  • CMD


    Common Module Definition 사양은 AMD와 유사하며 CommonJS 및 Node와 최대한 간단하게 유지됩니다.js의 Modules 규범은 매우 큰 호환성을 유지했다.

    활용단어참조


    정의
    define(function (require, exports, module) {
        var $ = require('jquery');
        var Sprinning = require('./spinning');
        exports.test1 = {};
        module.exports = {};
    });
    

    끌어들이다
    define(function (require, exports, module) {
        var $ = require('jquery');
        $('div')...
    });
    

    장단점


    이점
  • 근접, 지연 실행
  • Node에서 쉽게 사용할 수 있습니다.js에서 실행
  • 결점
  • SPM 패키징, 모듈의 로딩 논리적 편중
  • 실현

  • Sea.js
  • coolie

  • ES6 모듈


    Ecmascript6 표준은 JavaScript 언어 차원의 모듈 체계 정의를 추가합니다.ES6 모듈의 디자인 사상은 가능한 한 정태화하여 컴파일할 때 모듈의 의존 관계와 입력과 출력의 변수를 확정할 수 있도록 하는 것이다.CommonJS와 AMD 모듈은 실행할 때만 확인할 수 있습니다.

    활용단어참조


    정의
    export default {
        a: 10,
        b: function () {
            // ...
        }
    }
    

    끌어들이다
    import 'jquery';
    import Vue from 'vue'
    import { render } from 'react-dom'
    

    장단점


    이점
  • 정적 분석 용이
  • 미래를 위한 ECMAScript 표준
  • 결점
  • 원본 브라우저가 아직 표준을 실현하지 못했다
  • 새로운 명령어, 새 Node.js 지원
  • 실현

  • Babel

  • 원하는 모듈 시스템


    다양한 모듈 스타일을 호환할 수 있고 가능한 한 기존의 코드를 이용할 수 있다. 자바스크립트 모듈화뿐만 아니라 CSS, 그림, 글꼴 등 자원도 모듈화되어야 한다.

    좋은 웹페이지 즐겨찾기