Heim Web-Frontend js-Tutorial Vue Learning-Installationsabhängigkeiten und Datenquellen

Vue Learning-Installationsabhängigkeiten und Datenquellen

Apr 29, 2019 am 11:48 AM
html html5 vue.js

Heute werde ich ein kleines Backend-Managementsystem mit Ihnen teilen, das Sie kennenlernen kann.

1. Bauprojekt- und Installationsabhängigkeiten

Das Bauprojekt wird mit Vue-Cli-Gerüst aufgebaut. Die Wissensbasis über npm, cnpm und vue-cli ist in weiten Teilen zu finden das Internet, aber nicht zu viel beschrieben. Was schwer zu verstehen ist, sind die darin enthaltenen Konfigurationsdateien, als ich es zum ersten Mal lernte. Es besteht kein Grund, sich über zu viele Konfigurationsdateien in der Zukunft Gedanken zu machen. Der Schwerpunkt liegt hier auf der Installation von Abhängigkeiten. Dies sind Module, die zum Ausführen eines Projekts erforderlich sind. Wenn Sie beispielsweise Axios zum Abrufen von Daten verwenden, müssen Sie die entsprechenden Module installieren. Die Projektabhängigkeiten befinden sich in der Datei package.json im Stammverzeichnis. Die folgenden Abhängigkeitspakete werden von meinem Projekt verwendet:

"dependencies": {
"axios": "^0.18.0",
"echarts": "^4.2.1",
"element-ui": "^2.7.2",
"mockjs": "^1.0.1-beta3",
"vue": "^2.5.2",
"vue-awesome": "^3.5.1",
"vue-particles": "^1.0.9",
"vue-quill-editor": "^3.0.6",
"vue-router": "^3.0.1"
},
Nach dem Login kopieren

Nach der ersten Projekterstellung werden einige Abhängigkeitspakete wie vue und vue-router angezeigt Wenn Sie die anderen Abhängigkeitspakete bestimmen, die bei der Arbeit an einem Projekt verwendet werden müssen, z. B. Axios und das UI-Design-Framework element-ui, das zum Abrufen von Daten benötigt wird, können Sie den Namen und die Version direkt dort schreiben , wobei ^ bedeutet, dass die neueste Version mit der ersten Zahl nach dem Symbol übereinstimmt. Nachdem Sie dies geschrieben haben, können Sie diese Abhängigkeiten mit npm install oder npm i im Terminal installieren. Anschließend wird der Ordner node_modules im Stammverzeichnis angezeigt In diesem Ordner befinden sich alle abhängigen Paketdateien. Wir müssen nichts ändern, aber natürlich nicht löschen. Wenn es versehentlich gelöscht wird, npm i erneut.

Wenn Sie sich bei einigen anderen Modulen, die Sie verwenden müssen, nicht sicher sind, denken Sie beim Erstellen einer Webseite daran oder suchen Sie online danach, und überlegen Sie dann, sie separat einzuführen. Verwenden Sie bei der Einführung npm install ** (Modulname) in der Terminal-Installationsmethode, der installierte Modulname wird automatisch in den Abhängigkeiten der Datei package.json angezeigt.

Verwandte Tutorials: Vue-Video-Tutorial

2. Über die Datenquelle

Woher kommen die Daten im Projekt? Dies ist mein erstes und abschließend Eine oft problematische Frage. Tatsächlich sollten für das Front-End alle Projektdaten aus dem unterstützenden Back-End-Programm stammen. Nach der Trennung von Front-End und Back-End verarbeitet das Back-End die vom Projekteigentümer bereitgestellten Originaldaten Es wird an die externe Daten-API-Schnittstelle des Frontends gesendet. Diese Schnittstelle wird von beiden Parteien vereinbart, z. B. ein gewisser Rückgabestatus, ein Fehlercode, ein bestimmtes Format oder ein Name usw. Allerdings wird tatsächlich gleichzeitig entwickelt, das heißt, die vom Front-End während des Entwicklungsprozesses zu verwendenden Daten müssen zuerst entsprechend den Anforderungen simuliert werden , um zu sehen, ob ihre tatsächliche Leistung auf dem Die Webseite erfüllt die Anforderungen. Natürlich gibt es auch einige Netzwerk-API-Schnittstellen, die den von anderen verarbeiteten Daten entsprechen und gemäß ihren Nutzungsregeln verwendet werden können.

Es gibt viele Möglichkeiten, Daten in Vue abzurufen, wie zum Beispiel diese.$http.get/post von vue-resource, $.ajax von jQuery, this.$axios.get/post von axios und fetch Methode warten. Die Grundlage, die es zu beherrschen gilt, ist die Post/Get-Request-Methode. Ich werde hier jedoch nicht näher darauf eingehen einige Daten hier.

1. Das Vue-Gerüstprojekt kann Scheindaten verwenden, die zufällig Simulationsdaten generieren. Die offizielle Website-Adresse lautet http://mockjs.com/. Ich verwende im Projekt nur eine kleine Menge Scheindaten wie folgt:


1   Mock.mock(/login/, {
2     data: {
3       userId: "@integer(1,10)",
4       "nickname|1": ["Amy", "Michael", "Jack", "John", "Albert","Norton"],
5     },
6   });
Nach dem Login kopieren

Hier müssen Sie Mock.js in main.js importieren, und der obige Code ist Wenn die Daten angefordert werden, wird auf die „Login“-Adresse zugegriffen, die der Außenwelt einen Spitznamen liefert, der zufällig im folgenden Array generiert wird. Wenn Sie andere zufällig generierte Inhalte benötigen, simulieren Sie diese selbst. Verwandte Tutorials: js-Video-Tutorial

2. Definieren Sie Daten direkt in den Daten der Komponente. Dies ist der einfachste Weg, wie folgt:


  data() {
    return {
      introduction: [
        "登录页有粒子动态效果,采用VueParticles,各项参数设置可参看https://www.jianshu.com/p/53199b842d25;",
        "登录后的昵称是用mock数据做的,mock.js需要在main.js中导入;",
        "左侧导航栏是根据element-ui的导航写的,直接可用index跳转,顶部导航为ui的面包屑导航;",
        "天气预报采用的echarts,需要导入使用,样式应该可以更美观,此处只做了基础的改变,数据为网上找的一个接口,部分城市可能无数据;",
        "文本编辑vue-quill-editor需要在main.js中导入,仅在编辑页做了变化示例,后期可考虑传值到父组件,可插入图片;",
        "表格操作是根据某后台管理系统的网页仿写的,有增删改查等功能,选择管理员和一般用户按钮可以看到不同的菜单,使用watch监测数据变化;",
        "新闻资讯也是网上找的数据接口,设置自动获取时间改变接口的时间参数每天自动刷新,开发时设置proxyTable代理进行跨域;",
      ]
    };
  },
Nach dem Login kopieren

Zu beachten ist vor allem, dass Daten, die nicht mit return umschlossen sind, im Projekt global sichtbar sind und nach der Verwendung von return Variablen verursachen werden in der aktuellen Komponente wirksam und wirken sich nicht auf andere Komponenten aus, ähnlich dem Konzept jeder einzelnen Instanz in einer Funktion.

3. Verwenden Sie das vuex Data Management Warehouse. Dies wird im Allgemeinen verwendet, wenn die Daten großer Projekte relativ komplex sind. Ich habe es nicht für das Projekt auf GitHub verwendet, aber ich habe es auch auf einer kleinen Seite verwendet Ich habe zum ersten Mal mit dem Lernen begonnen. Die Lernadresse lautet https://vuex.vuejs.org/zh/. Hauptsächlich die fünf großen Blöcke „State“, „Getter“, „Action“, „Mutations“ und „Module“ sowie die ersten paar ihrer Hilfsfunktionen. Ich habe sie selbst noch nicht sehr gründlich studiert und muss noch mehr studieren.

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const state = {
    person: [{
        name: '张三',
        age: '23',
        sex: '男',
        likes: '篮球',
        introuce: '',
        }, 
      {
        name: '李四',
        age: '25',
        sex: '男',
        likes: '游泳',
        introuce: ''
      },
      {
        name: '王五',
        age: '24',
        sex: '男',
        likes: '乒乓',
        introuce: ''
      },
      {
        name: '马六',
        age: '22',
        sex: '男',
        likes: '排球',
        introuce: ''
      },
      {
        name: '周星星',
        age: '27',
        sex: '男',
        likes: '羽毛球',
        introuce: ''
      },
      {
        name: '李丽',
        age: '21',
        sex: '女',
        likes: '看书',
        introuce: ''
      },
      {
        name: '付兰',
        age: '21',
        sex: '女',
        likes: '看电影、游泳',
        introuce: ''
      },
    ]
}
    const getters = {   
      showList(state){
        for (let i = 0; i < state.person.length; i++) { 
        state.person[i].introduce = &#39;我叫&#39;+state.person[i].name+&#39;,我今年&#39;+state.person[i].age+&#39;岁了,我的爱好是&#39;+state.person[i].likes   
        }  
        return state.person
      }
    };

    const mutations = {
      add(state,data){
        state.person.push(data)
      },
      del(state,i){
        state.person.splice(i,1)
      },
      edit(state,{index,data}) {  
        state.person.splice(index,1,data)
      },
    };


 
    const actions = {
      addPerson({commit},data){
        commit(&#39;add&#39;,data)
      },
      delPerson({commit},data){
        commit(&#39;del&#39;,data)
      },
      editPerson({commit},data){
        commit(&#39;edit&#39;,data)
      },
    };

export default new Vuex.Store({
    state,
    getters,
    mutations,
    actions
});
Nach dem Login kopieren


import Vue from &#39;vue&#39;;
import Vuex from &#39;vuex&#39;;
Vue.use(Vuex);
const state = {
    person: [{
        name: &#39;张三&#39;,
        age: &#39;23&#39;,
        sex: &#39;男&#39;,
        likes: &#39;篮球&#39;,
        introuce: &#39;&#39;,
        }, 
      {
        name: &#39;李四&#39;,
        age: &#39;25&#39;,
        sex: &#39;男&#39;,
        likes: &#39;游泳&#39;,
        introuce: &#39;&#39;
      },
      {
        name: &#39;王五&#39;,
        age: &#39;24&#39;,
        sex: &#39;男&#39;,
        likes: &#39;乒乓&#39;,
        introuce: &#39;&#39;
      },
      {
        name: &#39;马六&#39;,
        age: &#39;22&#39;,
        sex: &#39;男&#39;,
        likes: &#39;排球&#39;,
        introuce: &#39;&#39;
      },
      {
        name: &#39;周星星&#39;,
        age: &#39;27&#39;,
        sex: &#39;男&#39;,
        likes: &#39;羽毛球&#39;,
        introuce: &#39;&#39;
      },
      {
        name: &#39;李丽&#39;,
        age: &#39;21&#39;,
        sex: &#39;女&#39;,
        likes: &#39;看书&#39;,
        introuce: &#39;&#39;
      },
      {
        name: &#39;付兰&#39;,
        age: &#39;21&#39;,
        sex: &#39;女&#39;,
        likes: &#39;看电影、游泳&#39;,
        introuce: &#39;&#39;
      },
    ]
}
    const getters = {   
      showList(state){
        for (let i = 0; i < state.person.length; i++) { 
        state.person[i].introduce = &#39;我叫&#39;+state.person[i].name+&#39;,我今年&#39;+state.person[i].age+&#39;岁了,我的爱好是&#39;+state.person[i].likes   
        }  
        return state.person
      }
    };

    const mutations = {      add(state,data){
        state.person.push(data)
      },
      del(state,i){
        state.person.splice(i,1)
      },
      edit(state,{index,data}) {  
        state.person.splice(index,1,data)
      },
    };


 
    const actions = {      addPerson({commit},data){
        commit(&#39;add&#39;,data)
      },
      delPerson({commit},data){
        commit(&#39;del&#39;,data)
      },
      editPerson({commit},data){
        commit(&#39;edit&#39;,data)
      },
    };

export default new Vuex.Store({
    state,
    getters,
    mutations,
    actions
});
Nach dem Login kopieren

Code anzeigen

Der obige Code ist eine sehr einfache Statusverwaltung, bei der ein Lagerhaus separat definiert und im Status definiert wird Daten, Getter zum Abrufen von Statusdaten entsprechen berechneten Eigenschaften, Mutationsmethodenfunktion und Aktion zum Ausführen von Mutationen. Schließlich können die Daten in diesem Speicher in der Komponente mithilfe der Methode this.$store.dispatch("addPerson", data), hauptsächlich der Dispatch-Methode, verwendet werden.

  这种方法在上线时如果数据复杂也建议使用这种方法,将State里数据的通过相关axios等方法获取。

  4.网络API数据,网络上有很多开源的API,也有一些收费的API,这些API一般以json或者jsonp的格式存在。收费的主要需要注意一般都有跨域问题存在。

  开发时的跨域在根目录下的config文件夹下的index.js中配置,找到proxyTable配置,在module.exports的dev里面


    proxyTable: {
      &#39;/api&#39;: {  //代理地址  
        target: &#39;http://api01.idataapi.cn:8000/article&#39;,  //需要代理的地址  
        changeOrigin: true,  //是否跨域  
        secure: false,    
        pathRewrite: {  
            &#39;^/api&#39;: &#39;&#39;   //本身的接口地址没有 &#39;/api&#39; 这种通用前缀,所以要rewrite,如果本身有则去掉  
        },
    }
    },
Nach dem Login kopieren

  这样在获取数据时api就是代表了http://api01.idataapi.cn:8000/article这个网站,然后通过拼接得到正确的数据接口。this.$axios.get('api’ + url),这个url是接口后一部分的网址,注意与api之间的'/',如果前面有后面则不要加,如果没有后面开始就要加。这样开发状态下代理跨域就完成了。

  线上的跨域其实如果是有后端系统的项目,一般有后端服务器端设置,上线后其实都在同一域,不存在跨域,如果需要跨域,一般由后端来解决也方便些。但是如果实在没办法,那网上找了也有很多其他方法,我主要采用的是nginx反向代理的方法。将前端代码打包后放到nginx服务器,在nginx配置里设置代理即可。如下:


        location /api/ {
            rewrite ^/b/(.*)$ /$1 break;
            add_header &#39;Access-Control-Allow-Origin&#39; &#39;*&#39;;
            proxy_pass http://api01.idataapi.cn:8000/article/;
        }
Nach dem Login kopieren

  这个配置在nginx安装后的目录下的config文件夹nginx.conf文件里下,在 server里添加上述代码,即表示了用api代理http://api01.idataapi.cn:8000/article/地址。

  以上这些内容,真的是说起来可以算知道,但是自己遇到问题的时候真的好困难,一个自学者的悲哀吧,就算网上有人回复了,其实有时候也看不到你到底哪里出错了,还是要靠自己。

 

Das obige ist der detaillierte Inhalt vonVue Learning-Installationsabhängigkeiten und Datenquellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1677
14
PHP-Tutorial
1279
29
C#-Tutorial
1257
24
HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

Leitfaden zum HTML-Tabellenlayout. Hier besprechen wir die Werte des HTML-Tabellenlayouts zusammen mit den Beispielen und Ausgaben im Detail.

HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

Leitfaden für HTML-Eingabeplatzhalter. Hier besprechen wir die Beispiele für HTML-Eingabeplatzhalter zusammen mit den Codes und Ausgaben.

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Vue.js vs. React: projektspezifische Überlegungen Vue.js vs. React: projektspezifische Überlegungen Apr 09, 2025 am 12:01 AM

Vue.js eignet sich für kleine und mittelgroße Projekte und schnelle Iterationen, während React für große und komplexe Anwendungen geeignet ist. 1) Vue.js ist einfach zu bedienen und für Situationen geeignet, in denen das Team nicht ausreicht oder die Projektskala klein ist. 2) React hat ein reichhaltigeres Ökosystem und eignet sich für Projekte mit hoher Leistung und komplexen funktionalen Bedürfnissen.

HTML, CSS und JavaScript verstehen: Ein Anfängerhandbuch HTML, CSS und JavaScript verstehen: Ein Anfängerhandbuch Apr 12, 2025 am 12:02 AM

WebdevelopmentRelieSonHtml, CSS und JavaScript: 1) HtmlStructuresContent, 2) CSSstylesit und 3) JavaScriptaddssinteraktivität, Bildung von TheBasisofModerernwebexperiences.

Die Rollen von HTML, CSS und JavaScript: Kernverantwortung Die Rollen von HTML, CSS und JavaScript: Kernverantwortung Apr 08, 2025 pm 07:05 PM

HTML definiert die Webstruktur, CSS ist für Stil und Layout verantwortlich, und JavaScript ergibt eine dynamische Interaktion. Die drei erfüllen ihre Aufgaben in der Webentwicklung und erstellen gemeinsam eine farbenfrohe Website.

Reacts Rolle bei HTML: Verbesserung der Benutzererfahrung Reacts Rolle bei HTML: Verbesserung der Benutzererfahrung Apr 09, 2025 am 12:11 AM

React kombiniert JSX und HTML, um die Benutzererfahrung zu verbessern. 1) JSX bettet HTML ein, um die Entwicklung intuitiver zu gestalten. 2) Der virtuelle DOM -Mechanismus optimiert die Leistung und reduziert den DOM -Betrieb. 3) Komponentenbasierte Verwaltungs-Benutzeroberfläche zur Verbesserung der Wartbarkeit. 4) Staatsmanagement und Ereignisverarbeitung verbessern die Interaktivität.

Ist Vue.js schwer zu lernen? Ist Vue.js schwer zu lernen? Apr 04, 2025 am 12:02 AM

Vue.js ist nicht schwer zu lernen, insbesondere für Entwickler mit einer JavaScript -Stiftung. 1) Sein progressives Design und das reaktionsschnelle System vereinfachen den Entwicklungsprozess. 2) Komponentenbasierte Entwicklung macht das Codemanagement effizienter. 3) Die Nutzungsbeispiele zeigen eine grundlegende und fortgeschrittene Verwendung. 4) Häufige Fehler können durch VEDEVTOOLS debuggen werden. 5) Leistungsoptimierung und Best Practices, z. B. die Verwendung von V-IF/V-Shows und Schlüsselattributen, können die Anwendungseffizienz verbessern.

See all articles