반응형
Vue 없이 Vue를 사용할 수 있습니까? (Vuex 서버 측)
Vuex는 Vue.use(Vuex)를 호출하지 않으면 스토어의 새 인스턴스를 생성할 수 없다고 불평합니다.일반적으로는 괜찮지만, 같은 스토어를 사용하여 백엔드/프런트엔드를 작성하는 것을 생각하고 있습니다.정답 아는 사람?
고마워요.
TL;DR은 장치 테스트에도 브라우저 없이 노드에서 Vuex를 완벽하게 사용할 수 있습니다.그러나 내부적으로 Vuex는 여전히 Vue의 코드를 사용합니다.
Vue 없이는 Vue를 사용할 수 없습니다.이유:
- Vuex는 Vue의 존재를 확인합니다.
- Vuex는 반응성 내부 기능을 Vue에 크게 의존하고 있습니다.
즉, Vue 인스턴스는 필요하지만 Vue 인스턴스는 필요하지 않습니다.브라우저도 필요 없습니다.
네, 서버측 스탠드아론에서도 충분히 사용할 수 있습니다.
예를 들어 다음과 같이 Node.js를 사용하여 실행할 수 있습니다.
샘플 프로젝트 생성:
npm init -y
의존 관계를 인스톨 합니다(주의:
axios
필요 없습니다.이 데모용으로만 추가합니다.npm install --save vue vuex axios
스크립트(index.js):
const axios = require('axios'); const Vue = require('vue'); const Vuex = require('vuex'); Vue.use(Vuex); const store = new Vuex.Store({ strict: true, state: {name: "John"}, mutations: { changeName(state, data) { state.name = data } }, actions: { fetchRandomName({ commit }) { let randomId = Math.floor(Math.random() * 12) + 1 ; return axios.get("https://reqres.in/api/users/" + randomId).then(response => { commit('changeName', response.data.data.first_name) }) } }, getters: { getName: state => state.name, getTransformedName: (state) => (upperOrLower) => { return upperOrLower ? state.name.toUpperCase() : state.name.toLowerCase() } } }); console.log('via regular getter:', store.getters.getName); console.log('via method-style getter:', store.getters.getTransformedName(true)); store.commit('changeName', 'Charles'); console.log('after commit:', store.getters.getName); store.dispatch('fetchRandomName').then(() => { console.log('after fetch:', store.getters.getName); });
실행:
node index.js
출력:
via regular getter: John via method-style getter: JOHN after commit: Charles after fetch: Byron
언급URL : https://stackoverflow.com/questions/49684402/is-it-possible-to-use-vuex-without-vue-vuex-server-side
반응형
'programing' 카테고리의 다른 글
Maven이 사용할 JDK 지정 (0) | 2022.08.07 |
---|---|
java.util 변환 방법날짜: java.sql.Date? (0) | 2022.08.07 |
그 sizeof(enum)== sizeof(int), 항상? (0) | 2022.08.07 |
Vuetify 버전 업데이트 (0) | 2022.08.07 |
기본 자식이 있는 Vue.js 중첩 라우팅 (0) | 2022.08.07 |