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

資訊專欄INFORMATION COLUMN

webpack從零開始

darkbug / 386人閱讀

摘要:一基礎配置項目安裝安裝并新建文件,并初始化文件入口出口配置插件安裝配置用來解析文件轉(zhuǎn)譯成瀏覽器可以識別的文件。以形式在頁面中插入代碼加載文件是否開啟代碼壓縮。

一.基礎配置 1.init項目
mkdir react-webpack-demo
cd react-webpack-demo
mkdir src
mkdir dist
npm init -y
2.安裝webpack

安裝webpack,并新建webpack.js文件,并初始化文件

yarn add webpack  webpack-cli webpack-dev-server -D
mkdir config
touch config/webpack.common.js
module.exports = {
   
    entry: ["./src/index.js"],//入口
    output: { //出口
        path: paths.appBuild
    },
    module: {}, //配置 loader
    plugins: [], //插件
};
3.安裝react react-dom
yarn add react react-dom
4.配置loader

loaders
loader 用來解析文件轉(zhuǎn)譯成瀏覽器可以識別的文件。如.less、.jsx等這些文件瀏覽器是不能正常轉(zhuǎn)譯的,loaders的作用就是充當著"翻譯"的作用。

babel 輸入源碼 => 輸出編譯后的代碼,總共分為三個階段:解析,轉(zhuǎn)換,生成。
babel 本身不具有任何轉(zhuǎn)化功能,它把轉(zhuǎn)化的功能都分解到一個個 plugin 里面。因此當我們不配置任何插件時,經(jīng)過 babel 的代碼和輸入是相同的。
插件總共分為兩種:語法插件(Babel 解析(parse) 特定類型的語法,轉(zhuǎn)換插件會自動啟用語法插件),轉(zhuǎn)換插件(例如:箭頭函數(shù) (a) => a 就會轉(zhuǎn)化為 function (a) {return a})

預設(Presets)
preset 可以作為 Babel 插件的組合;
Preset 是逆序排列的(從后往前)
@babel/preset-react就是一個官方 Preset

@babel/polyfill
1.babel 默認只轉(zhuǎn)換 js 語法,而不轉(zhuǎn)換新的 API,比如 Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise 等全局對象,以及一些定義在全局對象上的方法(比如 Object.assign)都不會轉(zhuǎn)碼。
2.babel-polyfill 會污染全局變量,給很多類的原型鏈上都作了修改,如果我們開發(fā)的也是一個類庫供 其他開發(fā)者使用,這種情況就會變得非常不可控。
3.類庫開發(fā),通常我們會傾向于使用 babel-plugin-transform-runtime
4.@babel/preset-env 獲取您指定的任何目標環(huán)境,,按需轉(zhuǎn)碼,引入相應的插件,默認使用browserslist

@babel/core-babel  核心模塊    
@babel/preset-env  編譯ES6等 
@babel/preset-react  轉(zhuǎn)換JSX
@babel/preset-react  轉(zhuǎn)換JSX
@babel/plugin-transform-runtime 避免 polyfill 污染全局變量,減小打包體積
@babel/polyfill  ES6 內(nèi)置方法和函數(shù)轉(zhuǎn)化墊片



   

配置

     {
    test: /.(js|jsx)$/,
    include: paths.appSrc,
    use: [
        {
            loader: "babel-loader",
            options: {
                presets: ["@babel/preset-react"],
                plugins: [
                    // 按需加載lodash
                    "lodash",
                    // babel-plugin-import
                    // true是less, 可以寫"css" 如果不用less
                    ["import", { libraryName: "antd", libraryDirectory: "es", style: "less" }],
                    [
                        "@babel/plugin-transform-runtime",
                        {
                            absoluteRuntime: false,
                            corejs: false,
                            helpers: false,
                            regenerator: true, // generator不會污染全局的
                            useESModules: false, // 轉(zhuǎn)換將使用無法運行的幫助程序
                        },
                    ],
                    // "@babel/plugin-syntax-dynamic-import"
                ],
                cacheDirectory: true,
                cacheCompression: isEnvProduction,
                compact: isEnvProduction,
            },
        },
    ],
}
6. 按需引入Polyfill

Polyfill是一個js庫,主要撫平不同瀏覽器之間對js實現(xiàn)的差異。根據(jù)瀏覽器不同的UA按需加載polyfill,國內(nèi)瀏覽器支持不好。

閱讀需要支付1元查看
<