微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

这段代码中的“导出默认类渲染”是什么,为什么要导出和使用它?

如何解决这段代码中的“导出默认类渲染”是什么,为什么要导出和使用它?

这是我第一次尝试创建具有django背景的C / C ++ / Python电子应用程序,但我不太了解这段代码中发生了什么。是来自这个仓库。 https://github.com/justinctlam/BabylonJS-Electron/blob/master/src/renderer.ts

为什么要导出同一脚本文件中使用的类? 这是电子的必需条件吗?

import * as BABYLON from 'babylonjs';

export default class Renderer {
    private _canvas: HTMLCanvasElement;
    private _engine: BABYLON.Engine;
    private _scene: BABYLON.Scene;

    createScene(canvas: HTMLCanvasElement,engine: BABYLON.Engine) {
        this._canvas = canvas;

        this._engine = engine;

        // This creates a basic Babylon Scene object (non-mesh)
        const scene = new BABYLON.Scene(engine);
        this._scene = scene;

        // This creates and positions a free camera (non-mesh)
        const camera = new BABYLON.FreeCamera("camera1",new BABYLON.Vector3(0,5,-10),scene);

        // This targets the camera to scene origin
        camera.setTarget(BABYLON.Vector3.Zero());

        // This attaches the camera to the canvas
        camera.attachControl(canvas,true);

        // This creates a light,aiming 0,1,0 - to the sky (non-mesh)
        const light = new BABYLON.HemisphericLight("light1",0),scene);

        // Default intensity is 1. Let's dim the light a small amount
        light.intensity = 0.7;

        // Our built-in 'sphere' shape. Params: name,subdivs,size,scene
        const sphere = BABYLON.Mesh.CreateSphere("sphere1",16,2,scene);

        // Move the sphere upward 1/2 its height
        sphere.position.y = 1;

        // Our built-in 'ground' shape. Params: name,width,depth,scene
        const ground = BABYLON.Mesh.CreateGround("ground1",6,scene);
    }

    initialize(canvas: HTMLCanvasElement) {
        const engine = new BABYLON.Engine(canvas,true);
        this.createScene(canvas,engine);

        engine.runRenderLoop(() => {
            this._scene.render();
        });

        window.addEventListener('resize',function () {
            engine.resize();
        });
    }
}

const renderer = new Renderer();
renderer.initialize(document.getElementById('render-canvas') as HTMLCanvasElement);

解决方法

当您使用同一文件时,可以使用不导出的类。但是,添加导出的目的是在导入的帮助下由其他程序重用您的代码。

有两种导出类型,一种叫做导出,另一种是默认导出。

在您的示例中,您使用了默认导出。默认导出对于导出单个对象,函数或变量很有用。您可以在导入时使用任何名称。

就像您可以导入的情况一样

import Render from './renderer';

在这里,我假设您已将此文件保存在renderer.js文件中。您可以看到我在导入时使用的名称是Render not Renderer。我之所以能够这样做,是因为该类正在使用默认导出。

要了解更多信息,请点击import export

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。