搜尋
首頁web前端js教程在nginx+vue.js中如何實現前後端分離

在nginx+vue.js中如何實現前後端分離

Jun 06, 2018 am 09:43 AM
nginxvue.js前後端分離

這篇文章主要介紹了nginx vue.js實作前後端分離的範例程式碼,現在分享給大家,也給大家做個參考。

1.nginx 是一個高效能的HTTP和反向代理伺服器,常用於分散式伺服器管理.

它常用於做負載平衡(透過呼叫多台伺服器達到此目的)

靜態資源輸出更快,可以對資源實現gzip壓縮後輸出(這也是本文為什麼用它做靜態資源存取的一個重要原因)

適合解決跨域問題和反向代理(因為誰也不想看到在本域名下看到訪問其他域名的情況發生,跨域可導致csrf攻擊,這是本文用它的第二個原因)

佔用內存少,秒啟,能快速切換結點,防止宕機

2.es6 是ECMAScript的第六個版本,如果想要學好vue.js等js框架,這是必須要學會的一門語言,推薦學習網址如下:http://es6.ruanyifeng.com/

3.vue.js是一款前端模板渲染引擎,類似於後端的jsp,beetl等模板引擎.當然結合node環境也可作為後端渲染用.(官網已支援)

說了上述幾點,讓我們來回答幾個為什麼?
1.實現前後端分離的好處是什麼?主要應用場景在哪?
2. 為什麼有了後端模板引擎,為什麼還要用前端的模板引擎?他們的優勢和劣勢?
3.實現前後端分離需要怎麼改?

長長的分割線思考後……………………………

1.首先是發展的眼光看問題,以前的項目大多呈現的是PC端項目,且場景簡單,固定.請求大多是有狀態的.而現在我們常常是移動端項目較多,同一款app大多是原生和內嵌頁面相結合的方式.並且現在的項目場景更多元化,這導致一個功能模組很可能是好幾個項目的請求共同作用的結果.

2.如果還按照以前的做法,第一個問題是我只能用jsonp去解決調多個跨域請求的問題,實作起來程式碼太過冗餘。對於同一功能,很有可能app端和PC端就有兩套不同的寫法。並且頻寬是個很貴的東西,客戶端總是去伺服器端一起靜態資源的請求,會導致速度慢。動靜分離可以實現靜態資源和動態資源分開獲取,並且伺服器也能動靜分離,有效解決頻寬問題。

3.後端開發人員對於css,js的掌握可能不如前端熟練,比如利用jsp填充資料時,往往需要後端開發人員去調樣式和寫js,這樣會造成開發效率低下。

4.採用前端範本渲染可以釋放伺服器端的一部分壓力,並且前端範本引擎支援的功能比後端豐富.例如用vue可以自訂元件,校驗方式,深入式漸變等,這比後端模板引擎功能要更加豐富.

4.我們的解決方案如下

1.傳統的互動方式:

客戶端發起請求,伺服器端回應,經過一系列操作產生動態資料,將動態資料交由後端模板引擎,經過渲染後,傳遞給前端.

2.改良的互動方式

#客戶端發起請求,nginx攔截,若是靜態資源,則交由檔案伺服器直接壓縮後發送至前端.若是動態資源請求,則經過動態資源伺服器產生動態資料,以json格式返回至前端,交由vue.js渲染處理後進行展示.

5.vue.js 2.x版的重點功能講解

1.怎樣和html結構進行綁定,怎樣和樣式進行動態綁定,常用的監聽事件有哪些

1.基本的渲染

    //html结构
    <p id="app">
     {{ message }}
    </p>

    //js模块
    var app = new Vue({
    //会检索绑定的id 如果是class 则是.class即可绑定
       el: &#39;#app&#39;,
       data: {
        message: &#39;Hello Vue!&#39;
       }
    })

2.class與style綁定

<p class="static"
  v-bind:class="{ active: isActive, &#39;text-danger&#39;: hasError }">
</p>

 data: {
     isActive: true,
     hasError: false
    }

渲染结果为:<p class="static active"></p>

3.常用的綁定事件

 //输出html
<p v-html="rawHtml"></p>
//绑定id或class
<p v-bind:id="dynamicId"></p>
//绑定herf
<a v-bind:href="url" rel="external nofollow" ></a>
//绑定onclick
<a v-on:click="doSomething"></a>

2.和伺服器怎樣進行通訊

在這裡推薦大家使用axios進行和服務端的請求,然後將請求後的資料交由vue.js處理.

關於axios的使用範例連結位址

3.常見的流程控制語句資料校驗自訂指令

 //if 语句
 <h1 id="Yes">Yes</h1>

 //for 循环语句
 <ul id="example-1">
 <li v-for="item in items">
  {{ item.message }}
 </li>
 </ul>

資料校驗及其表單控制項綁定連結位址(https:// cn.vuejs.org/v2/guide/forms.html)

以下四點參考官網api,不再做介紹了

4.深入響應式怎樣實現(在第一次頁面初始化填值後,如果發生改變要修改怎麼做)?

5.自訂元件應用程式及其使用Render建立Html結構

6.路由的使用

7.常見的修飾符

6.實戰舉例

1.nginx 設定靜態資源

 server {
    listen    4000;
    server_name www.test.com;
    charset utf-8;
    index /static/index.html;//配置首页

    //这边可使用正则表达式,拦截动态数据的请求,从而解决跨域问题
    location = /sellingJson.html {
      proxy_pass http://192.168.100.17:8090/vueHelpSellingcar.html;
    }

    #配置Nginx动静分离,定义的静态页面直接从static读取。
    location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ 
    { 
    root /static/;
    #expires定义用户浏览器缓存的时间为7天,如果静态页面不常更新,可以设置更长,这样可以   节省带宽和缓解服务器的压力
    expires   7d; 
    }  
  }

2.後端請求傳回json資料(以java為例)

  @RequestMapping("/vueHelpSellingcar.html")
  public void vueHelpSellingcar(HttpServletRequest request,HttpServletResponse response) {
    //若干操作后,返回json数据
    JSONObject resultJson = new JSONObject();

    resultJson.put("carbrandList", carbrandList);
    resultJson.put("provinceList", provinceList);

    //进行序列化,返回值前端
    try {
      byte[] json =resultJson.toString().getBytes("utf-8");
      response.setHeader("Content-type", "text/html;charset=UTF-8");
      response.getOutputStream().write(json);
    } catch (Exception e) {
      e.printStackTrace();
    }

  }

3.前端呼叫vue範例

//html模块
  <p v-if="carbrandList.length" class="char_contain">
   <p v-for="brand in carbrandList" id="  {{brand.brand_id}}">{{brand.brand_name}}</p>
  </p>

//js模块 页面加载后,自动去获取动态资源
  let v={};
  $(function() {
    axios.get(&#39;http://test.csx365.com:4000/sellingJson.html&#39;)
      .then(function(data){
        //定义一个vue对象,方便模板渲染
        v =Object.assign(v, new Vue({
        el : &#39;.char_contain&#39;, //绑定事件名
        data : {
           carbrandList : data.data.carbrandList, //数据流
         }
        })); 
       })
       .catch(function(err){
         console.log(err);
       });
    });

上面是我整理給大家的,希望今後會對大家有幫助。

相關文章:

透過JS如何實現文字間歇循環滾動效果

#詳細講解React中的refs(詳細教學)

使用tween.js實作緩動補間動畫演算法

以上是在nginx+vue.js中如何實現前後端分離的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
超越瀏覽器:現實世界中的JavaScript超越瀏覽器:現實世界中的JavaScriptApr 12, 2025 am 12:06 AM

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

使用Next.js(後端集成)構建多租戶SaaS應用程序使用Next.js(後端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:23 AM

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

如何使用Next.js(前端集成)構建多租戶SaaS應用程序如何使用Next.js(前端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:22 AM

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript:探索網絡語言的多功能性JavaScript:探索網絡語言的多功能性Apr 11, 2025 am 12:01 AM

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的演變:當前的趨勢和未來前景JavaScript的演變:當前的趨勢和未來前景Apr 10, 2025 am 09:33 AM

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

神秘的JavaScript:它的作用以及為什麼重要神秘的JavaScript:它的作用以及為什麼重要Apr 09, 2025 am 12:07 AM

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python還是JavaScript更好?Python還是JavaScript更好?Apr 06, 2025 am 12:14 AM

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

如何安裝JavaScript?如何安裝JavaScript?Apr 05, 2025 am 12:16 AM

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境