J'essaie d'utiliser webpack + l'interface utilisateur sémantique avec Vue.js et j'ai trouvé cette bibliothèque https://vueui.github.io/
Mais il y avait un 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é du jade (pug) mais toujours pas de chance.
Et il y a un commentaire dans github pour cette librairie:
WIP, n'utilisez pas ( 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 les fonctions sémantiques.js comme dimmer et d’autres choses.
Le fait est que je possède déjà une ancienne base de code écrite avec la sémantique et il serait bon de ne pas utiliser un autre framework CSS (bootstrap ou matérialiser).
Existe-t-il un moyen élégant d’inclure une interface utilisateur sémantique dans mon projet vue.js?
1) Installez jQuery s'il n'est pas installé (correctement!):
npm install --save jquery
puis dans votre fichier webpack.config (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.
Le point positif est qu’il s’agit maintenant du même processus pour TOUTES vos bibliothèques externes que vous souhaitez utiliser (Numeral, Moment, etc.), et bien sûr sémantique-ui!
Allons-y :
npm install --save semantic-ui-css
nb: vous pouvez utiliser le référentiel principal (c'est-à-dire, sémantique-ui) mais sémantique-ui-css est le thème de base de sémantique-ui.
Donc, maintenant, vous devez d’abord définir les alias dans le fichier webpack.base.config.js:
sous resolve.alias
ajouter 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 alias de libs externes:
// 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 d'accès (normalement, ils devraient ressembler à ceux-là!)
... nous sommes sur le point de finir ...
La prochaine étape consiste à ajouter une référence alias au fournisseur de plug-in, comme nous venons de le faire 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 suffit seulement ;-)
Encore une fois, vous pouvez ajouter votre lib/alias ici:
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 mon propre projet (vous pouvez voir gridster, qui est un plugin jQuery - comme sémantique-ui!)
Alors maintenant, une dernière chose à faire:
ajouter des css sémantiques:
Je le fais en ajoutant cette ligne au début du fichier main.js:
import '../node_modules/semantic-ui-css/semantic.min.css'
Ensuite, après cette ligne, ajoutez:
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 une liste avec une case à cocher.
Et dans le script:
export default {
props: ['item'],
ready() {
$(this.$el.childNodes[1]).checkbox()
}
}
Voici le résultat:
Normalement, tout devrait bien fonctionner.
Je viens de commencer à développer avec Vuejs la semaine dernière, alors, peut-être là-bas est un meilleur moyen d'y arriver ;-)
Un peu tard, mais vous pouvez maintenant 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 de React: si vous l’utilisez, cela vous sera très familier.
Voici un JSFiddle si vous voulez vous amuser: https://jsfiddle.net/pvjvekce/
Disclaimer: je suis le créateur
Voici comment je le fais: (note: j'utilise vue-cli pour créer mes projets)
1- installer gulp:
npm install -g gulp
2- Exécutez les commandes suivantes et suivez les instructions d'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 dans le dossier "/ static" situé à la racine du projet.
4- Incluez les lignes suivantes dans votre fichier de 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>
npm install jquery
npm install semantic-ui-css
window.$ = window.jQuery = require('jquery')
require('semantic-ui-css/semantic.css')
require('semantic-ui-css/semantic.js')