webpack+react+react-router兼容ie8

這幾天解決了reactie8下兼容性,解決了我們網(wǎng)站在ie8上打開是空白頁(yè)的問題。親測(cè)完全可用,我們的網(wǎng)站 http://bp.microyan.com??梢栽?code>ie8下看看。需要說明的是,我們網(wǎng)站開發(fā)的時(shí)候完全沒有考慮ie8,我們初衷只是兼容chrome。后來做兼容ie8,代碼上基本上沒做修改,主要是修改了配置文件(修改后的配置文件見下文)。

  1. 首先github上這個(gè)教程react-ie8,我們照著先做一遍,其中對(duì)我們網(wǎng)站上的修改包括(重點(diǎn)是react降級(jí)到v0.14)。

  2. 然后打開我們的ie8瀏覽器,看看網(wǎng)站打不開的報(bào)錯(cuò)信息!如圖所示:<br />

    ie8錯(cuò)誤提示圖片
    <br />
    上面提到的github上,有一份表格,每個(gè)錯(cuò)誤對(duì)應(yīng)的解決方法,如下圖所示:<br />
    ie8錯(cuò)誤對(duì)應(yīng)圖
    <br />
    這次我們看下,我們ie8上面的每個(gè)錯(cuò)誤,在下圖中都能找到解決辦法!每個(gè)錯(cuò)誤都解決完,我們的網(wǎng)站就能打開了!

  3. 請(qǐng)注意,請(qǐng)注意,請(qǐng)注意,重點(diǎn)來了!
    當(dāng)我照著我上面的方式一個(gè)一個(gè)修改的時(shí)候,我發(fā)現(xiàn)很多錯(cuò)誤并不能解決!ie8還是打不開!這是為什么?聽我慢慢道來:我們的項(xiàng)目代碼分為兩部分(我們自己寫的代碼和node_modules里面引用的外部代碼),按照這個(gè)github上的教程,我們只能解決我們自己代碼中的兼容性,并不能解決node_modules中應(yīng)用的代碼的兼容性!
    比如:Exception thrown and not caught這個(gè)問題,他給的解決方法是:把 require('es5-shim') require('es5-shim/es5-sham') 插入到入口文件的最上方,并且在代碼中不要使用 export * from 'xxx'
    這樣使用其實(shí)可以解決我們代碼中的兼容性,但是node_modules里面應(yīng)用的外部庫(kù)的兼容并不能解決。那我們應(yīng)該怎么辦?
    我們把這些編譯文件放到webpack配置文件中,讓webpack打包的時(shí)候,也去轉(zhuǎn)義node_modules里面的文件!
    比如es5-shim這個(gè)庫(kù),我們的引用方式如下面的配置文件,我們的es3ify就使用es3ify-webpack-plugin來代替,全部都集成到webpack配置文件中。

本文重要思想:不要僅僅考慮自己寫的代碼,也需要考慮package.json中引用的別的文件?。?!

其他的問題,我們可以自行搜索解決。對(duì)了我們當(dāng)時(shí)還刪除了webpack-hot-middleware,因?yàn)椴患嫒莺孟袷恰?/strong>

具體配置文件如下:

var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var es3ifyPlugin = require('es3ify-webpack-plugin');
module.exports = {
    devtool: 'inline-source-map',
    entry: [
        "es5-shim", "es5-shim/es5-sham", 'babel-polyfill', './src/index'
    ],
    output: {
        path: path.join(__dirname, 'dist'),
        filename: 'bundle.js',
        publicPath: 'http://localhost:3000/'
    },
    plugins: [
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NoErrorsPlugin(),
        new webpack.DefinePlugin({
            "process.env": {
                NODE_ENV: JSON.stringify('development')
            }
        }),
        new HtmlWebpackPlugin({
            filename: 'index.html',
            template: path.join(__dirname, 'assets/index-template.html')
        }),
        new es3ifyPlugin()
    ],
    resolve: {
        extensions: [
            '', ".js"
        ],
        root: path.join(__dirname, 'src')
    },
    module: {
        postLoaders: [
            {
                test: /\.js$/,
                loaders: ['export-from-ie8/loader']
            }
        ],
        loaders: [
            {
                test: /\.css$/,
                loader: 'style-loader!css-loader'
            }, {
                test: /\.js$/,
                loaders: ['babel-loader?cacheDirectory'],
                include: path.join(__dirname, 'src')
            }, {
                test: /\.styl$/,
                loaders: ['style-loader', 'css-loader', 'stylus-loader']
            }, {
                test: /\.(png|jpg|gif|svg)$/,
                loader: 'url-loader?limit=1'
            }, {
                test: /\.(htc)$/,
                loader: 'url-loader?limit=1'
            }
        ]
    }
};

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 寫在開頭 先說說為什么要寫這篇文章, 最初的原因是組里的小朋友們看了webpack文檔后, 表情都是這樣的: (摘...
    Lefter閱讀 5,442評(píng)論 4 31
  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺,特此分享以備自己日后查看,也希望更多的人看到...
    小小字符閱讀 8,368評(píng)論 7 35
  • 最近在學(xué)習(xí) Webpack,網(wǎng)上大多數(shù)入門教程都是基于 Webpack 1.x 版本的,我學(xué)習(xí) Webpack 的...
    My_Oh_My閱讀 8,330評(píng)論 40 247
  • 版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。 webpack介紹和使用 一、webpack介紹 1、由來 ...
    it筱竹閱讀 11,458評(píng)論 0 21
  • 熾熱與喧囂在城市的街頭漸漸褪去 浮屠塔的鐘聲在人們心中的遠(yuǎn)方開始回蕩 久久難以忘卻 一滴水 攜帶著絲絲寒意在嫩葉上...
    不懂wz閱讀 311評(píng)論 0 2

友情鏈接更多精彩內(nèi)容