Я использую 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);
});



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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.
Большое спасибо @Andy Ray !!! Это объяснение действительно помогает разобраться в ситуации. Я не думал, что slickgrid от npm устарел. Попробую slickgrid-es6 или вариант3.
Я сопровождаю репозиторий 6pac. Я преимущественно использую ASP .NET, у которого есть собственная система пакетирования, и никогда не касался NPM. Форк 6pac просто поддерживает исходное репо. Поддержка NPM была добавлена по запросу, просто как система доставки, а не как система упаковки. С упаковкой возились разные люди, но мне не удалось найти никого, кто действительно разбирается в этом. Если вы хотите написать предупреждение, я буду рад его опубликовать. Однажды у меня будет время исследовать NPM и, возможно, внедрить это в свои проекты.
Я совершенно счастлив перейти на репозиторий ES6, который продолжается (честно говоря, у меня нет времени на то, чтобы поддерживать проект должным образом), это просто вопрос оценки его стабильности и набора функций и разработки того, как использовать экспорт NPM / система импорта.
Я считаю, что комментарий в варианте 2 doesn't follow any npm standards - это неправильный, NPM - это просто диспетчер пакетов, он используется только для загрузки пакетов. Вместо этого следует написать, что SlickGrid не написан на ES6, и причина проста: библиотеке более 10 лет, а ES6 в то время не существовал. Поэтому я предлагаю этому человеку провести настоящее исследование, а не критиковать проект с открытым исходным кодом, набравший 10 тысяч голосов. Также обратите внимание, что я участвую в этой библиотеке, и мне немного неприятно видеть такой неправильный ответ, пожалуйста, обновите свой ответ, указав правильную информацию.
Написание на ES3 не связано с тем, что он плохой актер npm
Я останусь со своим предыдущим постом, NPM - это менеджер пакетов, и он не имеет ничего общего с библиотекой, написанной на ES3 или ES6. Извлечение пакета (который просто загружает код в папку node_modules) не имеет ничего общего с тем, как вы используете (или импортируете) библиотеку в своем проекте. То, что вы имеете в виду, является модулями, опять же, это не имеет ничего общего с NPM как диспетчером пакетов. Я понимаю, что вы хотите упомянуть, что трудно использовать библиотеку в новом мире ES6 и модулей, и я понимаю это, но это еще одна тема, не имеющая отношения к самому NPM.
@Andy Ray: Да, slickgrid-es6 выглядит более актуальным, поэтому вчера я попробовал его, используя информацию из [ссылка] (github.com/DimitarChristoff/slickgrid-es6). Но я не нашел расположение файла grid-config, который требуется, как указано в заявлении: import { options, columns } from './grid-config'; в примере. Где это находится ?
@Ben McIntyre Вы также участвуете в slickgrid.net? На этой странице автор упоминает ag-Grid, который я в настоящее время использую (версию сообщества) для своего проекта. К сожалению, некоторые функции, такие как группировка, доступны только в платной версии. Поэтому я ищу другую библиотеку для этой цели. Затем я вспомнил о slickgrid и обнаружил, что он отвечает моим потребностям. В моем приложении используется React 16.7, поэтому мне нужно интегрировать slickgrid в React. Вчера я быстро исследовал его, но нашел только 1 библиотеку, то есть React-Slickgrid, но она основана на старой библиотеке. Так что я, вероятно, буду использовать slickgrid-es6 и сам оберну его в React.
Я считаю, что slickgrid-es6 - единственная доступная библиотека для современной (ES6) версии. React-slickgrid выглядит основанным на старой библиотеке, поэтому я не буду использовать ее для своего приложения React. Я надеюсь, что сообщество slickgrid внесет свой вклад в развитие slickgrid, потому что среди других библиотек сеток полностью бесплатно это единственная, которая отвечает моим потребностям. Редактируемые, группировка - мое требование. Я также надеюсь, что Майкл Лейбман в конечном итоге снова внесет свой вклад. :)
Да, я собрал slickgrid.net. Я не думаю, что MLeibman вернется: - (но если бы он вернулся, он бы перешел на современную ветку (вероятно, 6pac). Re slickgrid-es6, он выглядит старым, см. Мой комментарий к stackoverflow.com/questions/53293466/…
Спасибо за комментарий. Я использую slickgrid, установленный npm npmjs.com/package/slickgrid, этот slickgrid выглядит хорошо обслуживаемым.