webpack简单配置,路由配置,接口拦截配置,基本文件配置

新建项目

  项目脚手架搭建  react

     相关文件

        webpack.config.js

           使用相关插件

              path

              html-webpack-plugin

                html文件处理插件

              clean-webpack-plugin

                清除上次打包文件插件

              copy-webpcak-plugin

                 打包时需要复制的相关文件的插件(比如一些报表文件模版)

              speed-measure-webpack-plugin

                 速度测量插件  (const  SpeedMeasurePlugin = require("speed-measure-webpack-plugin");  const smp = new SpeedMeasurePlugin();  const webpackConfig = smp.wrap({})

              happypack

                一些loader进程管理

              打包配置

                 {

mode:’环境设置’,

  entry:‘入口文件设置’,

  output:{path:path.resovle(__dirname,’dist’),filename:’main_[hash].js’,publicPath:’根据环境设置url前缀(接口域名代理字符)’},

  models:{rules:[

说明:{

  test:‘正则匹配/.js/’

  exclude:‘排除。。。(可以设置后缀名或者文件路径)’

  include:‘包含。。。(可以设置后缀名或者文件路径)’

  loader:‘loader设置url-loader’或者use:[loader:‘  ’,oprios:{plugins:[插件设置]或者其他设置}](use[可以设置happy pack插件:happypack/loader ? id = ‘happypack插件配置的id’])



]},(loader配置)

    (loader配置顺序:如,url-loader,babel-loader,style-loader,css-loader,file-loader)

  resolve:{extensions:[’js’,’json’,’jsx’,’css’]},(在导入没有带后缀名的文件时,尝试在文件加入上面后缀名访问)

  plugins:[]    (插件配置)

}

        bable.config.js

           相关插件  (用法function(api){ api.cache(true);

              presets:[

[‘@babel/preset-env’,

                 {‘targets’:{’browsers’:["last 2 versions”,"safari >= 7”,”ie >=9”,”chrome >=49”]}}

],

                 '@babel/preset-react’

    ],

              return { “plugins”:{

      ["@babel/plugin-proposal-decorators", { "legacy": true }],(类装饰器  旧:设置legacy时需要loose支持,有顺序)

               @babel/plugin-proposal-dynamic-import, ( import 处理插件)

               @bacel/plugin-transform-runtime,(将helper和polypill都改为从一个统一的地方引入,引入的对象和全局变量完全隔离)

["@babel/plugin-proposal-class-properties", { "loose" : true }],(解析类的属性)

               @ babel / plugin-proposal-logic-assignment-operators, (如出现短路时的逻辑处理插件)

               [''@babel/plugin-proposal-optional-chaining'',{loose:false}],(可选链优化  深层嵌套优化处理插件)               

               [''@babel/plugin-proposal-pipeline-operator'',{proposal:'minimal’}],(解析管道运算符)

               ['@babel/plugin-proposal-nullish-coalescing-operator'',{loose:false}],(删除无效的合并运算符)

      @ babel / plugin-proposal-do-expressions,( 插件执行一个 do {多个条件语句}表达式,最终语句完成值是该 do 表达式的完成值 )

      @ babel / plugin-transform-spread ,(扩展运算符转换插件)

      ["@babel/plugin-proposal-object-rest-spread", { "loose": true, "useBuiltIns": true }],(转扩展运算插件)

      ["@babel/plugin-transform-object-assign”],(插件支持Object.assign())

    [“import”,{libraryName: 'antd',libraryDirectory: 'es',style: true,}](and按需引入设置)

} }})

        package.json

           项目打包/启动相关插件

              webpack-dev-server

              webpack-cli

              webpack-merga

      cross-env  (插件解决window系统兼容问题)

        postcss.config.js

            可以做相关的浏览器版本兼容配置

            相关插件

               autoprefixer({prefer:false,plugin:loader=>[request(autoprefixer)({browsers:[‘ie’>=9,’Safari’>=6]})]}})

      public文件

        一些公用文件存放

      dist文件(打包后的文件)

      src文件(项目主文件)

        assets文件(存放图片等资源)

        api相关文件(api接口处理文件)

        modules文件或者pages文件

      (store文件)

        utils文件

          request.js(axios拦截文件)

             (相关插件)axios、history(使用:引入createBrowserHistory(现代浏览器使用)、createMemoryHistory(手机端使用))createBrowserHistory({basename:‘基链接(环境域名)’,forceRefresh:true  /是否强制刷新整个页面})

                axios.defaults.withCredentials = true;  //设置cross跨域并设置访问权限允许跨域携带cookie信息

                拦截设置:

  axios.interceptors.request.use(function (config) { return config;(请求参数拦截处理,如:请求头添加token或者其他(config.[‘headers’].token=......))}, function (error) { return Promise.reject(error);});

                   axios.interceptors.response.use(function (response) { return response;(请求成功返回参数错误处理,如:返回不同状态码跳转不同页面,token失效重登录......)}, function (error) { return Promise.reject(error);(请求失败错误处理,如:登录失效,跳转重新登录)});

          history.js(路由环境配置)

             配置原理(根据package.json文件里面配置的NODE_ENV==‘production’或者’development’加上webpack.config.js里面的Deserver.proxy设置的代理key来配置开发或者正式环境的url前缀,配合createBrowserHistory.basename设置)

          until.js    (公用方法文件)

        index.js(全局引入,如:utils.request、@babel/polyfill、assets/.peg、路由前缀在路由上全局配置)

        routers.js  (路由文件)

        app.js(正经的组建文件,设置页面大致框架和路由跳转设置,也能做一些全局设置)

        index.html(可以做全局引入三方资源)

————————————————————————————————————————

这里的webpack配置是根据webpack4.30版本配置,算不上目前最新版本,配置也比较繁琐,里面用了happypack快速启动快速打包的多线程插件可能会跟你项目的一些配置方式出现冲突。

  • webpack绠鍗曢厤缃,璺敱閰嶇疆,鎺ュ彛鎷︽埅閰嶇疆,鍩烘湰鏂囦欢閰嶇疆
    绛旓細閰嶇疆鍘熺悊(鏍规嵁package.json鏂囦欢閲岄潰閰嶇疆鐨凬ODE_ENV==鈥榩roduction鈥欐垨鑰呪檇evelopment鈥欏姞涓webpack.config.js閲岄潰鐨凞eserver.proxy璁剧疆鐨勪唬鐞唊ey鏉ラ厤缃紑鍙戞垨鑰呮寮忕幆澧冪殑url鍓嶇紑,閰嶅悎createBrowserHistory.basename璁剧疆) until.js (鍏敤鏂规硶鏂囦欢) index.js(鍏ㄥ眬寮曞叆,濡:utils.request銆丂babel/polyfill銆乤ssets/.peg銆璺敱...
  • webpack澶氶〉闈㈡庝箞浣跨敤
    绛旓細webpackConfig.plugins.push(plugin);})璺敱閰嶇疆 鍦ㄥ椤靛簲鐢ㄤ笅锛屾垜浠笇鏈涜闂殑鏄痩ocalhost:8080/a锛岃屼笉鏄痩ocalhost:8080/a.html銆傜敱浜巜ebpack-dev-server鍙槸灏嗘枃浠舵墦鍖呭湪鍐呭瓨閲岋紝鎵浠ヤ綘娌℃硶鍦╡xpress閲岀洿鎺endfile('output/views/a.html')锛屽洜涓鸿繖涓枃浠跺疄闄呬笂杩樹笉瀛樺湪銆傝繕濂絯ebpack鎻愪緵浜嗕竴涓猳utputF...
  • 璇﹁В鍩轰簬vue-cli3.0濡備綍鏋勫缓鍔熻兘瀹屽杽鐨勫墠绔灦瀛
    绛旓細涓昏鍖呮嫭璺敱鎳掑姞杞姐佽矾鐢卞墠缃鏌ャ佸悎娉曟ф牎楠岄昏緫,浠ヤ笅鏄垜鍐欑殑涓涓绠鍗曡矾鐢import Vue from 'vue';import Router from 'vue-router';// 璺敱鎳掑姞杞絚onst getComponent = (name: string) => () => import(`./views/${name}.vue`);Vue.use(Router);const router = new Router({ routes: [ { path: ...
  • Vue鍙互涓嶇敤webpack鍋璺敱鍔熻兘鍚
    绛旓細1銆佸畨瑁卬ode锛寁ue杩愯闇瑕佸熀浜巒pm涓瀹氱殑鐗堟湰锛屾墍浠ラ鍏堝崌绾pm鍒版渶鏂扮殑鐗堟湰锛岃屽湪瀹夎鐨勮繃绋嬩腑涓汉姣旇緝鍠滄娣樺疂鐨勯暅鍍忥紝鎵浠ュ厛瀹夎cnpm锛堝洜涓洪熷害鍜岀ǔ瀹氭ч兘姣旇緝濂斤級2銆佸湪鐩爣鏂囦欢澶逛笅鎵撳紑缁堢 3銆佹墽琛宑npm install vue-cli -g 鍏ㄥ眬瀹夎 杩愯vue鏌ョ湅瀹夎鏄惁鎴愬姛 4銆佽繍琛寁ue init webpack(娉細妯℃澘鍚嶇О)...
  • webpack涓槸浠涔堟剰鎬?鏈変粈涔堢敤?濡備綍鐢
    绛旓細浣犻渶瑕閰嶇疆 Webpack(娣诲姞 loader):// webpack.config.js module.exports = { entry: './main.js',output: { path: './build', // 鍥剧墖鍜 JS 浼氬埌杩欓噷鏉 publicPath: 'http://mycdn.com/', // 杩欎釜鐢ㄦ潵鎴愭垚姣斿鍥剧墖鐨 URL filename: 'bundle.js'},module: { loaders: [{ test: ...
  • Vue鍙互涓嶇敤webpack鍋璺敱鍔熻兘鍚
    绛旓細浠栦滑涓嶆槸涓嶇浉鍏崇殑涓や釜涓滆タ锛屼篃灏辨槸璇翠笉鏄繀椤讳竴璧蜂娇鐢ㄧ殑锛寃ebpack鍙槸鎻愪緵浣滀负涓涓伐鍏凤紝vue鐨璺敱妯″潡鍦ㄥ墠绔殑鍒╃敤璺緞鍔犺浇瀵瑰簲缁勪欢瑙嗗浘鐨勫姛鑳姐傚彟澶栨墦涓獁ebpack鏈浣冲疄璺电殑灏廳emo锛//github.com/chen2009277025/webpack-ant-design-demo
  • 濡備綍閫氳繃 Vue+Webpack 鏉ュ仛閫氱敤鐨勫墠绔粍浠跺寲鏋舵瀯璁捐
    绛旓細锛1锛: gulp + webpack 鏋勫缓鎵撳寘宸ュ叿锛 浣跨敤浜嗕竴绯诲垪鐨刲oader锛屾瘮濡傦細vue-loader, sass-loader, babel-loader , 浠ュ強 postcss锛宲ostcss-custom-properties锛岀瓑绛 [2] : postcss-custom-properties : 鐢ㄦ潵鍋氭牱寮忓叏灞鍖, 鍙渶瑕侀氳繃鍙橀噺鍘荤淮鎶わ紝閫氳繃缂栬瘧鍙橀噺鏃㈠彲浠ユ崲鑲ゃ俒3] : vue-loader...
  • require.ensure鏄粈涔堣娉
    绛旓細浣跨敤`require.ensure`鏃堕渶瑕佹敞鎰忥紝瀹冧富瑕佺敤浜庨珮绾閰嶇疆鍜屾ц兘浼樺寲鍦烘櫙銆傚浜庡ぇ澶氭暟甯歌鐨勫紑鍙戝満鏅锛學ebpack鐨勫父瑙勫鍏ユ満鍒跺凡缁忚冻澶熶娇鐢ㄣ備絾鍦ㄩ渶瑕佽繘琛屼唬鐮佸垎鍓插拰鎳掑姞杞芥椂锛宍require.ensure`浼氭槸涓涓緢濂界殑閫夋嫨銆傚悓鏃讹紝闅忕潃Webpack鐗堟湰鐨勮凯浠f洿鏂帮紝鏌愪簺鐗规у彲鑳戒細鏈夋墍鍙樺寲锛屽洜姝ゅ缓璁紑鍙戣呭湪浣跨敤鏃舵煡闃呮渶鏂扮殑瀹樻柟...
  • Webpack鎬庢牱鎿嶄綔缂撳瓨
    绛旓細閭d箞鎺ヤ笅鏉ヨ鏉閰嶇疆 webpack:const path = require('path');const webpack = require('webpack');const ExtractTextPlugin = require('extract-text-webpack-plugin');module.exports = { entry: { pageA: [path.resolve(__dirname, './src/pageA.js')], pageB: path.resolve(__dirname, './src/...
  • vuemarkdown涓璵ark鏍囩鏃犳晥
    绛旓細1锛塧ssets锛氳祫婧愮洰褰曪紝鏀剧疆涓浜涘浘鐗囨垨鑰呭叕鍏眏s銆佸叕鍏眂ss銆傝繖閲岀殑璧勬簮浼氳webpack鏋勫缓锛2锛塩omponents锛氱粍浠剁洰褰曪紝鎴戜滑鍐欑殑缁勪欢灏辨斁鍦ㄨ繖涓洰褰曢噷闈紱3锛塺outer锛氬墠绔璺敱锛鎴戜滑闇瑕閰嶇疆鐨勮矾鐢辫矾寰勫啓鍦╥ndex.js閲岄潰锛4锛堿pp.vue锛氭牴缁勪欢锛5锛塵ain.js锛氬叆鍙s鏂囦欢锛5銆乻tatic锛氶潤鎬佽祫婧愮洰褰曪紝濡傚浘鐗囥佸瓧浣撶瓑銆
  • 扩展阅读:路由器2.4g最佳信道 ... 家里1000兆宽带wifi却很慢 ... 1000兆宽带对照表 ... web配置路由器子接口 ... 1000兆的网速多少mbs ... 路由器2.4ghz怎么设置 ... 路由器配置参数表大全 ... 路由器登录官网入口 ... 电脑怎么设置1000兆 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网