前端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)=><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)=><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)"> ***注意*** 但凡app.js有修改记得重启服务器(node搭建的服务器) </span> </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>=><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)=><span style="color: rgba(0, 0, 0, 1)">{
})
},
}</span></pre>
</div>
<p>如果产生跨域问题(解决跨域问题) </p>
<p> 配置config文件夹 => 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>=><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=>{})</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]