Предварительно загружение блоков

В итоге я создал два разных CSS-файла с использованием пакета extract-text-webpack-plugin npm.

      {
        test: /style\/.*\.scss$/,
        use: styleCss.extract({
          use: ['css-loader', 'sass-loader']
        })
      },
      {
        test: /app-rtl\/.*\.scss$/,
        use: styleRtlCss.extract({
          use: ['css-loader', 'sass-loader']
        })
      },
      {
        test: /commonStyle\/.*\.scss$/,
        use: ['css-loader', 'sass-loader']
      },

Затем загрузили один из стилей на основе значения каталога

Routers.js

class Routes extends Component {
constructor(props) {
    super(props);

    this.state = {
        stylePath: loadStyle(props.direction)
    }
    const defaultLanguage = props.customer.defaultLang || LOCAL_LANGUAGES[0].code;

    props.InitializeDefaultLang(defaultLanguage);
    props.getVehicles();
    props.getCountriesOnly(defaultLanguage);
    props.changeDefaultDirection(defaultLanguage);
}
componentDidUpdate = (prevProps, prevState) => {
    if (prevProps.direction !== this.props.direction) {
      this.setState({
        stylePath: loadStyle(this.props.direction)
      })
    }
  }

return (
     <div>
       <link rel="stylesheet" type="text/css" href={this.state.stylePath} />
     </div>
 )

config.js

export default function loadStyle(direction) {

  if (direction === 'ltr') {
    return '/style.css';

  } else {
    return '/style-rtl.css';
  }
}

Надеюсь, это поможет если кто-то столкнулся с той же проблемой. Единственная проблема здесь в том, что для смены стиля требуется вечность.

Я просто оставлю это и использую Node.

7
задан starblue 25 April 2009 в 09:02
поделиться

5 ответов

взгляните на блок. Методы загрузки.

Gero

0
ответ дан 7 December 2019 в 07:51
поделиться

Другой выбор состоит в том, чтобы вынудить JIT загрузить блоки, асинхронные вместо того, чтобы делать его вручную. Прием должен просто вызвать конструктора управления, таким образом, Монета в пять центов знает, что это должно начать компилировать тот конкретный путь выполнения кода. Обычно это вынуждает это загрузить все подчиненные блоки. Просто удостоверьтесь, что окружили вызов конструктора выгодой попытки.

Пример того, как сделать это во время загрузки:

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        PreJitControls();

        Application.Run(new Form1());
    }

    private static void PreJitControls()
    {           
        ThreadPool.QueueUserWorkItem((t) =>
        {
            Thread.Sleep(1000); // Or whatever reasonable amount of time
            try
            {
                AssemblyPullingControl1 c = new AssemblyPullingControl1();
            }
            catch (Exception) { }

            try
            {
                AssemblyPullingControl2 c = new AssemblyPullingControl2();
            }
            catch (Exception) { }

        });
    }
}

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

4
ответ дан 7 December 2019 в 07:51
поделиться

Я не уверен, но я предполагаю, что не фактическая загрузка блоков является трудоемкой частью - но вероятно компиляция JIT пути выполнения кода. Возможно, Вы хотите посмотреть на ngen., мог быть то, что он заставляет проблему производительности уйти. но обязательно поймите последствия того инструмента.

Ссылки: - http://msdn.microsoft.com/en-us/library/6t9t5wcf.aspx - http://msdn.microsoft.com/en-us/magazine/cc163610.aspx

1
ответ дан 7 December 2019 в 07:51
поделиться

При попытке получить свои блоки быстрее, почему бы не взглянуть на NGEN для Вашего кода. Пред JIT все в фоновом режиме. Это имеет за и против, хотя в зависимости от того, что делает Ваше приложение.

0
ответ дан 7 December 2019 в 07:51
поделиться

Это однако вынудит Ваших пользователей всегда получить тот удар на запуске.

В целом это - плохая идея (если у Вас есть хит, по крайней мере, задерживают его, пока Вам действительно не нужен он). Случай, где это могло бы помочь, должен инициировать загрузку, если существует сильный шанс, что они собираются использовать функциональность в ближайшем будущем, но система в других отношениях неактивна. Это может быть очень трудно сделать точно все же.

Вы могли бы видеть, находится ли какой-либо из загруженных блоков под Вашим контролем и в GAC. Раз так Вы могли ngen их, которые могут иметь значительный эффект на время запуска этого аспекта Вашего UI.

2
ответ дан 7 December 2019 в 07:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: