Как использовать специфическую для браузера библиотеку vanilla JS для реагирования на зависимости? - PullRequest
0 голосов
/ 25 апреля 2019

js / реагировать на продукт со шлюзом janus webrtc. Я пытаюсь использовать библиотеку janus.js, предоставленную в исходном коде meetecho janus-gateway, поскольку я знаю, что:

A: Эта библиотека проверит, совместим ли браузер с Janus. B: Эта библиотека поддерживается основной командой и обновляется.

Так что я знаю, что мне уже придется отказаться от JSX и использовать либо jQuery, либо стандартный JavaScript для манипулирования пустым значением, предоставленным реагировать.

Мне просто нужно знать, как импортировать скрипты, предназначенные для импорта через тег скрипта в html, который сам по себе также имеет зависимости. Желательно, чтобы я пытался не загружать его на каждой странице сайта, используя заглушку index.html. Проект становится довольно большим и тяжелым, как есть.

Наихудшее приходит к худшему, мне просто нужно использовать один из других API (например, restful API meetecho) и самостоятельно проверять совместимость браузера. Но я бы предпочел не повторять всю эту работу, если мне не нужно. А также не нужно пытаться выяснить, как соединения webrtc работают так рано на этапе создания прототипа.

Просто пытаюсь сначала заставить работать зависимость jQuery:

//import $ from '../Api/janus/jquery.min.js';

//import $ from 'jquery';
//import jQuery from 'jquery';
//import adapter from 'webrtc-adapter';
const jQuery = require('jquery');

import {Janus as JanusAPI} from "../Api/janus/janus.js";

Журнал ошибок:

./src/Api/janus/janus.js
  Line 55:    'error' is not defined    no-undef
  Line 56:    'error' is not defined    no-undef
  Line 57:   'error' is not defined    no-undef
  Line 98:   'adapter' is not defined  no-undef
  Line 161:  'jQuery' is not defined   no-undef
  Line 167:  'adapter' is not defined  no-undef

Search for the keywords to learn more about each error.

1 Ответ

0 голосов
/ 03 мая 2019

Привет, подумал, что я отвечу на свой пост, так как я продвинулся немного дальше.

Если вы хотите, чтобы npm распознал Януса как модуль, этот фрагмент документации имеет основы:

https://janus.conf.meetecho.com/docs/js-modules.html

Скорее всего, вам потребуется изменить точку входа проекта janus-gateway npm, чтобы импортировать необходимые зависимости, прежде чем накопительный пакет npm свернет модуль.

Затем вам придется изменитьКонфигурация свертки для включения зависимостей в модуль или поиска их в проекте, в который импортируется модуль. Хорошую отправную точку для того, как сделать это с помощью свертки, можно найти здесь:

https://engineering.mixmax.com/blog/rollup-externals

мой module.js из проекта janus-gateway / npm

/* eslint-disable */
/*
 * Module shim for rollup.js to work with.
 * Simply re-export Janus from janus.js, the real 'magic' is in the rollup config.
 *
 * Since this counts as 'autogenerated' code, ESLint is instructed to ignore the contents of this file when linting your project.
 */
//var adapter = require('webrtc-adapter');
import adapter from 'webrtc-adapter';

@JANUS_CODE@

export default Janus;

И rollup.config.js

import resolve from 'rollup-plugin-node-resolve';
import commonJS from 'rollup-plugin-commonjs';

import replace from 'rollup-plugin-replace';
import * as fs from 'fs';

export default {
    name: 'Janus',
    input: 'module.js',
    output: {
        strict: false
    },
    plugins: [
        resolve(),
        commonJS({
//              namedExports: {
//
//              }
                include: 'node_modules/**'
        }),
        replace({
            JANUS_CODE: fs.readFileSync('../html/janus.js', 'utf-8'),
            delimiters: ['@','@'],
            includes: 'module.js'
        })
    ]
};

Не получилдля реализации любого пользовательского интерфейса с Janus с помощью этого метода, но у меня по крайней мере есть API для инициализации с зависимостями по умолчанию, и он может создавать / уничтожать сеансы и подключать плагины к упомянутым сеансам.

Надеюсь, это поможет:)

...