22

Próbuję użyć WebPACK + Semantic UI z Vue.js i znalazłem tę bibliotekę https://vueui.github.io/Korzystanie vue.js z semantycznego UI

Ale nie było problemu 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. 

Więc zainstalowany jade (mops), ale wciąż nie ma szczęścia.

I nie komentarz w github dla tego lib:

WIP, nie używaj (https://github.com/vueui/vue-ui)

udało mi się importować semantycznej css w moich szablonach tak:

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

Ale problem polega na tym, że nie mogę używać funkcji semantic.js, takich jak dimmer i inne.

Chodzi o to, że mam już starą bazę kodu napisaną semantycznie i dobrze byłoby nie używać żadnej innej struktury css (bootstrap lub materialize).

Czy istnieje jakiś elegancki sposób na włączenie semantycznego interfejsu użytkownika do mojego projektu vue.js?

Odpowiedz

30

1) Instalacja jQuery, jeśli nie jest zainstalowany (odpowiednio):

  • npm install --save jquery
  • następnie w webpack.config pliku (Właśnie dodałem go w webpack.dev.config js, ale może go dodać w pliku konfiguracyjnym prod):

    w wtyczek dodać new webpack.ProvidePlugin

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

    Teraz jQuery jest dostępny dla WSZYSTKICH aplikacji i komponentów.

Dobrą rzeczą jest to już ten sam proces dla wszystkich bibliotek zewnętrznych, których chcesz używać (liczebnik, chwilę, etc ..), i oczywiście semantycznej-ui!

Chodźmy:

  • npm install --save semantic-ui-css

nb: można korzystać z głównego repo (tj semantyczny-UI), ale semantyczny-ui-CSS jest tematem podstawą dla semantycznej-ui.

Teraz musisz najpierw zdefiniować aliasy w pliku webpack.base.config o nazwie .js file:

pod resolve.alias dodać alias do semantyczny:

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: można umieścić tam swoje inne zewnętrzne libs aliasy:

// 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: używać swojego własną ścieżkę tam (normalnie powinny wyglądać jak te!)

... mamy zamiar zakończyć ...

Następnym krokiem jest dodanie aliasu odniesienie do dostawcy wtyczek, jak po prostu zrobić dla 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: tutaj używam kilka nazw, może semantyczny jest tylko wystarczająca ;-)

Ponownie, można dodać lib/alias tam:

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

Oto wszystkie libs zewnętrznych używam w moim projekcie (widać gridster, który jest plugin jQuery - jak semantyczny-ui jest!)

Więc teraz, tylko jedna rzecz do zrobienia:

  • dodać semantyczne CSS:

    to zrobić dodając ten wiersz na początku main.js pliku:

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

Następnie, po tej linii dodać:

import semantic from 'semantic'

Teraz można go używać.

przykład w moim Vuejs pliku:

<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> 

Ten fragment utworzyć prostą komórkę na liście z wyboru.

A w skrypcie:

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

Oto wynik:

sample1

sample2

Normalnie wszyscy powinni działa dobrze.

Właśnie zaczął się rozwijać z Vuejs zeszłym tygodniu, więc może tam jest lepszym sposobem na to ;-)

+0

nie praca dla mnie :( – dylan

+0

Jeżeli nie ProvidePlugin i alias dla semantic- W każdym razie, semantic-ui jest importowany jako pusty Obiekt tutaj.Nie działało to –

+0

Cóż, plik semantic-ui js wrócił jako pusty Obiekt tutaj. Sugestie? –

0
  1. Instalacja jQuery npm install jquery
  2. Install semantycznej-ui -css npm install semantic-ui-css
  3. Dodaj ten w main.js

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

+0

wyjątek zniknął, ale znalazłem wszystkie js semantyczne-ui nie działa, na przykład, istnieje menu na mojej stronie, widzę efekt css, ale kiedy próbuję kliknąć kilka elementów, nic się nie stało – Allen4Tech

1

Trochę za późno, ale teraz możesz użyć tego: https://github.com/Semantic-UI-Vue/Semantic-UI-Vue. Nadal WIP, ale ma wszystkie podstawowe funkcje.

Dość łatwy w użyciu:

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

API są bardzo podobne do wersji React: jeśli go stosować, to będzie bardzo znajome.

Oto JSFiddle jeśli chcesz się bawić: https://jsfiddle.net/pvjvekce/

Oświadczenie: Jestem twórcą