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?
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 :
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; -)
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
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>
- Installer jquery
npm install jquery
- Installer la sémantique de l'interface utilisateur-css
npm install semantic-ui-css
- ajoutez ceci dans main.js
window.$ = window.jQuery = require('jquery')
require('semantic-ui-css/semantic.css')
require('semantic-ui-css/semantic.js')