Slick.Grid не является конструктором

Я использую slickgrid на Symfony4

Symfony4 использует систему webpack.

Итак, мой исходный код такой,

но он показывает ошибку

Slick.Grid is not a constructor

Обычно эта ошибка означает, что переменная не загружается, однако я не могу понять, где не так.

в app.js

var $ = require('jquery');
require('bootstrap');
require('slickgrid');

console.info(Slick); // it shows in console `{Event: ƒ, EventData: ƒ, EventHandler: ƒ, Range: ƒ, NonDataRow: ƒ, …}`


$(document).ready(function() {

    var grid;
    var columns = [
      {id: "title", name: "Title", field: "title"},
      {id: "duration", name: "Duration", field: "duration"},
      {id: "%", name: "% Complete", field: "percentComplete"},
      {id: "start", name: "Start", field: "start"},
      {id: "finish", name: "Finish", field: "finish"},
      {id: "effort-driven", name: "Effort Driven", field: "effortDriven"}
    ];

    var options = {
      enableCellNavigation: true,
      enableColumnReorder: false
    };

      var data = [];
      for (var i = 0; i < 500; i++) {
        data[i] = {
          title: "Task " + i,
          duration: "5 days",
          percentComplete: Math.round(Math.random() * 100),
          start: "01/01/2009",
          finish: "01/05/2009",
          effortDriven: (i % 5 == 0)
        };
      }
      grid = new Slick.Grid("#myGrid", data, columns, options);

});
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
1 139
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Slickgrid - это плохо написанная библиотека с плохим поведением, например, полагаясь на глобальные переменные, полагаясь на объект окна, и имея побочные эффекты, просто загружая библиотеку.

Опция 1

Чтобы использовать такие опасно спроектированные библиотеки в современных проектах, вам необходимо использовать их современные их вилки. Вместо этого используйте slickgrid-es6.

Вариант 2

Если вы хотите продолжать использовать несовременную версию в npm, похоже, вам нужно сделать:

require('slickgrid/slick.core.js')
require('slickgrid/slick.grid.js')

И тогда у вас будет доступ к глобальным Slick и Slick.Core. Это не рекомендуется, потому что библиотека следует плохим практикам и, несмотря на то, что она опубликована в npm, не соответствует никаким стандартам npm. Особенно страшно, что это вообще не задокументировано в пакете npm. Это обновление не связано с этой проблемой.

Вариант 3

Или, если вы предпочитаете не использовать инструменты сборки, вы можете просто включить тег сценария SlickGrid и использовать глобальные переменные Slick и Slick.Grid.

Спасибо за комментарий. Я использую slickgrid, установленный npm npmjs.com/package/slickgrid, этот slickgrid выглядит хорошо обслуживаемым.

whitebear 29.10.2018 08:29

Большое спасибо @Andy Ray !!! Это объяснение действительно помогает разобраться в ситуации. Я не думал, что slickgrid от npm устарел. Попробую slickgrid-es6 или вариант3.

whitebear 30.10.2018 00:40

Я сопровождаю репозиторий 6pac. Я преимущественно использую ASP .NET, у которого есть собственная система пакетирования, и никогда не касался NPM. Форк 6pac просто поддерживает исходное репо. Поддержка NPM была добавлена ​​по запросу, просто как система доставки, а не как система упаковки. С упаковкой возились разные люди, но мне не удалось найти никого, кто действительно разбирается в этом. Если вы хотите написать предупреждение, я буду рад его опубликовать. Однажды у меня будет время исследовать NPM и, возможно, внедрить это в свои проекты.

Ben McIntyre 30.10.2018 11:33

Я совершенно счастлив перейти на репозиторий ES6, который продолжается (честно говоря, у меня нет времени на то, чтобы поддерживать проект должным образом), это просто вопрос оценки его стабильности и набора функций и разработки того, как использовать экспорт NPM / система импорта.

Ben McIntyre 30.10.2018 11:37

Я считаю, что комментарий в варианте 2 doesn't follow any npm standards - это неправильный, NPM - это просто диспетчер пакетов, он используется только для загрузки пакетов. Вместо этого следует написать, что SlickGrid не написан на ES6, и причина проста: библиотеке более 10 лет, а ES6 в то время не существовал. Поэтому я предлагаю этому человеку провести настоящее исследование, а не критиковать проект с открытым исходным кодом, набравший 10 тысяч голосов. Также обратите внимание, что я участвую в этой библиотеке, и мне немного неприятно видеть такой неправильный ответ, пожалуйста, обновите свой ответ, указав правильную информацию.

ghiscoding 27.11.2018 05:52

Написание на ES3 не связано с тем, что он плохой актер npm

Andy Ray 27.11.2018 07:00

Я останусь со своим предыдущим постом, NPM - это менеджер пакетов, и он не имеет ничего общего с библиотекой, написанной на ES3 или ES6. Извлечение пакета (который просто загружает код в папку node_modules) не имеет ничего общего с тем, как вы используете (или импортируете) библиотеку в своем проекте. То, что вы имеете в виду, является модулями, опять же, это не имеет ничего общего с NPM как диспетчером пакетов. Я понимаю, что вы хотите упомянуть, что трудно использовать библиотеку в новом мире ES6 и модулей, и я понимаю это, но это еще одна тема, не имеющая отношения к самому NPM.

ghiscoding 28.11.2018 00:44

@Andy Ray: Да, slickgrid-es6 выглядит более актуальным, поэтому вчера я попробовал его, используя информацию из [ссылка] (github.com/DimitarChristoff/slickgrid-es6). Но я не нашел расположение файла grid-config, который требуется, как указано в заявлении: import { options, columns } from './grid-config'; в примере. Где это находится ?

Lex Soft 24.03.2019 08:12

@Ben McIntyre Вы также участвуете в slickgrid.net? На этой странице автор упоминает ag-Grid, который я в настоящее время использую (версию сообщества) для своего проекта. К сожалению, некоторые функции, такие как группировка, доступны только в платной версии. Поэтому я ищу другую библиотеку для этой цели. Затем я вспомнил о slickgrid и обнаружил, что он отвечает моим потребностям. В моем приложении используется React 16.7, поэтому мне нужно интегрировать slickgrid в React. Вчера я быстро исследовал его, но нашел только 1 библиотеку, то есть React-Slickgrid, но она основана на старой библиотеке. Так что я, вероятно, буду использовать slickgrid-es6 и сам оберну его в React.

Lex Soft 24.03.2019 08:30

Я считаю, что slickgrid-es6 - единственная доступная библиотека для современной (ES6) версии. React-slickgrid выглядит основанным на старой библиотеке, поэтому я не буду использовать ее для своего приложения React. Я надеюсь, что сообщество slickgrid внесет свой вклад в развитие slickgrid, потому что среди других библиотек сеток полностью бесплатно это единственная, которая отвечает моим потребностям. Редактируемые, группировка - мое требование. Я также надеюсь, что Майкл Лейбман в конечном итоге снова внесет свой вклад. :)

Lex Soft 24.03.2019 08:39

Да, я собрал slickgrid.net. Я не думаю, что MLeibman вернется: - (но если бы он вернулся, он бы перешел на современную ветку (вероятно, 6pac). Re slickgrid-es6, он выглядит старым, см. Мой комментарий к stackoverflow.com/questions/53293466/…

Ben McIntyre 26.03.2019 01:40

Другие вопросы по теме