摘要:的意思是,如果碰到不能的情況,就整頁刷新首頁路由開發(fā)環(huán)境中使用了,需要將每一個的配置中寫上歡迎繼續(xù)關(guān)注本博的更新中間層實踐一基于的全棧式開發(fā)中間層實踐二搭建項目框架中間層實踐三配置中間層實踐四模板引擎中間層實踐五中間層的邏輯處理
版權(quán)聲明:更多文章請訪問我的個人站Keyon Y,轉(zhuǎn)載請注明出處。
這里沒什么可說的,webpack的配置和插件實在太多了,用的時候查文檔就行了。
項目地址:https://github.com/KeyonY/NodeMiddle
這里 先貼 個我的配置,注釋寫的挺詳細(xì)的了。
開發(fā)環(huán)境的webpack配置:var path = require("path"); var webpack = require("webpack"); var TransferWebpackPlugin = require("transfer-webpack-plugin"); var ExtractTextPlugin = require("extract-text-webpack-plugin"); var localOptions = require("./localOptions"); var entrys = require("./entrys.js"); module.exports = { entry: entrys, output: { path: path.resolve(__dirname, "./dist"), publicPath: localOptions.host, filename: "Scripts/[name].js" }, devtool: "eval-source-map", module: { rules: [ {test: /.js$/,loader:"babel-loader"}, {test: /.pug$/,loader:"pug-loader",options: {pretty: true}}, {test: /.scss$/,use: ExtractTextPlugin.extract({fallback: "style-loader", use: ["css-loader",{loader: "postcss-loader",options: {config: {path: "./build/postcss.config.js"}}},"sass-loader"]})}, ] }, plugins: [ new webpack.BannerPlugin("Copyright 2017 Keyon Y"), //把指定文件夾下的文件復(fù)制到指定的目錄 new TransferWebpackPlugin([ {from: "../src/assets", to: "../dist/assets"}, ],path.resolve(__dirname)), // webpack就能夠比對id的使用頻率和分布來得出最短的id分配給使用頻率高的模塊 new webpack.optimize.OccurrenceOrderPlugin(), new webpack.HotModuleReplacementPlugin(), new ExtractTextPlugin({filename:"Contents/[name].css",disable: true,allChunks: true}), // 允許錯誤不打斷程序 new webpack.NoErrorsPlugin() ] }生產(chǎn)環(huán)境的webpack配置:
var path = require("path"); var webpack = require("webpack"); var TransferWebpackPlugin = require("transfer-webpack-plugin"); var ExtractTextPlugin = require("extract-text-webpack-plugin"); var entrys = require("./entrys.js"); module.exports = { entry: entrys, output: { path: path.resolve(__dirname, "../dist"), publicPath: "/", filename: "Scripts/[name].js" }, module: { rules: [ {test: /.js$/,loader:"babel-loader"}, {test: /.pug$/,loader:"pug-loader",options: {pretty: true}}, {test: /.scss$/,use: ExtractTextPlugin.extract({fallback: "style-loader", use: ["css-loader",{loader: "postcss-loader",options: {config: {path: "./build/postcss.config.js"}}},"sass-loader"]})} ] }, plugins: [ new webpack.BannerPlugin("Copyright 2017 Keyon Y"), //把指定文件夾下的文件復(fù)制到指定的目錄 new TransferWebpackPlugin([ {from: "../src/assets", to: "../dist/assets"}, {from: "../src/Views", to: "../dist/Views"}, ],path.resolve(__dirname)), // webpack就能夠比對id的使用頻率和分布來得出最短的id分配給使用頻率高的模塊 new webpack.optimize.OccurrenceOrderPlugin(), new ExtractTextPlugin({filename:"Contents/[name].css",disable: false,allChunks: true}), // 混淆壓縮js和css new webpack.optimize.UglifyJsPlugin({ compress: { properties: false, warnings: false }, output: { beautify: false, quote_keys: true }, mangle: { screw_ie8: false }, sourceMap: false, except: ["$", "exports", "require"] //排除關(guān)鍵字 }) ], stats: "normal" }
entry的配置,因為有太多的組件("src/Components"中)了,所以為了簡化webpack.config的內(nèi)容,我把entry的配置寫在entry.js作為一個模塊導(dǎo)入進來。
// entry.js var webpackHotMiddlewareScript = "webpack-hot-middleware/client?reload=true&timeout=2000"; //reload=true的意思是,如果碰到不能hot reload的情況,就整頁刷新 var isDev = process.env.NODE_ENV === "dev"; var entryJson = { base: "./src/Components/base/base.js", index: "./src/Components/index/index.js", // 首頁--Default 路由 message: "./src/Components/message/message.js", home: "./src/Components/home/home.js", modals: "./src/Components/modals/modals.js", } if(isDev) { // 開發(fā)環(huán)境中使用了webpack-hot-middleware,需要將每一個entry的配置中寫上"webpack-hot-middleware/client?reload=true&timeout=2000" var transJson = {}; for(let e in entryJson) { transJson[e] = [entryJson[e], webpackHotMiddlewareScript]; } module.exports = transJson; }else { module.exports = entryJson; }
歡迎繼續(xù)關(guān)注本博的更新
Node中間層實踐(一)——基于NodeJS的全棧式開發(fā)
Node中間層實踐(二)——搭建項目框架
Node中間層實踐(三)——webpack配置
Node中間層實踐(四)——模板引擎pug
Node中間層實踐(五)——express-中間層的邏輯處理
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/110123.html
摘要:項目地址腳手架使用過,的同學(xué)都清楚,官方推薦的安裝方式是通過專用的來快速搭建一個由編譯打包的項目框架。用在層的模塊化,在中間層實現(xiàn)了模塊化。這樣,從中間層到前端都實現(xiàn)了熱加載。 版權(quán)聲明:更多文章請訪問我的個人站Keyon Y,轉(zhuǎn)載請注明出處。 項目地址:https://github.com/KeyonY/NodeMiddle 腳手架? 使用過angular2,vue2的同學(xué)都清楚,官...
摘要:的最后一個大招就是替換一些傳統(tǒng)的服務(wù)端語言,例如,,等,在業(yè)務(wù)層上面使用來開發(fā)服務(wù)端完全不成問題。更多的的使用細(xì)節(jié)和技巧建議關(guān)注美團博客大搜車論壇下一篇我們開啟如何結(jié)合和搭建一個開發(fā)環(huán)境和項目目錄 往期回顧 前面2期都講得是瀏覽器端的東西比較多,包括Webpack,雖然是Node處理的,但是還是瀏覽器端用的多,對于現(xiàn)在的前端開發(fā)來說,不懂一點服務(wù)端的東西,簡直沒辦法活,一般的招聘要求都...
摘要:總結(jié)我覺得,以后基于的全棧式開發(fā)的模式將會越來越流行,這也會引領(lǐng)前端步入工程化時代。歡迎繼續(xù)關(guān)注本博的更新中間層實踐一基于的全棧式開發(fā)中間層實踐二搭建項目框架中間層實踐三配置中間層實踐四模板引擎中間層實踐五中間層的邏輯處理 版權(quán)聲明:更多文章請訪問我的個人站Keyon Y,轉(zhuǎn)載請注明出處。 前言 近期公司有個新項目,由于后端人手不足,我果斷的提議用node中間層的方案,得到了老大的支持...
摘要:原作者原鏈接基于多入口生成模板用于服務(wù)端渲染的方案及實戰(zhàn)法律聲明警告本作品遵循署名非商業(yè)性使用禁止演繹未本地化版本協(xié)議發(fā)布。這是什么背景現(xiàn)代化的前端項目中很多都使用了客戶端渲染的單頁面應(yīng)用。 原作者:@LinuxerPHL原鏈接:基于 Webpack 4 多入口生成模板用于服務(wù)端渲染的方案及實戰(zhàn) 法律聲明 警告:本作品遵循 署名-非商業(yè)性使用-禁止演繹3.0 未本地化版本(CC BY-...
摘要:原作者原博文地址基于多入口生成模板用于服務(wù)端渲染的方案及實戰(zhàn)法律聲明警告本作品遵循署名非商業(yè)性使用禁止演繹未本地化版本協(xié)議發(fā)布。這是什么背景現(xiàn)代化的前端項目中很多都使用了客戶端渲染的單頁面應(yīng)用。 原作者:@LinuxerPHL原博文地址: 基于 Webpack 4 多入口生成模板用于服務(wù)端渲染的方案及實戰(zhàn) 法律聲明 警告:本作品遵循 署名-非商業(yè)性使用-禁止演繹3.0 未本地化版本(...
閱讀 942·2021-09-07 09:58
閱讀 1494·2021-09-07 09:58
閱讀 2888·2021-09-04 16:40
閱讀 2508·2019-08-30 15:55
閱讀 2416·2019-08-30 15:54
閱讀 1374·2019-08-30 15:52
閱讀 438·2019-08-30 10:49
閱讀 2610·2019-08-29 13:21