L'aide de vue.js avec interface utilisateur sémantique

J'essaie d'utiliser webpack + interface utilisateur sémantique avec Vue.js et moi avons trouvé cette bibliothèque https://vueui.github.io/

Mais il y avait problème 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.

J'ai donc installé Jade (Carlin) mais toujours pas de chance.

Et il y a un commentaire dans github pour cette lib:

WIP, ne pas utiliser de ( https://github.com/vueui/vue-ui )

J'ai réussi à importer du CSS sémantique dans Mes modèles comme ceci:

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

Mais le problème ici est que je ne peux pas utiliser sémantique.js fonctionne comme gradateur et d'autres choses.

Le fait est que j'ai déjà une ancienne base de code écrite avec sémantique et il serait bon de ne pas utiliser d'autre framework css (bootstrap ou materialize).

Existe-t-il un moyen élégant d'inclure l'interface utilisateur sémantique dans ma vue.projet js?

25
demandé sur T0plomj3r 2016-04-17 15:02:15

4 réponses

1) Installez jQuery s'il n'est pas installé (correctement!):

  • npm install --save jquery
  • Puis dans votre webpack.config fichier (je viens de l'ajouter dans webpack.dev.config.js , mais peut-être l'ajouter dans le fichier de configuration prod):

    Dans les plugins ajouter un new webpack.ProvidePlugin

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

    Maintenant, jQuery est disponible pour toutes les applications et tous les composants.

La bonne chose est que c'est maintenant le même processus pour toutes vos bibliothèques externes que vous voulez utiliser (Chiffre Moment, etc..), et bien sûr sémantique-ui!

Allons-y:

  • npm install --save semantic-ui-css

nb: vous pouvez utiliser le repo principal (c'est-à-dire semantic-ui) mais semantic-ui-CSS est le thème de base pour semantic-ui.

Donc, maintenant, vous devez d'abord définir des alias dans le webpack.base.config.js fichier :

Sous resolve.alias ajoutez l'alias pour sémantique:

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 :, vous pouvez y mettre vos autres libs externes alias :

// 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: utilisez votre propre chemin là-bas (normalement ils devraient ressembler à ceux-là !)

...nous sommes sur le point de terminer...

L'étape suivante consiste à ajouter une référence d'alias au fournisseur du plugin, comme nous le faisons juste pour 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 : ici j'utilise plusieurs noms, peut-être que sémantique {[23] } est seulement suffisant ; -)

Encore une fois, vous pouvez y ajouter votre lib / alias:

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'
    })

Voici toutes les bibliothèques externes que j'utilise dans la mienne projet (vous pouvez voir gridster, qui est un plugin jQuery - comme semantic-ui est !)

, Donc maintenant, juste une dernière chose à faire :

  • Ajouter CSS sémantique:

    Je le fais en ajoutant cette ligne au début du principal.js fichier :

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

Ensuite, après cette ligne Ajouter:

import semantic from 'semantic'

Maintenant, vous pouvez l'utiliser.

Exemple dans mon fichier 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>

Cet extrait crée une cellule simple pour liste avec une case à cocher.

Et dans le script :

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

Voici le résultat :

Sample1

Sample2

Normalement, tout devrait fonctionner.

Je viens de commencer à développer avec Vuejs la semaine dernière, alors, peut-être là est un meilleur moyen de cela; -)

33
répondu Yome Katsuma 2016-12-06 01:36:16

Un peu en retard, mais maintenant vous pouvez utiliser ceci: https://github.com/Semantic-UI-Vue/Semantic-UI-Vue . Toujours WIP mais il a toutes les fonctionnalités de base.

Assez facile à utiliser:

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>'
});

Les API sont très similaires à la version React: si vous l'avez utilisée, cela sera très familier.

Voici un JSFiddle si vous souhaitez jouer: https://jsfiddle.net/pvjvekce/

Avertissement: je suis le créateur

4
répondu Mario Lamacchia 2017-10-05 10:21:22

C'est comme ça que je le fais: (remarque: j'utilise la vue-cli pour créer mes projets)

  • cd dans le répertoire de votre projet vue et procédez comme suit:

1 - installer gulp:

npm install -g gulp

2 - Exécutez les commandes suivantes et suivez les instructions de l'installation.

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

3-Après avoir exécuté les commandes précédentes, vous devriez avoir un dossier " dist "dans votre dossier" sémantique". Déplacez ce dossier vers le dossier "/ static " situé à la racine du projet.

4-incluez les lignes suivantes dans votre fichier modèle 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
répondu Benjamin Rodriguez 2018-04-18 21:22:52
  1. Installer jquery npm install jquery
  2. Installer la sémantique de l'interface utilisateur-css npm install semantic-ui-css
  3. ajoutez ceci dans main.js

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

0
répondu Sanyam Jain 2017-10-05 09:45:06