LEGO™를 플레이하는 것처럼 코딩하는 방법
9169 단어 legoshowdevmodulesjavascript
레시피
재료
먼저 몇 가지 사항을 사전에 알고 있다고 가정하겠습니다.
단계
땅
프로젝트를 위한 빈 디렉토리(유니콘으로 이름 지정)에서 시작하여 초기화합니다.
npm init
구식 JS 클래스로 기본 파일
index.js
을 생성합니다.function Unicorn(name) {
this.name = name;
}
Unicorn.prototype = {
shine: function() {
// All kind of good stuff here 🦄
}
}
var dazzle = new Unicorn("Dazzle");
dazzle.shine();
디커플링
이제 다른 프로젝트에서
Unicorn
클래스를 사용하거나 Humanity에 소스를 공개하고 싶다는 이미지를 만드세요. 다른 리포지토리를 사용하여 다른 디렉터리를 만들 수 있지만 더 똑똑해집시다. Unicorn
클래스는 Unicorn 프로젝트에 매우 연결되어 있으므로 명확성을 위해 NPM 범위 패키지 이름을 사용합니다.index.js
를 3줄의 코드로 줄이는 모든 것.import Unicorn from "@unicorn/model";
var dazzle = new Unicorn("Dazzle");
dazzle.shine();
다음으로 모듈의 하위 디렉토리를 만듭니다.
mkdir packages/model
cd packages/model
npm init # and name it @unicorn/model
내부에 클래스가 있는
index.js
도 있습니다. 가져오기/내보내기 문으로 일반 브라우저 JS를 남겼으므로 아름다운 ES6 클래스 구문을 사용하지 않는 이유는 무엇입니까?export default class Unicorn {
constructor(name) {
this.name = name;
}
shine () {
// All kind of good stuff here 🦄
}
}
이 시점에서
import
문은 node_modules
하위 디렉토리 아래에 설치되어야 하는 패키지 이름을 대상으로 합니다. import Unicorn from "./packages/model/index.js";
와 같은 상대 경로를 사용할 수 있습니다. 더 나은 것은 패키지 사이에 링크를 만드는 것입니다.고맙게도 npm은 link command 을 사용하여 이를 수행할 수 있습니다. 우리의 경우는 다음과 같습니다.
cd packages/model
npm link
cd ..
npm link @unicorn/model
완벽한 !
쌈
Ok nice one, but now I can't use it in my browser, you dumbo !
먼저, 저를 어떻게 부르십니까?
그렇다면 네, 알아요. 지금은 모두 실험적인 구문과 내용이지만 이를 처리할 수 있는 도구가 있습니다. 저는 webpack을 babel과 함께 사용하는 것을 좋아합니다. 물론 이것이 유일한 해결책은 아닙니다.
프로젝트의 루트에 일부 패키지를 추가합니다.
npm install --save-dev babel-loader babel-core babel-preset-env webpack
전체 웹팩 구성은 다른 기사를 채울 수 있으므로 작동하는 항목만 보여드리겠습니다. 몇 가지 지침이 포함된
webpack.config.js
라는 새 파일을 설정합니다.module.exports = {
entry: "./index.js", // Main file to read
module: {
rules: [{
test: /\.js$/, // For all file ending with ".js"
use: {
loader: "babel-loader", // Use babel
options: {
presets: ["babel-preset-env"],
},
},
}],
},
output: {
filename: "dist/unicorn.js", // Output the result in another file
library: "Unicorn", // Under "Unicorn" namespace
libraryTarget: "this",
libraryExport: "default",
},
};
그런 다음
npx webpack
를 실행하면 모든 소스가 일반 웹 브라우저에서 사용할 수 있는 하나의 파일로 빌드됩니다.관리
이제 많은 하위 모듈을 생성하고 모두 하나의 파일로 래핑할 수 있습니다. 하위 하위 모듈 등을 가질 수도 있습니다.
modules
디렉토리에 모두 넣으십시오.프로젝트가 커질수록 이 모든 동물원을 관리하기가 점점 더 어려워집니다.
lerna이 작동하는 곳.
npm install -save-dev lerna
스테로이드에 대한
npm link
로 생각하십시오.프로젝트 페이지에서 전체 문서를 확인하세요. 여기에 몇 가지 유용한 명령이 있습니다.
npx lerna clean # Remove all node_modules directories
npx lerna bootstrap # Install remote dependencies and link local ones
npx lerna add package # Install a package to all sub-modules
npx lerna add package --scope=sub-module # Install a package to a specific sub-module
npx lerna publish # Bump, tag and publish all your modules over NPM
즐기다
이제 가능한 한 가장 우아한 프로젝트를 작성할 수 있는 궤도에 올랐을 것입니다. 나는 너를 믿는다 ;)
보다 심층적인 예제를 원하신다면 저는 현재 동일한 기술을 사용하여 또 다른 예제JS drawing library를 만들고 있습니다.
다음 시간에는 자동화된 테스트와 많은 버그를 포착하고 시간이 지남에 따라 일관성을 보장하는 방법에 대해 이야기하겠습니다.
Reference
이 문제에 관하여(LEGO™를 플레이하는 것처럼 코딩하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/gmartigny/how-to-code-like-playing-lego--40fk
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(LEGO™를 플레이하는 것처럼 코딩하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gmartigny/how-to-code-like-playing-lego--40fk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)