王皓 發表於 2020-4-23 09:23:00

前端Vue和后端node.js交互案例

<h4 class="md-end-block md-heading"><span class="md-plain">一、利用node创建后端服务器</span></h4>
<ol>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">初始化目录结构<span class="md-softbreak"> <span><code>npm init -y</code></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">下载express<span class="md-softbreak"> <span><code>npm i express</code></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">利用 express 搭建服务器</span></p>
</li>
</ol>
<p class="md-list-item"><span class="md-plain">  </span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">创建服务器</span><span style="color: rgba(0, 128, 0, 1)">
//</span><span style="color: rgba(0, 128, 0, 1)">第一个引入express框架</span>
const express = require('express'<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">第二 把express 方法付给app </span>
const app =<span style="color: rgba(0, 0, 0, 1)"> express()
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">创建一个接口,当用户访问'/'</span>
app.get('/',(req,res)=&gt;<span style="color: rgba(0, 0, 0, 1)">{
    res.send(</span>'当前服务器已连接'<span style="color: rgba(0, 0, 0, 1)">)
})
app.get(</span>'/foodList',(req,res)=&gt;<span style="color: rgba(0, 0, 0, 1)">{
    const json </span>=<span style="color: rgba(0, 0, 0, 1)"> [
      {
            id:</span>1<span style="color: rgba(0, 0, 0, 1)">,
            name:</span>'海底捞'<span style="color: rgba(0, 0, 0, 1)">
      },
      {
            id:</span>2<span style="color: rgba(0, 0, 0, 1)">,
            name:</span>'水煮鱼'<span style="color: rgba(0, 0, 0, 1)">
      },
      {
            id:</span>3<span style="color: rgba(0, 0, 0, 1)">,
            name:</span>'烧烤'<span style="color: rgba(0, 0, 0, 1)">
      },
    ]
    res.send(json)
})

</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">第三步监听我的端口</span>
app.listen(3000)</pre>
</div>
<p>    4.启动服务</p>
<p>   <span style="color: rgba(255, 0, 0, 1)"> ***注意***&nbsp; &nbsp; &nbsp; &nbsp;但凡app.js有修改记得重启服务器(node搭建的服务器)&nbsp;</span> &nbsp; &nbsp;&nbsp;</p>
<h4 class="md-end-block md-heading"><span class="md-plain">二、利用vue创建前端项目</span></h4>
<ol>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">创建项目命令<span class="md-softbreak"> <span><code>vue init webpack mydemo(项目)</code></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">初始化项目,删除你该删除的内容</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">下载axios http库<span class="md-softbreak"> <span><code>npm i axios</code></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">创建组件</span></p>
</li>
<li class="md-list-item md-focus-container">
<p class="md-end-block md-p md-focus"><span class="md-plain">在组件中调取接口</span></p>
</li>
</ol>
<div class="cnblogs_code">
<pre>import axios from 'axios'<span style="color: rgba(0, 0, 0, 1)">
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
    mounted() {</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">生命周期函数,挂载</span>
      <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">组件一加载就调取美食列表接口</span>
<span style="color: rgba(0, 0, 0, 1)">      axios({
            url:</span>'/api/foodList'<span style="color: rgba(0, 0, 0, 1)">,
         </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> params:{}</span>
         <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">method:'get' get方法可以省略</span>
<span style="color: rgba(0, 0, 0, 1)">      })
      .then((res)</span>=&gt;<span style="color: rgba(0, 0, 0, 1)">{
            console.log(res,</span>'响应'<span style="color: rgba(0, 0, 0, 1)">)
      })
      .</span><span style="color: rgba(0, 0, 255, 1)">catch</span>((err)=&gt;<span style="color: rgba(0, 0, 0, 1)">{

      })
    },
}</span></pre>
</div>
<p>如果产生跨域问题(解决跨域问题)&nbsp;</p>
<p>    配置config文件夹&nbsp; &nbsp; &nbsp;=&gt;&nbsp; &nbsp; &nbsp; &nbsp;index.js文件</p>
<div class="cnblogs_code">
<pre>   proxyTable: {<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">利用代理服务器去解决跨域问题(本地开发的时候)vue中的方法</span>
      '/api'<span style="color: rgba(0, 0, 0, 1)">:{
      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">'/api' 地址是自己定义的</span>
      target:'http://localhost:3000', <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">你要解决跨域的地址</span>
      changeOrigin:<span style="color: rgba(0, 0, 255, 1)">true</span>,<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">在本地搭建一个虚拟服务,去发送种请求拦截服务</span>
      pathRewrite:{<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地址重写</span>
          '^/api':'http://localhost:3000'<span style="color: rgba(0, 0, 0, 1)">
      }
      }
    },</span></pre>
</div>
<p><span class="md-expand" style="color: rgba(255, 0, 0, 1)"><strong><span class="md-plain">如果配置代理,一定要重启!!!!</span></strong></span></p>
<p><span class="md-expand" style="color: rgba(255, 0, 0, 1)"><span class="md-softbreak"> <span class="md-plain">调取接口地址就变成了:url:'/api/foodList', 不再是url:'<span class="md-link"><span style="color: rgba(255, 0, 0, 1)">http://localhost:3000/foodList</span><span class="md-plain md-expand">'</span></span></span></span></span></p>
<h4 class="md-end-block md-heading md-focus"><span class="md-plain md-expand">全局引入axios:</span></h4>
<p><span class="md-plain md-expand">  main.js页面</span></p>
<p><span class="md-plain md-expand">    </span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">引入axios库</span>
import axios from 'axios'
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">把axios挂载到Vue原型</span>
Vue.prototype.http = axios</pre>
</div>
<p>  song.vue组件   </p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)">this</span>.http.post('/api/postInfo'<span style="color: rgba(0, 0, 0, 1)">)
         .then(res</span>=&gt;<span style="color: rgba(0, 0, 0, 1)">{
               console.log(res,</span>'成功之后的响应'<span style="color: rgba(0, 0, 0, 1)">)
               </span><span style="color: rgba(0, 0, 255, 1)">this</span>.list =<span style="color: rgba(0, 0, 0, 1)"> res.data
         })
         .</span><span style="color: rgba(0, 0, 255, 1)">catch</span>(err=&gt;{})</pre>
</div>
<h4 class="md-end-block md-heading md-focus"><span class="md-plain md-expand">在vue项目中 引入 jquery </span></h4>
<p><span class="md-plain md-expand">  下载命令:</span></p>
<p><span class="md-plain md-expand">    </span></p>
<div class="cnblogs_code">
<pre>`npm install(i) jquery`</pre>
</div>
<p>  如果全局引入:   </p>
<div class="cnblogs_code">
<pre>import jquery from 'jquery'<span style="color: rgba(0, 0, 0, 1)">
Vue.prototype.jq </span>= jquery</pre>
</div><br><br>
来源:https://www.cnblogs.com/ly1368489670/p/12758558.html
頁: [1]
查看完整版本: 前端Vue和后端node.js交互案例