javascript - 在 Meteor 1.3 中导入通过 npm 安装的外部 Javascript 库

标签 javascript node.js meteor npm ecmascript-6

我想使用 OpenSeadragon我的 Meteor 应用程序中的库。由于 Meteor 1.3 提供了对 npm 模块的支持,我使用 meteor npm install openseadragon 通过 npm 安装它。

但现在我不确定如何使用它。 OpenSeadragon 文档仅提供 example使用 script 标签

meteor docs告诉我们使用像 import moment from 'moment'; 这样的导入。但是我如何导入 openseadragon 因为我很确定它不使用 ES6 模块并且不导出任何东西。

如何使用 npm import 来使用它而不加载 openseadragon.js 作为整个应用程序的全局?

最佳答案

该项目的(记录不完整的)API 页面指出

OpenSeadragon will also return an AMD module when required with a loader like Require.js.

因此,在客户端脚本中,您可以简单地

import 'openseadragon';  // load globally

它应该给你模块构造函数

现在,根据您使用的是什么,您可以从该构造函数初始化您的容器。对于 React 容器,这看起来像这样:

import React, { Component } from 'react';
import { Random } from 'meteor/random';
import 'openseadragon';  // OpenSeadragon on global scope

export default class OpenSeedragonComponent extends Component {
  constructor(props) {
    super(props);

    this.state = {
      options: {
        id: Random.id(),   // container unique name
        // other options here...
      }
    };
  }

  componentDidMount() {
    this.initialiseWidgets();
  }

  componentDidUpdate() {
    this.initialiseWidgets();
  }

  initialiseWidgets() {
    this.viewer = OpenSeadragon(this.state.options);
  }

  render() {
    return (
      <div id={ this.state.options.id } 
           width={ this.props.width || '800px' }
           height={ this.props.height || '600px' }
      >
      </div>
    );
  }
};

注意:在撰写本文时,加载 .map 文件时会出现错误。忽略它,或打开一个 issue与项目维护者一起,以便他将项目与 Meteor 正确集成。也许有人会为它写一个 react/meteor 包包装器......

enter image description here

关于javascript - 在 Meteor 1.3 中导入通过 npm 安装的外部 Javascript 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38884298/

相关文章:

node.js - 如何将配置的 Passport 对象传递到 Express4 中的路由模块?

javascript - Meteor:查找具有最高值(value)的文档

javascript - 是否可以将 Rails 变量传递到 JavaScript 函数中?

javascript - 使用 Bower 和 Highcharts Shim 的 Chrome 开发编辑器

javascript - 在 Django 中使用 SIMPLE javascript 确认删除

android - 当我尝试上传新的时,我的 firebase 功能被删除了

javascript - 使用 proto.io 使开/关开关在 IE8 中工作

node.js - Nodejs 中的过程代码中未定义 Promise

javascript - Meteor-Up 问题 Mup 部署

javascript - 如何在 Meteor 中存储日期和时间以进行范围查询?