前端工程化-Sass,Babel,Webpack

目錄結構

src 未編譯的文件,就是用自己喜歡的語言編寫
dist 通過工具翻譯的文件
vendor 第三方的文件

sass

scss ······> css文件
github:node-sass

babel

js(ES6) -----> js(兼容ES5,IE瀏覽器)
babel 使用

watch-cli

為了能夠使得監(jiān)聽html文件跟圖片文件夾。
github:wartch-cli

 watch -p "src/img/**" -c "cp -r src/img/ dist/img"

其他需求

前端的CSS,JS文件緩存一般都做了10年,所以會希望能夠有工具自動添加一個版本號,如果出現(xiàn)修改,希望能自動更改版本號。(詳情請了解Cache-Control)


image.png

發(fā)展歷程

grunt ····> gulp ·····> webpack
這些工具都是為了能夠統(tǒng)一上述所有工具誕生的。


語言太多

webpack

所有的東西都是模塊,不管是js還是css文件。
為了css樣式兼容不同版本的瀏覽器,自動化加前綴工具 --- autoprefixer(現(xiàn)在是postcss)
webpack
上面是webpack的安裝配置教程,其實只用看webpack.config.js文件就好。
如果想要sass---->css,下載sass-loader;
兼容的js文件,下載babel-loader,這里要注意一個版本的問題:

//webpack 3.x | babel-loader 8.x | babel 7.x webpack如果是4的話,安裝這個

npm install "babel-loader@^8.0.0-beta" @babel/core @babel/preset-env webpack
//webpack 3.x babel-loader 7.x | babel 6.x

npm install babel-loader babel-core babel-preset-env webpack

然后修改相應的配置即可。

模塊化
在webpack里面,所有的東西都是模塊,包括css,圖片等

const path = require('path');

module.exports = {
  entry: './src/js/main.js',  //一個入口,將所有的模塊都在這里導入
  output: {
    filename: 'bundle.js',   //生成的最終js文件
    path: path.resolve(__dirname, 'dist/js') // 存儲的路徑
  },
    module: {
            rules: [
            {
                test: /\.scss$/,
                use: [
                'style-loader',
                'css-loader',
                'sass-loader'
                ]
            },  //這個規(guī)則是sass文件
            {
                test: /\.js$/,
                exclude: /(node_modules|bower_components)/,
                use: {
                  loader: 'babel-loader',
                  options: {
                    presets: ['@babel/preset-env']
                  }
                }
              }  //這個規(guī)則是babel
            ]
        }
};

在面main.js文件中,用下述語法進行導入

import x from "./module-1" //導入一個js函數(shù),命名為x
import "../css/default.scss"  //導入一個scss文件

相應的在module-1.js文件中,需要做導出

function fn(){
    console.log(1);
}

export default fn

這樣就把fn函數(shù)導出了。
最后由webpack將這些進行打包,生成bundle.js

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

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

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