찾다
웹 프론트엔드JS 튜토리얼JavaScript 모듈식 프로그래밍_javascript 기술

JavaScript 모듈형 프로그래밍의 중요성

JavaScript의 프로토타입은 객체 지향 프로그래밍 언어이자 약한 유형의 언어인 Java로 유연성이 뛰어납니다. 과거에는 자바스크립트 코드를 작성할 때 .js 파일을 하나씩 직접 작성한 다음 스크립트 태그를 사용하여 이를 html 페이지에서 참조했습니다.

1. 전역변수가 많습니다
Node.js는 어디에서나 전역 변수를 정의할 수 있습니다. 사양에 맞지 않는 내용을 작성하면 전역 변수가 많이 등장하게 되고, 결국 프로그램 유지 관리가 어려워지게 됩니다.
2. js 로딩 순서는 코드의 종속성 순서를 따라야 합니다
가장 간단한 것, 예를 들어 a.js는 b.js 파일에 따라 달라집니다. html에 스크립트를 도입할 때 b.js는 a.js보다 먼저 도입되어야 하며, 그렇지 않으면 오류가 보고됩니다. 프로젝트가 수십 개의 js 파일로 분할된 경우 특정 사양을 따르지 않으면 많은 수의 전역 변수가 나타나며 해당 종속성도 유지하기 어렵습니다.
3. HTML이 한 번에 너무 많은 js 스크립트를 로드하여 페이지가 일시 중지된 것처럼 보입니다.
초기화 중에 한 번에 너무 많은 js 스크립트를 로드하면 페이지가 일시 중지된 것처럼 보일 수 있습니다.
RequireJS를 사용하여 js 모듈형 프로그래밍 구현

  • RequireJS의 목표는 코드의 모듈화를 장려하는 것이며 기존 스크립트 태그와는 다른 스크립트 로딩 단계를 사용합니다. 이를 사용하여 코드 속도를 높이고 최적화할 수 있지만 주요 목적은 코드를 모듈화하는 것입니다. 스크립트를 사용할 때 URL 주소 대신 모듈 ID를 사용하는 것이 좋습니다. ——[RequireJS 공식 홈페이지]

RequireJS 사용법에 대해 너무 자세히 설명하고 싶지 않습니다. 자세한 내용은 직접 검색하거나 공식 홈페이지에서 알아보세요. 여기에는 RequireJS 모듈식 프로그래밍을 사용한 경험 중 일부를 기록합니다.

응용 시나리오는 프로젝트에서 타사 오픈 소스 라이브러리를 사용하는 것입니다. 그러나 GIS 전문가가 아닌 많은 IT 플레이어는 현재 일부 기본 개념을 이해하지 못할 수 있습니다. 라이브러리의 상위 계층은 인터페이스를 더 쉽게 이해할 수 있도록 하며, 작업 분담과 협업도 달성할 수 있습니다. 누구나 자신의 모듈을 작성하고 좋은 인터페이스를 예약하면 됩니다. 다음은 캡슐화의 작은 예입니다. 현재는 js 모듈화를 배우는 단계에 불과합니다. 크든 작든 이 사양에 따라 작성하겠습니다. 많은 이익을 얻습니다.

여기에서는 경량 오픈 소스 지도 라이브러리인 전단지를 사용합니다. 요구 사항은 점, 선 및 표면 그리기를 실현하기 위한 그래픽 그리기 클래스를 작성하는 것입니다. 코드는 직접 제공됩니다:

define(['leaflet'], function(){
  /**
   * 绘制多段线
   * @param options
   * @returns {*}
   * @private
   */
  var _drawLine = function(latlngs, options){
    return L.polyline(latlngs, options);
  };

  /**
   * 绘制多边形
   * @param options
   * @private
   */
  var _drawPolygon = function(latlngs, options){
    var polygon;
    if(latlngs.length < 3){
      console.log("点数少于3,无法绘制多边形!");
    } else {
      var firstPt = latlngs[0];
      var lastPt = latlngs[latlngs.length - 1];
      if(firstPt.equals(lastPt)){
        latlngs.pop();//移除与起点相同的终点
      }
      polygon = L.polygon(latlngs, options);
      return polygon;
    }
  };
  /**
   * 绘制矩形
   * @param bounds
   * @param options
   * @returns {*}
   * @private
   */
  var _drawRect = function(bounds, options){
    return L.rectangle(bounds, options);
  };
  /**
   * 绘制圆形
   * @param center
   * @param radius
   * @param options
   * @returns {*}
   * @private
   */
  var _drawCircle = function(center, radius, options){
    return L.circle(center, radius);
  };

  /**
   *封装,暴露公共方法
   */
  return {
    drawLine : _drawLine,
    drawPolygon : _drawPolygon,
    drawRect : _drawRect,
    drawCircle : _drawCircle
  }
})

전화 시 코드:

require(['drawHelper'], function(drawHelper){

 function drawLine(){
  var latlngs = new Array();
  for(var i = 20; i < 30; i++){
   for(var j = 100; j < 110; j++){
    latlngs.push(new L.latLng(i, j));
   }
  }
  var polylineOpt = {
   color : 'blue',
   weight : '2',
   opacity : 0.8,
   smoothFactor : 2.0
  };
  var polyline = drawHelper.drawLine(latlngs, polylineOpt);
  polyline.addTo(mainmap);
 };

 function drawPolygon(){
  var latlngs = new Array();
  latlngs.push(L.latLng(31, 110), L.latLng(31, 111), L.latLng(32, 111), L.latLng(32, 110), L.latLng(32, 109));
  var Opt = {
   stroke : true,
   color : 'blue',
   weight : '2',
   opacity : 0.8,
   fill : true,
   fillColor : 'red',
   fillOpacity : 0.6
  };
  var polygon = drawHelper.drawPolygon(latlngs, Opt);
  polygon.addTo(mainmap);
 }

 function drawRect(){
  var bounds = [[33, 110], [36, 113]];
  var Opt = {
   stroke : true,
   color : 'blue',
   weight : '2',
   opacity : 0.8,
   fill : true,
   fillColor : 'yellow',
   fillOpacity : 0.6
  };
  drawHelper.drawRect(bounds, Opt).addTo(mainmap);
 }

 function drawCircle(){
  var center = L.latLng(32, 116);
  var Opt = {
   stroke : true,
   color : 'red',
   weight : '2',
   opacity : 0.8,
   fill : true,
   fillColor : 'green',
   fillOpacity : 0.6
  };
  drawHelper.drawCircle(center, 200000, Opt).addTo(mainmap);
 }

 drawLine();
 drawPolygon();
 drawRect();
 drawCircle();
})

효과는 다음과 같습니다. 여기에 완전히 요약하지는 않았지만 충분합니다. 기본적인 지도 작업 및 레이어 제어를 위해 지도 컨트롤을 작성하여 통합 관리할 수 있습니다

위 내용은 JavaScript 모듈러 프로그래밍에 대한 논의입니다. 모든 분들의 학습에 도움이 되기를 바랍니다.

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
es6数组怎么去掉重复并且重新排序es6数组怎么去掉重复并且重新排序May 05, 2022 pm 07:08 PM

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

JavaScript的Symbol类型、隐藏属性及全局注册表详解JavaScript的Symbol类型、隐藏属性及全局注册表详解Jun 02, 2022 am 11:50 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

原来利用纯CSS也能实现文字轮播与图片轮播!原来利用纯CSS也能实现文字轮播与图片轮播!Jun 10, 2022 pm 01:00 PM

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

JavaScript对象的构造函数和new操作符(实例详解)JavaScript对象的构造函数和new操作符(实例详解)May 10, 2022 pm 06:16 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

JavaScript面向对象详细解析之属性描述符JavaScript面向对象详细解析之属性描述符May 27, 2022 pm 05:29 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

javascript怎么移除元素点击事件javascript怎么移除元素点击事件Apr 11, 2022 pm 04:51 PM

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

整理总结JavaScript常见的BOM操作整理总结JavaScript常见的BOM操作Jun 01, 2022 am 11:43 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。

foreach是es6里的吗foreach是es6里的吗May 05, 2022 pm 05:59 PM

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구