成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Wepback + koa2 配置開發(fā)環(huán)境

waterc / 2906人閱讀

摘要:把處理后的配置文件傳遞給服務(wù)器,不過我們在使用它之前,需要把它改造成中間件。因為通過生成的模塊是寫入到內(nèi)存中的,所以我們需要修改開發(fā)環(huán)境中的配置項修改此配置項安裝封裝成中間件。

前言

webpack提供了webpack-dev-server模塊來啟動一個簡單的web服務(wù)器,為了更大的自由度我們可以自己配置一個服務(wù)器,下面介紹如何用koa2來實現(xiàn)。

wepack-dev-middleware

wepack-dev-middleware把webpack處理后的配置文件傳遞給服務(wù)器,不過我們在使用它之前,需要把它改造成koa中間件。

安裝wepack-dev-middleware

npm install wepack-dev-middleware -D

封裝成koa中間件。devMiddleware.js

// 改造成koa中間件
const webpackDev  = require("webpack-dev-middleware");

const devMiddleware = (compiler, opts) => {
  const middleware = webpackDev(compiler, opts);
  return async (ctx, next) => {
    await middleware(ctx.req, {
      end: (content) => {
        ctx.body = content;
      },
      setHeader: (name, value) => {
        ctx.set(name, value);
      }
    }, next);
  };
};

module.exports=devMiddleware;
webpack-hot-middleware

webpack-hot-middleware模塊主要用來實現(xiàn)熱替換,也就是說我們在修改文件后只需刷客戶端頁面就能看到效果了。因為通過webpack-hot-middleware生成的模塊是寫入到內(nèi)存中的,所以我們需要修改開發(fā)環(huán)境中的output配置項:

// webpack.dev.conf.js
output: {
  filename: "[name].[hash].js",
  path: "/" // 修改此配置項
}

安裝webpack-hot-middleware

npm install webpack-hot-middleware -D

封裝成koa中間件。hotMiddleware.js

// 改造成koa中間件

const webpackHot = require("webpack-hot-middleware")
const PassThrough = require("stream").PassThrough;

const hotMiddleware = (compiler, opts) => {
  const middleware = webpackHot(compiler, opts);
  return async (ctx, next) => {
    let stream = new PassThrough();
    ctx.body = stream;
    await middleware(ctx.req, {
        write: stream.write.bind(stream),
        writeHead: (status, headers) => {
          ctx.status = status;
          ctx.set(headers);
        }
      }, next);
  };
};


module.exports = hotMiddleware;
koa2實現(xiàn)服務(wù)器

安裝koa:

npm install koa -D

server.js

const Koa = require("koa");
const webpack = require("webpack"); // webpack模塊

const config = require("./webpack.dev.conf"); // 開發(fā)環(huán)境模塊
// 中間件容器,把webpack處理后的文件傳遞給一個服務(wù)器
const devMiddleware = require("./devMiddleware");
// 在內(nèi)存中編譯的插件,不寫入磁盤來提高性能
const hotMiddleware = require("./hotMiddleware");
const compiler = webpack(config);

const app = new Koa();

app.use(devMiddleware(compiler, {
  publicPath: config.output.publicPath // "/"
}));
app.use(hotMiddleware(compiler));
app.listen(3000);

console.log("lostening on port 3000");

配置package.json:

"scripts": {
  "server": "node server.js --mode development"
}

啟動服務(wù)器:

npm run server
通過koa2中間件配置

koa2社區(qū)也提供了封裝好的中間件,例如koa-webpackkoa-webpack-middleware,不過后者已經(jīng)好久沒有維護了,下面我們用koa-webpack來簡化配置。

安裝依賴:

npm install koa-webpack -D

修改server.js:

const Koa = require("koa");
const middleware = require("koa-webpack");
const webpack = require("webpack");
const config = require ("./webpack.dev.conf.js");

const compiler = webpack(config);

const app = new Koa();

app.use(middleware({
  compiler: compiler
}));
app.listen(3000);

console.log("lostening on port 3000");

模塊版本:

"devDependencies": {
  "koa": "^2.5.0",
  "koa-webpack": "^3.0.0",
  "webpack": "^4.0.1",
  "webpack-cli": "^2.0.9",
  "webpack-dev-middleware": "^3.0.0",
  "webpack-hot-middleware": "^2.21.1",
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/93159.html

相關(guān)文章

  • wepback入門到放棄

    摘要:四配置配置規(guī)則放在的數(shù)組里,每個是一個對象,是正則匹配,匹配文件后綴名,是要用是數(shù)組是所需要的是要加載哪些文件,是忽略掉哪些文件。實現(xiàn)解析,用會在寫入在文件頂端導(dǎo)入中加入插件。 最近研究webpack略有小成,特此寫篇博客。雖然webpack有官網(wǎng)api,但是個人認為webpack api一點都不人性化, 不自己研究研究,根本看不懂。今天先從寫webpack-dev-server開始。...

    blastz 評論0 收藏0
  • Koa2微信公眾號開發(fā)(一) 本地開發(fā)調(diào)試環(huán)境搭建

    摘要:本篇是該系列的第一篇,本地開發(fā)環(huán)境搭建以及接入微信。若確認此次請求來自微信服務(wù)器,原樣返回參數(shù)內(nèi)容,則接入生效,成為開發(fā)者成功,否則接入失敗。 一、簡介 關(guān)于微信公眾號的介紹就省略了,自行搜索。注冊過程也不說了。我們會直接注冊測試號來實現(xiàn)代碼。這將會是個全面講解微信公眾號開發(fā)的系列教程。本篇是該系列的第一篇,本地開發(fā)環(huán)境搭建以及接入微信。在開始之前最好去看看開發(fā)者文檔微信公眾平臺技術(shù)文...

    snifes 評論0 收藏0
  • 最好用的koa2+mysql的RESTful API腳手架,mvc架構(gòu),支持node調(diào)試,pm2部署

    摘要:基于構(gòu)建的服務(wù)器腳手架這是一個基于的輕量級腳手架,支持支持使用編寫。腳手架可以根據(jù)不同的環(huán)境配置不同的信息運行價值,支持開發(fā),測試,生產(chǎn)環(huán)境的不同參數(shù)配置。 #基于webpack構(gòu)建的 Koa2 restful API 服務(wù)器腳手架 這是一個基于 Koa2 的輕量級 RESTful API Server 腳手架,支持 ES6, 支持使用TypeScript編寫。 GIT地址:https...

    xiongzenghui 評論0 收藏0
  • 一個配置簡單卻功能強大的React Koa2同構(gòu)isomorphic/universal項目模板

    摘要:如果你還不是很了解什么是同構(gòu),請先自行。現(xiàn)在市面上有很多優(yōu)秀同構(gòu)模板,但是其中有不少不能完美解決所有難題,只有其中一部分可以,但是這一部分模板卻又集成了很多難懂的黑科技,熟悉周期較長,且難以擴展和維護。 如果你還不是很了解什么是同構(gòu),請先自行Google。 現(xiàn)在市面上有很多優(yōu)秀同構(gòu)模板,但是其中有不少不能完美解決所有難題,只有其中一部分可以,但是這一部分模板卻又集成了很多難懂的黑科技,...

    wwolf 評論0 收藏0
  • Webpack + Vue2 + Koa2 構(gòu)建應(yīng)用

    摘要:從第一個中間件開始執(zhí)行,遇到進入下一個中間件,一直執(zhí)行到最后一個中間件,在逆序,執(zhí)行上一個中間件之后的代碼,一直到第一個中間件執(zhí)行結(jié)束才發(fā)出響應(yīng)。 github地址: https://github.com/zdliuccit/... 歡迎star 該構(gòu)建適用PC端開發(fā),通過配置亦可支持移動端開發(fā) 具體以代碼為主,持續(xù)更新.... 技術(shù)棧 Webpack3 Koa2 Axios Vue...

    Bryan 評論0 收藏0

發(fā)表評論

0條評論

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