찾다

 >  Q&A  >  본문

javascript - 종속성에 종속성을 선언하는 이유는 무엇입니까?

--save로 설치된 모듈을 보면 종속 항목으로 표시됩니다.
그리고 종속성의 모듈은 프로덕션 환경의 종속성을 나타냅니다. jQuery와 같은.

하지만 제가 이해하지 못하는 것은 jQuery를 예로 들어보겠습니다. 종속성에서 종속성을 선언해야 하는 이유는 무엇입니까?
프로덕션 환경에서는 전혀 의존성 없이 스크립트 태그를 직접 사용하여 jQuery를 참조하겠습니다. 프로덕션 환경이 의존하는 모듈이 종속성에서 선언되면 어떻게 되나요? 스크립트 태그가 자동으로 추가되나요? 예를 들어 모듈을 패키징할 때, 프로덕션 환경 모듈을 패키징할 때 종속성의 모든 종속성이 패키징되나요? 그런데 제가 아는 한, 예를 들어 webpack 모듈을 패키징할 때 require 모듈이 생성한 의존성 그래프를 기반으로 패키징을 하게 되는데 왜 프로덕션 환경의 의존성을 dependency에 선언해야 하는지 잘 이해가 되지 않습니다.

为情所困为情所困2709일 전772

모든 응답(5)나는 대답할 것이다

  • 我想大声告诉你

    我想大声告诉你2017-06-21 10:13:57

    실제 개발에서는 많은 모듈을 사용합니다. 일부 모듈(gulp, babel 등은 devDependency에 있음)은 개발 환경에서만 사용되는 반면, jquery는 프로덕션 환경에서 사용됩니다. 프로덕션 환경에서 npm install --production을 실행하면 종속성 있는 모듈만 설치되므로 매우 편리합니다.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-06-21 10:13:57

    사실 해당 필드는 노드용으로 설계되었으므로 작성 여부는 중요하지 않습니다.

    좀 더 구체적으로 말하면 프런트 엔드 프로젝트로서 종속성은 패키지화되거나 스크립트 태그로 도입되므로 deps 필드에 있는 내용은 최종 코드에 전혀 영향을 미치지 않습니다.

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-06-21 10:13:57

    • 사용하는 경우 <script>加入模块的话,这个引入JS/CSS的方法本身用不到npm包管理,可以直接忽略package.json구성 문제

    • webpack进行打包。webpack在模块打包时是根据require的模块创建的依赖图表来打包的,这的确没错。但是之后还有一步,就是webpack通过依赖图表进行打包的时候,如果依赖图表里有jQuery依赖,webpack还是要去找jQuery的文件,然后注入到打包的文件之中。如果你不写dependencies的话,在团队开发中,另一个人改了一点代码,然后用npm install와 같은 종속성 패키지를 설치한 후 다시 패키지하면 webpack은 jQuery에 의존하는 종속성 그래프를 생성하지만 webpack은 node_modules의 대상 파일에 삽입할 jQuery 코드를 찾을 수 없으므로 다시 패키지하면 실패합니다. 물론, 당신이 유일한 발전자라면 이것을 무시할 수 있습니다.

    • 물론 종속성에는 이전에 작성한 node.js 크롤러와 같은 다른 애플리케이션이 있습니다. 이 크롤러는 노드를 직접 사용하여 JS 코드를 실행하므로 require는 JS 파일에 이러한 종속성을 설치한 후에만 해당 패키지를 읽을 수 있습니다. require()的包都需要写在dependencies里,部署的时候用npm install

    • 회신하다
      0
  • 淡淡烟草味

    淡淡烟草味2017-06-21 10:13:57

    페이지 개발을 위해서는 webpack을 사용해야 하기 때문에 node를 사용하셔도 될 것 같습니다. 그렇지 않으면 종속성과 스크립트 간의 관계에 대해 묻지 않을 것입니다. 둘 사이에는 아무런 연관성이 없습니다.

    여기에는 3가지 항목이 혼합되어 있습니다.

    1. package.json의 종속성 관리

    2. webpack의 종속성 관리

    3. html로 스크립트 소개

    package.json의 종속성 관리

    node는 페이지 개발뿐만 아니라 서버 프로그램 개발, JS 라이브러리 개발 등 다양한 작업에도 사용할 수 있습니다. 종속성은 에서 프로젝트를 사용할 때 프로젝트의 종속성을 기록하고 보장합니다. 에서 프로젝트를 개발할 때 종속성을 기록하고 보장합니다. 예를 들어 라이브러리를 개발하고 NPM에 게시할 준비를 하고 있습니다.

    를 사용해야 하는 경우 devDependency에는 babel 및 eslint가 포함됩니다.

    lodash.sample,开发时使用es6,并且还使用eslint对代码风格进行规范。那么dependencies中就有lodash.sample종속성은 누구나 우리 라이브러리를 설치할 때

    동일한 개발 환경(패키징, 트랜스코딩, 제약 조건, 구성 등)을 얻을 수 있도록 보장합니다. 생각해 보세요. 다른 컴퓨터에서 이 라이브러리의 버전 2.0을 개발하려는 경우, devDependency가 없으면 babel 및 eslint를 수동으로 다시 설치해야 하거나 원본 프로젝트에서 전체 프로젝트를 복사해야 합니다. .node_modules 폴더.

    lodash.sample都会被安装(否则这个库将无法正确运行);devDependencies保证任何人在(或者你自己在其他设备上)对这个项目进行修改(开发)时,通过npm installwebpack의 종속성 관리

    Webpack은 페이지 개발에 사용할 수 있고 다른 곳에서도 사용할 수 있는 빌드 도구입니다. Webpack의 종속성 관리는

    를 통해 종속성을 찾으며 종속성에 의존하지 않습니다.

    require여전히 위의 라이브러리 예제를 사용하여 패키징에 webpack을 사용할 수 있습니다(그러면 devDependency에 webpack이 있어야 합니다). 전화를 해도.

    HTML로 스크립트 소개npm install --save了其他十几个模块,webpack时,也只会将lodash.sample

    webpack을 사용하여 페이지를 개발하는 경우 패키지된 js 파일은 먼저 HTML의 스크립트로 수동으로 도입되지만 나중에 이 프로세스를 자동으로 완료하는 데 도움이 되는 플러그인이 있습니다. 나중에 vue-cli와 같은 일부 스캐폴딩 도구에는 책임 있는 웹팩 구성이 내장되어 전체 프로세스를 최적화하고 자동화했습니다. 또한 전체 개발 과정이 노드에서 완료되기 때문에 의존성과 스크립트 사이에 연관성이 있다고 잘못 인식할 수도 있습니다.

    질문으로 돌아가서: "왜 프로덕션 환경 종속성을 종속성으로 선언해야 합니까?"

    이유는: 이러한 종속성이 기록되지 않으면 다른 사람(또는 다른 장치의 사용자 자신)이 다시 개발할 때 프로젝트에 어떤 종속성을 도입해야 하는지 알 수 없어 개발이 불가능하기 때문입니다. 한 사람이고 컴퓨터를 전환하지 않는 경우에는 종속성을 사용할 필요가 없습니다.

    회신하다
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-21 10:13:57

    工作环境改变的时候,你的项目要是想正常运行。必须声明依赖,这样不管在哪里,只需要一句
    npm install작업 환경을 복원하고 모든 종속성을 해결할 수 있습니다

    회신하다
    0
  • 취소회신하다