• Как правильно обозначить Title у динамических страниц во VueJS?

    wickinats
    @wickinats Автор вопроса
    >> После тестов выяснилось, что это подходит только для статики.

    Спасибо за ответы. Только сейчас зашёл на данный ресурс и только недавно закончил реализацию вот такого простого метода изменения Title через vue-компоненту с css-директивой display, выставленной в none.

    <template>
      <div>
    
      </div>
    </template>
    
    <script>
    export default {
      name: 'Title',
      props: {
        name: String
      },
    
      beforeMount() { document.title = this.name },
      beforeUpdate() { document.title = this.name }
    }
    </script>
    
    <style lang="scss" scoped>
      div { display: none; }
    </style>


    >>> Новый скрипт для динамического изменения Title:
    <!-- Title.vue -->
    <template>
      <div>
        {{ Title }}
      </div>
    </template>
    
    <script>
      import { mapState } from 'vuex'
    
      export default {
        name: 'Title',
        computed: mapState([ 'Title' ]),
    
        beforeMount() { document.title = this.Title },
        beforeUpdate() { document.title = this.Title }
      }
    </script>
    
    <style lang="scss" scoped>
      div { display: none; }
    </style>


    // App.vue
      import Menu from './components/Menu'
      import { mapState } from 'vuex';
    
    
      export default {
        name: 'Artefact',
        components: {
          Menu
        },
        
        computed: mapState([ 'Title' ]),
        watch: {
          Title(value) { document.title = value; } 
        }, created() {
          document.title = this.Title;
        }
      }


    // Store
    import Vue from 'vue'
    import Vuex from 'vuex'
    
    Vue.use(Vuex)
    
    export default new Vuex.Store({
      state: {
        Title: 'SSS+'
      }
    })
    Ответ написан
    Комментировать
  • Можно ли использовать Nodejs во Vue при написании программы на Electron?

    wickinats
    @wickinats Автор вопроса
    // test.vue
    
    const crypto = require('crypto');
    
      export default {
        methods: {
          test() {
            const secret = 'abcdefg';
            const hash = crypto.createHmac('sha256', secret)
                               .update('I love cupcakes')
                               .digest('hex');
            console.log(hash);
          }
        }
      }


    // electron.js
    
    const { app, BrowserWindow } = require("electron");
    
    function createWindow () {
      const win = new BrowserWindow({
        width: 1200,
        height: 600,
        webPreferences: {
          nodeIntegration: true
        }
      })
    
      win.setMenu(null);
      win.loadFile('./dist/index.html');
    }
    
    app.whenReady().then(createWindow)
    app.on('window-all-closed', () => {
      if (process.platform !== 'darwin') {
        app.quit()
      }
    })
    
    app.on('activate', () => {
      if (BrowserWindow.getAllWindows().length === 0) {
        createWindow()
      }
    })
    Ответ написан
    Комментировать
  • Почему Vuex-Electron не работает?

    wickinats
    @wickinats Автор вопроса
    Проблема решена:
    Причина подобного поведения является тот факт, что нынешняя версия Vuex-Electron попросту изобилует различными неурядицами и несовместимостями. Именно поэтому была предпринята попытка отладки прежнего кода на обычном Vuex.
    Так что же, собственно, решает проблему использования данного плагина в Electron-приложениях? Просто используйте стрелочные функции. Приведу следующий пример нынешнего использования стрелочной функции в компоненте Vue:

    this.$http.get(this.search_api_url).then((response) => {
      if(response.data.success) {
        this.$store.commit("set_Wall", response)
      } else {
          alert(response.data.error)
        }
     })


    В этом примере this работает ожидаемо, тогда как использование обычных функций приводит к проблемам с зонами видимости, которые попросту блокируют работу нашего приложения в экосистеме Electron.
    Ответ написан
    Комментировать