国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

moky = (mock + proxy) // 一個簡潔通用的前后端協作工具

miqt / 793人閱讀

摘要:現在一般需要分前后端,因為大量前端框架和工具鏈的涌入根源是需求復雜了,讓前端可以跟后端獨立開來。但是,無論是前端去寫模板,亦或是完全前后端分離去寫,都脫離不了與后端進行數據交互。

--> GitHub地址

舊石器時代,Web 開發并不會去刻意區分前后端,寫后端的人覺得寫數據庫跟寫模板都是應該具備的技能。現在一般需要分前后端,因為大量前端框架和工具鏈的涌入(根源是需求復雜了),讓前端可以跟后端獨立開來。但是,無論是前端去寫模板,亦或是完全前后端分離去寫 JSX,都脫離不了與后端進行數據交互。

以上是本工具產生的動因,我們暫且將前后端交互的數據分為模板數據(由后端直接填充)和異步數據(通過 HTTP 接口),工具的作用就是平滑地進行數據交互過渡,降低溝通成本。

名字由來

在開發前期,后端可能并沒有開始寫或者沒有寫完,前端此時只能通過本地數據模擬實際數據進行布局和組件的調試,一般叫做 mock 數據。

待前端寫的差不多了,后端可能也差不多了,那么此時需要聯調,因為聯調的過程很可能伴隨著大量的修復工作,前后端雜糅在一起部署的代價太高,高效的方式就是通過代理的方式直接從模擬數據切到后端數據,這里叫 proxy。

如果把 mock 和 proxy 結合起來,那么就叫 moky !

使用說明

項目的 GitHub 里面已經簡單的說了下使用方法,不過我覺得還是有必要補充點額外的說明。

首先,需要強調的是,moky 側重點只有 mock 和 proxy,因此可以做到代碼也只有 200 行左右,市場上已經有很多人做這方面工作了,而基本都不能滿足我的需求。

使用跟 webpack 很類似,全局安裝 npm i moky -g ,只需要一個配置文件,然后直接運行在配置文件 moky.config.js 所在目錄運行 moky ,或者通過參數指定配置文件路徑 moky -c /path/to/xxx.js

但是,正確使用前一般需要先配置好 moky.config.js,下面針對配置文件做一個羅嗦的介紹:

// 這里之所以需要 path,是因為下面的文件路徑都必須是絕對路徑
var path = require("path");

module.exports = {
  // 本地監聽端口,運行 moky 會起一個 server
  localPort: 3000,
  
  // 異步數據的 mock 目錄路徑
  asyncMockPath: path.join(__dirname, "mock"),
  
  // 同步數據的 mock 目錄路徑
  viewsMockPath: path.join(__dirname, "tplMock"),
  
  // 模板所在目錄,如果你是完全前后端分離,沒有模板,那至少有個 index.html 吧
  // 把這個 index.html 所在的目錄當作模板目錄即可
  viewsPath: path.join(__dirname, "views"),
  
  // 這個并沒有卵用,如果有 favicon 還是設置下吧
  faviconPath: path.join(__dirname, "public", "favicon.ico"),
  
  // 這里不要被 js 和 css 誤導了,這里是設置靜態資源的路由
  // 注意,其優先級比較高哦,所以不要漏了/多了/跟其它沖突了
  publicPaths: {
    "/css": path.join(__dirname, "public", "css"),
    "/js": path.join(__dirname, "public", "js"),
  },
  
  // 模板引擎的設置,具體參考 koa-views,moky 已經內置了幾個模板引擎,可以直接設置就用
  // 注意兩點:如果選擇 freemarker 一定保證 JAVA_HOME 等設置是對的;
  // 如果是純 HTML 頁面,你隨便選個模板引擎即可,推薦 nunjucks
  viewConfig: {
    extension: "html",
    map: { html: "nunjucks" },
  },
  
  // 這里為了解決很多 Web 容器采用的 Virtual Host 機制(一個 IP:PORT 通過域名對應多個服務)
  // 由于我們本地啟動的可能是 http://localhost:3000,如果有 Virtual Host 機制則通不過的
  // 如果設置了 hostName,在發送請求前程序會自動替換 Host 頭為 hostName
  hostName: "hacker-news.firebaseio.com",
  
  // 這里是proxy 映射表,在啟動的時候如果是 moky -e dev,異步請求會自動走 dev 對應的 proxy
  // 如果沒找到對應的,那么默認用本地的 mock 數據作為異步數據
  proxyMaps: {
    dev: "https://hacker-news.firebaseio.com",
    local: "http://localhost:8080",
  },
  
  // 這是頁面路由的設置,這里的 key 是路由(URL 里見到的),value 是頁面的相對路徑
  // 路徑相對于 viewsPath , 不用加后綴,viewConfig.extension 指明了
  urlMaps: {
    "/": "index",
    "/page": "page/index",
  },
}

最簡單的試用就是全局安裝 moky,然后 clone 項目,進入 example 目錄,直接運行 moky

先看下目錄結構:

├── mock
│?? ├── get
│?? │?? ├── test
│?? │?? │?? └── index.json
│?? │?? └── v0
│?? │??     └── item
│?? │??         └── 2921983.json.json
│?? └── post
│??     └── index.json
├── moky.config.js
├── public
│?? ├── css
│?? │?? └── main.css
│?? ├── favicon.ico
│?? └── js
│??     └── main.js
├── tplMock
│?? ├── index.json
│?? └── page
│??     └── index.json
└── views
    ├── index.html
    └── page
        └── index.html

直接運行 moky 會默認使用 mock 模式,數據流是這樣的:

我們瀏覽器打開 http://localhost:3000/page

路由會根據我們的設置匹配一遍:靜態資源 -> 頁面 -> 異步接口,這里匹配到頁面就停止了

程序會去 tplMock/page/index.json 下拿模板數據,然后填充渲染返回

此時頁面里的靜態資源的會被首先從 public 下路由

然后會有個異步接口 GET v0/item/2921983.json,會最終被異步處理模塊處理

因為我們啟動的時候是 mock 模式,于是會去 mock/get 文件夾找對應位置的 json 作為本地 mock 數據

如果我們是 moky -e dev 啟動的,那么 GET v0/item/2921983.json 會被從 proxyMaps.dev 反代

遺留問題

模板數據無法走 proxy 從遠端獲取

對第三方登錄/認證不友好

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91120.html

相關文章

  • 如何更有效率和質量地開發Vue項目

    摘要:前言自總結完了上篇前端工程化的思想,并在全家桶的項目加以實踐,趁熱給大家總結一篇如何更有效率與質量地開發項目,以及其中踩過的一個個坑。。。 前言 自總結完了上篇前端工程化的思想,并在vue全家桶的項目加以實踐,趁熱給大家總結一篇如何更有效率與質量地開發vue項目,以及其中踩過的一個個坑。。。 基于vue-cli的自定義模板(Custom Templates) 小伙伴們的vue項目應該都...

    ShevaKuilin 評論0 收藏0
  • 基于webpack前后分離開發環境實戰

    摘要:背景隨著互聯網應用工程規模的日益復雜化和精細化,我們在開發一個標準應用的早已開始告別單干模式,為了提升開發效率,前后端分離的需求越來越被重視,前端負責展現交互邏輯,后端負責業務數據接口,基本上也成為了我們日常項目分工中的標配,但是前后端分離 背景 隨著互聯網應用工程規模的日益復雜化和精細化,我們在開發一個標準web應用的早已開始告別單干模式,為了提升開發效率,前后端分離的需求越來越被重...

    soasme 評論0 收藏0
  • 丁香園開源接口管理系統

    摘要:致力于解決前后端開發協作過程中出現的各類問題,提高開發效率,對接口做統一管理,同時也能為后續的迭代維護提供更便捷的方式。丁香園也將努力持續的做技術輸出產品輸出,為開源社區做出自己的一份力量。 API Mocker 先貼上項目地址:DXY-F2E/api-mocker 隨著web發展,前后端分離的演進,網頁的交互變的越來越復雜。在項目開發過程中,前后端并行開發時,在涉及到接口的部分,總是...

    mingde 評論0 收藏0
  • 淺談前mock

    摘要:引言前端開發經常需要等待后端的接口,嚴重影響了開發效率,我們一般采用方式來避免這個問題。可能會涉及到門技術,分別是服務端技術隨機生成特定格式數據的技術請求轉發請求攔截。 引言 前端開發經常需要等待后端的接口,嚴重影響了開發效率,我們一般采用mock方式來避免這個問題。本人參考了大量文章,結合自己的經驗,給出自己在mock上的一些理解。 1. 原理 何為mock,我認為mock主要就是通...

    elina 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<