필요한 Node.js ES6 클래스
그래서 지금까지 저는 수업과 모듈을 만들었습니다.node.js
다음과 같은 방법:
var fs = require('fs');
var animalModule = (function () {
/**
* Constructor initialize object
* @constructor
*/
var Animal = function (name) {
this.name = name;
};
Animal.prototype.print = function () {
console.log('Name is :'+ this.name);
};
return {
Animal: Animal
}
}());
module.exports = animalModule;
이제 ES6를 사용하면 다음과 같은 "실제" 수업을 할 수 있습니다.
class Animal{
constructor(name){
this.name = name ;
}
print(){
console.log('Name is :'+ this.name);
}
}
자, 우선, 저는 이것을 좋아합니다 :) 하지만 그것은 의문을 불러일으킵니다.이것을 어떻게 조합하여 사용합니까?node.js
모듈 구조요?
시연을 위해 모듈을 사용하려는 클래스가 있다고 가정합니다.fs
따라서 파일을 생성합니다.
Animal.js
var fs = require('fs');
class Animal{
constructor(name){
this.name = name ;
}
print(){
console.log('Name is :'+ this.name);
}
}
이 방법이 맞을까요?
또한 이 클래스를 노드 프로젝트 내의 다른 파일에 어떻게 노출합니까?그리고 이 수업을 별도의 파일로 사용한다면 계속 연장할 수 있습니까?
이 질문들에 대답해주실 분들이 계시길 바랍니다 :)
예, 당신의 예는 잘 될 겁니다.
당신의 수업을 노출시키는 것에 관해서는, 당신은export
다른 수업들과 마찬가지로:
class Animal {...}
module.exports = Animal;
또는 더 짧은 것:
module.exports = class Animal {
};
다른 모듈로 가져오면 해당 파일에 정의된 것처럼 처리할 수 있습니다.
var Animal = require('./Animal');
class Cat extends Animal {
...
}
ES6 클래스 이름을 ES5 방식으로 처리했을 때와 동일하게 취급하면 됩니다.그들은 하나이고 똑같습니다.
ES6 구문은 구문적 설탕일 뿐이며 기본 프로토타입, 컨스트럭터 기능 및 객체가 정확히 동일하게 생성됩니다.
ES6의 예는 다음과 같습니다.
// animal.js
class Animal {
...
}
var a = new Animal();
module.exports = {Animal: Animal};
또는 수출 신고를 다음과 같이 단축할 수 있습니다.
module.exports = { Animal };
당신은 그냥 치료해도 됩니다.Animal
(ES5에서 했던 것과 동일한) 객체의 생성자와 같습니다.생성자를 내보낼 수 있습니다.당신은 다음과 같이 건설업자에게 전화할 수 있습니다.new Animal()
. 그것을 사용하는 것은 모든 것이 같습니다.선언 구문만 다릅니다.아직도 있습니다.Animal.prototype
당신의 모든 방법을 다 써놨습니다.ES6 방식은 사실 더 멋진/더 좋은 구문만으로 동일한 코딩 결과를 만들어냅니다.
가져오기 측면에서는 다음과 같이 사용됩니다.
const Animal = require('./animal.js').Animal;
let a = new Animal();
또는 다음과 같을 수도 있습니다.
const { Animal } = require('./animal.js');
let a = new Animal();
이 계획은 Animal Constructor를 다음과 같이 내보냅니다..Animal
해당 모듈에서 둘 이상의 것을 내보낼 수 있는 속성입니다.
둘 이상 내보낼 필요가 없는 경우 다음을 수행할 수 있습니다.
// animal.js
class Animal {
...
}
module.exports = Animal;
그런 다음 다음 다음을 사용하여 가져옵니다.
const Animal = require('./animal.js');
let a = new Animal();
ES6 요구 방식은import
.넌 할 수 있다.export
당신의 수업과 다른 곳으로 수입하기.import { ClassName } from 'path/to/ClassName'
통사론
import fs from 'fs';
export default class Animal {
constructor(name){
this.name = name ;
}
print(){
console.log('Name is :'+ this.name);
}
}
import Animal from 'path/to/Animal.js';
노드에서 클래스 사용 -
여기서는 ReadWrite 모듈을 요구하고 ReadWrite 클래스의 개체를 반환하는 makeObject()를 호출합니다.방법을 부를 때 사용하는 방법입니다.index.js
const ReadWrite = require('./ReadWrite').makeObject();
const express = require('express');
const app = express();
class Start {
constructor() {
const server = app.listen(8081),
host = server.address().address,
port = server.address().port
console.log("Example app listening at http://%s:%s", host, port);
console.log('Running');
}
async route(req, res, next) {
const result = await ReadWrite.readWrite();
res.send(result);
}
}
const obj1 = new Start();
app.get('/', obj1.route);
module.exports = Start;
ReadWrite.js
여기서는 객체가 없는 경우에만 객체가 반환되도록 하는 makeObject 방법을 만듭니다.
class ReadWrite {
constructor() {
console.log('Read Write');
this.x;
}
static makeObject() {
if (!this.x) {
this.x = new ReadWrite();
}
return this.x;
}
read(){
return "read"
}
write(){
return "write"
}
async readWrite() {
try {
const obj = ReadWrite.makeObject();
const result = await Promise.all([ obj.read(), obj.write()])
console.log(result);
check();
return result
}
catch(err) {
console.log(err);
}
}
}
module.exports = ReadWrite;
자세한 설명은 https://medium.com/ @nynptel/node-js-flat-code-using-singleton-flat-5b479e513f74를 참조하십시오.
클래스 파일에서 다음을 사용할 수 있습니다.
module.exports = class ClassNameHere {
print() {
console.log('In print function');
}
}
아니면 이 구문을 사용할 수 있습니다.
class ClassNameHere{
print(){
console.log('In print function');
}
}
module.exports = ClassNameHere;
다른 파일에서 이 클래스를 사용하려면 다음 단계를 수행해야 합니다. 다음합니다:저음을여당다이다이당tsgt:여xe .const anyVariableNameHere = require('filePathHere');
를 를 객체로 만듭니다.const classObject = new anyVariableNameHere();
이 후에 사용할 수 있습니다.classObject
변수에 하다, 접근하다, 접근하다, 접근하다, 하다, 접근하다, 접근하다, 접근하다, 접근.
언급URL : https://stackoverflow.com/questions/42684177/node-js-es6-classes-with-require
'programing' 카테고리의 다른 글
정렬을 위한 Varchar to number 변환 (0) | 2023.09.12 |
---|---|
CLOWER_Bound 구현 (0) | 2023.09.12 |
jquery가 없는 맨 위 애니메이션 스크롤 (0) | 2023.09.12 |
도커 컨테이너가 출구 코드 1과 함께 바로 나가는 이유는 무엇입니까? (0) | 2023.09.12 |
다중 인덱스 데이터 프레임에서 레벨을 제거하는 방법은 무엇입니까? (0) | 2023.09.12 |