Vue는 AJAX를 구현하는 공식적인 방법을 제공하지 않으며 효과적으로 사용할 수 있는 다양한 디자인 패턴이 있습니다. 각 방법에는 장단점이 있으므로 필요에 따라 판단해야 합니다. 동시에 여러 개를 사용할 수도 있습니다!
이 기사에서는 Vue 애플리케이션에서 AJAX를 구현하는 네 가지 위치를 보여 드리겠습니다.
Root Instance
Component
Vuex Action
-
경로 탐색 가드
각 방법을 설명하고 예를 들어 장단점을 논의하겠습니다.
1. 루트 인스턴스
이 아키텍처를 사용하면 루트 인스턴스에서 모든 AJAX 요청을 수행하고 모든 상태를 루트 인스턴스에 저장할 수 있습니다. 하위 구성 요소에 데이터가 필요한 경우 도우미 역할을 합니다. 하위 구성 요소가 데이터를 새로 고쳐야 하는 경우 루트 인스턴스에 사용자 지정 이벤트를 사용하여 이를 요청하라는 메시지가 표시됩니다.
예:
new Vue({ data: { message: '' }, methods: { refreshMessage(resource) { this.$http.get('/message').then((response) { this.message = response.data.message; }); } } }) Vue.component('sub-component', { template: '<div>{{ message }}</div>', props: [ 'message' ] methods: { refreshMessage() { this.$emit('refreshMessage'); } } });
장점:
모든 AJAX 로직과 데이터를 한 곳에 보관하세요.
구성 요소를 "멍청하게" 유지하여 프레젠테이션에 집중할 수 있도록 하세요.
단점:
애플리케이션이 확장됨에 따라 많은 소품과 맞춤 이벤트가 필요합니다.
2. 구성 요소
이 아키텍처를 사용하면 구성 요소가 자체 AJAX 요청 및 상태를 독립적으로 관리할 책임이 있습니다. 실제로는 자체 로컬 "프레젠테이션" 구성 요소 그룹에 대한 데이터를 관리하는 여러 "컨테이너" 구성 요소를 만들고 싶을 수도 있습니다.
예를 들어, filter-list는 프레젠테이션 구성 요소 역할을 하는 filter-input 및 filter-reset을 래핑하는 컨테이너 구성 요소일 수 있습니다. 필터 목록에는 AJAX 로직이 포함되며 소품과 이벤트를 통해 통신하면서 그룹의 모든 구성 요소에 대한 데이터를 관리합니다.
이 아키텍처를 더 쉽게 구현하려면 AJAX 로직을 믹스인으로 추상화한 다음 구성 요소의 믹스인을 사용하여 AJAX를 활성화할 수 있습니다.
let mixin = { methods: { callAJAX(resource) { ... } } } Vue.component('container-comp', { // No meaningful template, I just manage data for my children template: '<div><presentation-comp :mydata="mydata"></presentation-comp></div>', mixins: [ myMixin ], data() { return { ... } }, }) Vue.component('presentation-comp', { template: <div>I just show stuff like {{ mydata }}</div>, props: [ 'mydata' ] })
장점:
구성 요소를 분리하고 재사용할 수 있도록 유지하세요.
언제 어디서나 필요한 데이터를 얻으세요.
단점:
다른 구성 요소 또는 구성 요소 그룹과 데이터를 전달하는 것이 쉽지 않습니다.
구성 요소에는 책임이 너무 많고 기능이 중복될 수 있습니다.
3. Vuex 실행
이 아키텍처를 사용하면 Vuex 저장소에서 상태 저장 논리와 AJAX 논리를 관리할 수 있습니다. 구성 요소는 디스패치 작업을 통해 새 데이터를 요청할 수 있습니다.
이 패턴을 구현하는 경우 로딩 스피너 숨기기, 버튼 등..
store = new Vuex.Store({ state: { message: '' }, mutations: { updateMessage(state, payload) { state.message = payload } }, actions: { refreshMessage(context) { return new Promise((resolve) => { this.$http.get('...').then((response) => { context.commit('updateMessage', response.data.message); resolve(); }); }); } } }); Vue.component('my-component', { template: '<div>{{ message }}</div>', methods: { refreshMessage() { this.$store.dispatch('refeshMessage').then(() => { // do stuff }); } }, computed: { message: { return this.$store.state.message; } } });
저는 이 아키텍처를 좋아합니다. 왜냐하면 상태와 표현 로직을 매우 잘 분리하기 때문입니다. Vuex를 사용하는 경우 다음 방법 중 하나를 사용하세요. Vuex를 사용하지 않는다면 아마도 이것이 충분한 이유일 것입니다.
장점:
소품 및 사용자 정의 이벤트가 필요 없이 루트 구성 요소 아키텍처의 모든 장점을 누릴 수 있습니다.
단점:
Vuex 오버헤드 증가
4. 경로 탐색 가드
이 아키텍처를 사용하면 애플리케이션이 여러 페이지로 분할됩니다. 경로가 변경되면, 페이지와 해당 하위 구성 요소에 필요한 모든 데이터를 가져옵니다.
이 접근 방식의 가장 큰 장점은 UI가 정말 단순화된다는 것입니다. 구성 요소가 자체 데이터를 독립적으로 얻는 경우 구성 요소 데이터가 임의의 순서로 채워지면 페이지가 예기치 않게 다시 렌더링됩니다.
实现此功能的一个简单方法是在服务器上为每个页面创建端点,例如/about、/contact等,这些端点与应用程序中的路由名匹配。然后,可以实现一个通用的beforeRouteEnter钩子,将所有数据属性合并到页面组件的数据中:
import axios from 'axios'; router.beforeRouteEnter((to, from, next) => { axios.get(`/api${to.path}`).then(({ data }) => { next(vm => Object.assign(vm.$data, data)) }); })
优点:
使UI更加可预测。
缺点:
整体上比较慢,因为页面在所有数据都准备好之前无法呈现。
如果您不使用路由,也没有多大帮助。
附加模式:服务器—在页面中呈现第一个AJAX调用
不建议在初始页面加载时使用AJAX检索应用程序状态,因为它需要额外的到服务器的往返,这会延迟应用程序的呈现。
相反,将初始应用程序状态注入HTML页面头部的内联脚本中,以便在需要时将其作为全局变量提供给应用程序。
<html> ... <head> ... <script type="text/javascript"> window.__INITIAL_STATE__ = '{ "data": [ ... ] }'; </script> </head> <body> <div id="app"></div> </body> </html>
然后,AJAX可以更恰当地用于后续数据获取。
相关推荐:
更多编程相关知识,请访问:编程入门!!
위 내용은 Vue 애플리케이션에서 AJAX를 구현하는 4가지 장소의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

vue.js 및 React의 미래 추세와 예측은 다음과 같습니다. 1) vue.js는 엔터프라이즈 레벨 애플리케이션에서 널리 사용되며 서버 측 렌더링 및 정적 사이트 생성에서 획기적인 결과를 얻었습니다. 2) RECT는 서버 구성 요소 및 데이터 수집에서 혁신하고 동시성 모델을 더욱 최적화합니다.

Netflix의 프론트 엔드 기술 스택은 주로 React 및 Redux를 기반으로합니다. 1. 반응은 고성능 단일 페이지 응용 프로그램을 구축하는 데 사용되며 구성 요소 개발을 통해 코드 재사용 성 및 유지 보수를 향상시킵니다. 2. Redux는 상태 변경이 예측 가능하고 추적 할 수 있도록 국가 관리에 사용됩니다. 3. 도구 체인에는 코드 품질과 성능을 보장하기위한 웹 팩, 바벨, 농담 및 효소가 포함됩니다. 4. 성능 최적화는 코드 세분화, 게으른로드 및 서버 측 렌더링을 통해 사용자 경험을 향상시킵니다.

vue.js는 대화 형 사용자 인터페이스를 구축하는 데 적합한 점진적인 프레임 워크입니다. 핵심 기능에는 응답 시스템, 구성 요소 개발 및 라우팅 관리가 포함됩니다. 1) 응답 시스템은 Object.DefineProperty 또는 프록시를 통한 데이터 모니터링을 실현하고 인터페이스를 자동으로 업데이트합니다. 2) 구성 요소 개발을 통해 인터페이스를 재사용 가능한 모듈로 분할 할 수 있습니다. 3) Vuerouter는 단일 페이지 응용 프로그램을 지원하여 사용자 경험을 향상시킵니다.

vue.js의 주요 단점은 다음과 같습니다. 1. 생태계는 비교적 새롭고 타사 라이브러리와 도구는 다른 프레임 워크만큼 풍부하지 않습니다. 2. 학습 곡선은 복잡한 기능에서 가파르게됩니다. 3. 지역 사회 지원과 자원은 반응과 각도만큼 광범위하지 않다. 4. 대규모 응용 프로그램에서 성능 문제가 발생할 수 있습니다. 5. 버전 업그레이드 및 호환성 문제가 더 큽니다.

Netflix는 React를 프론트 엔드 프레임 워크로 사용합니다. 1. 반응의 구성 요소 개발 및 가상 DOM 메커니즘은 성능 및 개발 효율성을 향상시킵니다. 2. Webpack 및 Babel을 사용하여 코드 구성 및 배포를 최적화하십시오. 3. 성능 최적화를 위해 코드 세분화, 서버 측 렌더링 및 캐싱 전략을 사용하십시오.

vue.js의 인기에는 단순성과 쉬운 학습, 유연성 및 고성능이 포함됩니다. 1) Progressive Framework 설계는 초보자가 단계별로 학습하는 데 적합합니다. 2) 구성 요소 기반 개발은 코드 유지 관리 및 팀 협업 효율성을 향상시킵니다. 3) 반응 형 시스템과 가상 DOM은 렌더링 성능을 향상시킵니다.

vue.js는 사용하기 쉽고 부드러운 학습 곡선이 있으며 초보자에게 적합합니다. React는 더 가파른 학습 곡선을 가지고 있지만 유연성이 강하기 때문에 숙련 된 개발자에게 적합합니다. 1. vue.js는 간단한 데이터 바인딩 및 프로그레시브 디자인을 통해 쉽게 시작할 수 있습니다. 2. 반응은 Virtual DOM 및 JSX에 대한 이해가 필요하지만 유연성과 성능 이점이 높아집니다.

Vue.js는 빠른 개발 및 소규모 프로젝트에 적합한 반면 React는 크고 복잡한 프로젝트에 더 적합합니다. 1.vue.js는 간단하고 배우기 쉽고 빠른 개발 및 소규모 프로젝트에 적합합니다. 2. 반응은 강력하고 크고 복잡한 프로젝트에 적합합니다. 3. vue.js의 진보적 인 특징은 점차적으로 기능을 도입하는 데 적합합니다. 4. React의 구성 요소 및 가상 DOM은 복잡한 UI 및 데이터 집약적 인 응용 프로그램을 처리 할 때 잘 수행됩니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

Dreamweaver Mac版
시각적 웹 개발 도구