Usando vue.js con interfaz de usuario semántica


Estoy tratando de usar webpack + INTERFAZ de usuario semántica con Vue.js y yo encontramos esta biblioteca https://vueui.github.io /

Pero hubo un problema compling:

ERROR in ./~/vue-ui/components/sidebar/sidebar.jade
Module parse failed: /Project/node_modules/vue-    
ui/components/sidebar/sidebar.jade Unexpected token (1:24)
You may need an appropriate loader to handle this file type.

Así que instalé jade(pug) pero todavía no hubo suerte.

Y hay comentarios en github para esa lib:

WIP, no usar ( https://github.com/vueui/vue-ui )

He logrado importar css semántico en mis plantillas de esta manera:

@import './assets/libs/semantic/dist/semantic.min.css';

Pero el problema aquí es que no puedo usar semántica.js funciona como dimmer y otras cosas.

La cosa es que ya tengo alguna base de código antigua escrita con semántica y sería bueno no usar ningún otro framework css (bootstrap o materialize).

¿Hay alguna forma elegante de incluir la interfaz de usuario semántica en mi SDV?js proyecto?

Author: T0plomj3r, 2016-04-17

4 answers

1) Instale jQuery si no está instalado (correctamente!):

  • npm install --save jquery
  • Luego en su webpack.config archivo (acabo de agregarlo en webpack.dev.config.js, pero quizás agregarlo en el archivo de configuración prod):

    En los plugins añadir un new webpack.ProvidePlugin

    new webpack.ProvidePlugin({
        // jquery
        $: 'jquery',
        jQuery: 'jquery',
        'window.jQuery': 'jquery'
    })
    

    Ahora jQuery está disponible para TODAS las aplicaciones y componentes.

Lo bueno es que ahora es el mismo proceso para TODAS tus bibliotecas externas que quieras usar (Numeral, Momento, etc..), y por supuesto semantic-ui!

Vamos: {[14]]}

  • npm install --save semantic-ui-css

nb: puedes usar el repositorio principal (es decir, semantic-ui) pero semantic-ui-css es el tema base para semantic-ui.

Así que, ahora, tienes que, en primer lugar, definir alias en el webpack.basar.config.js archivo:

En resolve.alias agregue el alias para semántica:

resolve: {
    extensions: ['', '.js', '.vue'],
    fallback: [path.join(__dirname, '../node_modules')],
    alias: {
      'src': path.resolve(__dirname, '../src'),
      'assets': path.resolve(__dirname, '../src/assets'),
      'components': path.resolve(__dirname, '../src/components'),
      // adding our externals libs
      'semantic': path.resolve(__dirname, '../node_modules/semantic-ui-css/semantic.min.js')
    }
  }

Nb: usted puede poner allí sus otros alias libs externos :

// adding our externals libs
      'moment': path.resolve(__dirname, '../node_modules/moment/min/moment-with-locales.js'),
      'numeral': path.resolve(__dirname, '../node_modules/numeral/min/numeral.min.js'),
      'gridster': path.resolve(__dirname, '../node_modules/gridster/dist/jquery.gridster.min.js'),
      'semantic': path.resolve(__dirname, '../node_modules/semantic-ui-css/semantic.min.js'),
      'stapes': path.resolve(__dirname, '../node_modules/stapes/stapes.min.js')

Nb: use su propio camino allí (normalmente deberían parecerse a esos !)

...estamos a punto de terminar...

El siguiente paso es agregar una referencia de alias al proveedor del plugin, como hacemos con jQuery=)

new webpack.ProvidePlugin({
      // jquery
      $: 'jquery',
      jQuery: 'jquery',
      'window.jQuery': 'jquery',
      // semantic-ui | TODO : is usefull since we import it
      semantic: 'semantic-ui-css',
      Semantic: 'semantic-ui-css',
      'semantic-ui': 'semantic-ui-css'
})

Nb : aquí uso varios nombres, tal vez semántica es solo suficiente; -)

De nuevo, puede agregar su lib / alias allí:

new webpack.ProvidePlugin({
      // jquery
      $: 'jquery',
      jQuery: 'jquery',
      'window.jQuery': 'jquery',
      // gridster
      gridster: 'gridster',
      Gridster: 'gridster',
      // highcharts
      highcharts: 'highcharts',
      Highcharts: 'highcharts',
      // semantic-ui | TODO : is usefull since we import it
      semantic: 'semantic-ui-css',
      Semantic: 'semantic-ui-css',
      'semantic-ui': 'semantic-ui-css',
      // Moment
      moment: 'moment',
      Moment: 'moment',
      // Numeral
      numeral: 'numeral',
      Numeral: 'numeral',
      // lodash
      '_': 'lodash',
      'lodash': 'lodash',
      'Lodash': 'lodash',
      // stapes
      stapes: 'stapes',
      Stapes: 'stapes'
    })

Aquí están todas las libs externas que estoy usando en mi propio proyecto (se puede ver gridster, que es un plugin de jQuery - como semantic-ui es !)

Así que ahora, solo una última cosa que hacer: {[14]]}

  • Añadir css semántico:

    Hago esto agregando esta línea al principio de la principal.js archivo:

    import '../node_modules/semantic-ui-css/semantic.min.css'

Luego, después de esta línea añadir:

import semantic from 'semantic'

Ahora puedes usarlo.

Ejemplo en mi archivo Vuejs:

<div class="dimension-list-item">
  <div class="ui toggle checkbox"
    :class="{ disabled : item.disabled }">
      <input type="checkbox"
        v-model="item.selected"
        :id="item.id"
        :disabled="item.disabled">
      <label :class="{disabled : item.disabled}" :for="item.id">{{item.label}} / {{item.selected}}</label>
  </div>
</div>

Este fragmento crea una celda simple para un lista con una casilla de verificación.

Y en la escritura:

export default {
  props: ['item'],
  ready() {    
    $(this.$el.childNodes[1]).checkbox()
  }
}

Aquí el resultado:

Sample1

Sample2

Normalmente, todo debería funcionar bien.

Acabo de empezar a desarrollar con Vuejs la semana pasada, así que, tal vez hay es una mejor manera de que; -)

 33
Author: Yome Katsuma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-06 01:36:16

Un poco tarde, pero ahora puedes usar esto: https://github.com/Semantic-UI-Vue/Semantic-UI-Vue . Todavía WIP pero tiene todas las funcionalidades básicas.

Bastante fácil de usar:

import Vue form 'vue';
import SuiVue from 'semantic-ui-vue';

/* ... */

Vue.use(SuiVue);

var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  },
  template: '<sui-button primary>{{message}}</sui-button>'
});

Las APIs son muy similares a la versión de React: si la usaste, esto te resultará muy familiar.

Aquí es un JSFiddle si quieres jugar: https://jsfiddle.net/pvjvekce/

Descargo de responsabilidad: Yo soy el creador

 4
Author: Mario Lamacchia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-05 10:21:22

Esta es la forma en que lo hago: (nota: uso vue-cli para crear mis proyectos)

  • cd a su directorio de proyecto vue y haga lo siguiente:

1-instalar gulp:

npm install -g gulp

2 - Ejecute los siguientes comandos y siga las instrucciones de la instalación.

npm install semantic-ui --save
cd semantic/
gulp build

3 - Después de ejecutar los comandos anteriores, debe tener una carpeta "dist" dentro de su carpeta "semántica". Mover esta carpeta a la carpeta "/ static " ubicada en la raíz de la proyecto.

4-Incluya las siguientes líneas en su archivo de plantilla html:

<link rel="stylesheet" type="text/css" href="/static/dist/semantic.min.css">
<script
  src="https://code.jquery.com/jquery-3.1.1.min.js"
  integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="
  crossorigin="anonymous"></script>
<script src="/static/dist/semantic.js"></script>
 1
Author: Benjamin Rodriguez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-18 21:22:52
  1. Instalar jquery npm install jquery
  2. Instalar semantic-ui-css npm install semantic-ui-css
  3. Agregue esto en main.js

window.$ = window.jQuery = require('jquery') require('semantic-ui-css/semantic.css') require('semantic-ui-css/semantic.js')

 0
Author: Sanyam Jain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-05 09:45:06