programing

필요한 Node.js ES6 클래스

yellowcard 2023. 9. 12. 19:57
반응형

필요한 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

반응형