Webdeveloper
Местоположение
Россия, Москва и Московская обл., Москва

Наибольший вклад в теги

Все теги (15)

Лучшие ответы пользователя

Все ответы (7)
  • Как реализовывать "разные версии одного кода"?

    Vextor-ltd
    @Vextor-ltd
    Webdeveloper
    Да что тут можно придумать? Создаешь один общий класс для всех трёх типов пользователей, затем делаешь 3 класса наследника, расширяющих общий для всех класс. Ну и таким образом в зависимости от того, какой тип пользователя зашёл на сайт, делаешь инстанс соответствующего класса и работаешь с его методами.
    Ответ написан
    2 комментария
  • Как заставить скрипт постоянно отслеживать состояние объекта и реагировать если добавлен/удалён класс?

    Vextor-ltd
    @Vextor-ltd
    Webdeveloper
    На странице php-код управляет видимостью элементов интерфейса


    Бэк не не должен управлять видимостью элементов, он должен выдавать лишь данные. Всё остальное делай с помощью JS.
    Ответ написан
    1 комментарий
  • Gulp + webpack-stream. Как создать несколько точек входа с созданием одноимённых файлов на выходе?

    Vextor-ltd
    @Vextor-ltd Автор вопроса
    Webdeveloper
    Разобрался.

    1) Перебирать массив с файлами не нужно. С этим справляется gulp.src(). Надо просто передать туда массив.

    2) Ну и поскольку я прописываю в начале стартер кита все файлы и пути к ним для работы методом gulp.src(), в данном случае Entrypoint-файлы помещаются в массив:
    const path = {
        build: {
            /* ... */
            js: 'assets/build/js/',
            /* ... */
        },
        src: {
            /* ... */
            js: ['assets/src/js/main.js', 'assets/src/js/main-01-test.js']
    /* ... */


    ..то внутри функции для js-таска необходимо просто преобразовать этот массив в объект со свойствами, которые представляют из себя имена этих файлов без разрешений, и добавить это свойство в объект Вебпак конфига.
    Вот эта функция:

    function js_build() {
    
        let webpackConf = {
            mode: `${(devMode === true) ? 'development' : 'production'}`, // current mode for webpack
            output: {
                filename: `[name].js`,  // the same name as the source
                sourceMapFilename: '[name].map'
            },
            module: {
                rules: [
                    {
                        test: /\.(js)$/,    // get all js-files
                        exclude: /(node_modules)/, // exclude development modules folder
                        loader: 'babel-loader', // convert ES6 into a backwards compatible version of JS in older browsers
                        query: {
                            presets: ['@babel/env'] // use babel preset
                        }
                    },
                ]
            },
            optimization: {
                minimize: true,
                minimizer: [new TerserPlugin()],
            },
        };
    
        // convert Gulp array into entry property for Webpack
        let fileName = null;
        let entryObj = {};
        path.src.js.map((filePath) => {
          fileName = filePath.split('/').pop().split('.').slice(0, -1).join('.');
          entryObj[fileName] = filePath;
        });
    
        // add converted entry property to Webpack    
        webpackConf.entry = entryObj;
    
        return gulp.src(path.src.js)
            .pipe(webpackStream(webpackConf)).on('error', function handleError() {
                this.emit('end')
            })
            .pipe(gulp.dest(path.build.js))  // build js
            .pipe(rename({ suffix: '.min' })) // add suffix to the filename
            .pipe(gulp.dest(path.build.js)) // build final min js
            .pipe(browserSync.reload({ stream: true })); // browser-sync reload
    }
    
    exports.js_build = js_build;


    Короче, вот такая вот тема для Галпа с использованием Вебпака для билда js-файлов с несколькими энтрипоинтами. Может кому пригодится :)
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (56)