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?
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:
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; -)
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
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>
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
- Instalar jquery
npm install jquery
- Instalar semantic-ui-css
npm install semantic-ui-css
- Agregue esto en main.js
window.$ = window.jQuery = require('jquery')
require('semantic-ui-css/semantic.css')
require('semantic-ui-css/semantic.js')
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