最近,不趕着作項目,因而想着怎樣作公司的先後端分離,這個時候想到了nodejs,因而打算今天作一個代理的demo,其實代碼很簡單,可是一直卡在一個地方,如今問題解決了,貼上代碼和截圖。javascript
htmlcss
<!DOCTYPE html> <html> <head> <title>首頁</title> <meta charset="utf-8"> <script type="text/javascript" src="//cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script> <style type="text/css"> .hello{ color: #428bca; } </style> </head> <body> <h3>這是index頁面</h3> <span class="hello">你能夠點擊這裏</span> <script type="text/javascript"> $(function(){ var contextPath = 'http://localhost:3000'; $('.hello').on('click',function(){ $.ajax({ type:'get', data:'click', url:contextPath+'/api/hello', success:function(data){ console.log(data); }, error:function(data){ console.log(data); } }) }) }) </script> </body> </html>
localhost:3000服務端的代碼html
const express = require('express'); const proxy = require('http-proxy-middleware');//引入代理中間件 const app = express(); app.use(express.static('public')); //app.use(express.static('client')); // Add middleware for http proxying const apiProxy = proxy('/api', { target: 'http://localhost:8080',changeOrigin: true });//將服務器代理到localhost:8080端口上[本地服務器爲localhost:3000] app.use('/api/*', apiProxy);//api子目錄下的都是用代理 // Render your site app.get('/index.htm', function(req,res){ res.sendFile(__dirname+'/src/index.html'); }); app.listen(3000, () => { console.log('Listening on: http://localhost:3000'); });
localhost:8080服務上的代碼java
var express = require('express'); var app = express(); app.use(express.static('public')); var server = app.listen(8080,function(){ var host = server.address().address; var port = server.address().port; console.log('應用實例,訪問地址爲 http://%s:%s',host,port); }) app.get('/api/hello', function(req,res){ let data = {} data["name"] = "lucy"; data["age"] = "23"; res.send(data); });
項目結構截圖node
其中須要注意的一個細節是,當起了一個本地服務器,那麼靜態文件的引入會有一個問題,解決辦法以下Nodejs Express下引入本地文件的方法 出處:http://www.cnblogs.com/cocos2014/p/4378548.html?utm_source=tuicool&utm_medium=referraljquery
Express的結構以下:ajax
|---node_modules------用於安裝本地模塊。express
<script src="/javascripts/datepicker.js" type="text/javascript"></script>當瀏覽器發出非HTML文件請求時,服務器端就到public目錄下尋找javascripts,再到javascripts下尋找bootpicker.js文件。