初识 webpack

1. 安装sass

安装sass,通过npm install node-sass -g
如果安装失败,就搜索 node-sass 安装失败,看别人的指导
https://zhuanlan.zhihu.com/p/37886736
最后,我是通过这个方法成功了✌️

2. 开始演示sass的用法

  1. 直接把原来的css文件改为scss文件
    mv main.css main.scss
  2. 翻译成css的方法
    node-sass main.scss main.css
    多了一个翻译出来的main.css文件
  3. .scss嵌套规则
    初识 webpack_第1张图片
    image.png

    修改为下面这种嵌套的形式
    初识 webpack_第2张图片
    image.png

    还需要在运行翻译node-sass main.scss main.css
  4. 自动翻译
    node-sass main.scss main.css -w main.scss
    可实现从main.sass变成main.css的自动化

3. 兼容IE

因为IE不支持let,采用自动化工具babel 来实现let转变成var
npm install --save-dev @babel/core @babel/cli
npm init
vim package.json
npm install --save-dev @babel/core @babel/cli
vim package.json发现多了一行"@babel/cli": "^7.5.5"

   "devDependencies": {
      "@babel/cli": "^7.5.5",
      "@babel/core": "^7.5.5"
     }
  }

4. webpack的使用

mkdir  webpack-demo
cd webpack-demo
npm init // 回车回车回车回车回车
//  推荐这个安装方式,webpack@3版本
npm install --save-dev webpack@3
touch webpack.config.js//配置webpack,创建 webpack.config.js 文件
vi webpack.config.js

创建 webpack.config.js 文件,写入如下代码:

const path = require('path')
module.exports = {
    entry:  './src/index.js', // 入口文件
    output: {
      path: path.resolve(__dirname, 'dist'), // 必须使用绝对地址,输出文件夹
      filename: "bundle.js" // 打包后输出文件的文件名
    }
  }
mkdir src
touch src/index.js
npx webpack
初识 webpack_第3张图片
入口文件为index.js,出口文件为bundle.js

bundle.js是把src目录下的index.js 翻译过去的。
现在开始写index.js 的内容vi src/index.js

alert(1)

运行

npx webpack
vi dist/bundle.js

可以查看到build文件夹的bundle.js里面包含了alert(1)


初识 webpack_第4张图片
webpack用魔法把index.js的内容拿过来了

现在webpack已经具备简单的拷贝功能了,下面加功能

5. 让let变成var(需要安装babel-loader)

npm i --save-dev babel-loader@7 babel-core@6 babel-preset-env
vi webpack.config.js

更改webpack.config.js,加入这些代码

module.exports = {
// ......加个逗号,
    module: {
        rules: [
            {
            // js 文件才使用 babel
                test: /\.js$/,
             // 使用哪个 loader
                use: 'babel-loader',
            // 不包括路径
                exclude: /node_modules/
            }
        ]
    }
}

配置好后,现在开始写index.js 的内容vi src/index.js

var a = 1
alert(a)

再次运行npx webpack就好了,babel就使用上了。
打开vi dist/bundle.js

初识 webpack_第5张图片
let就变成var了

6. 加模块化的东西

在src目录下,删除之前的.js文件,新建js目录,里面创建module-1.js module-2.js app.js

cd src
rm -rf *
mkdir js
cd js
touch module-1.js module-2.js app.js 

vi module-1.js在module-1.js中写入

 function fn(){
  console.log(1)
 }
export default fn

vi module-2.js在module-2.js中写入

 function fn(){
  console.log(2)
 }
export default fn                     

app.js 要使用module-1.js 和module-2.js,vi app.js在app.js中写入

import x from './module-1'
import y from './module-2'

x()
console.log('funk webpack')
y()

app.js就可以调用module-1.js 和module-2.js中的fn了
然后我们需要改一下webpack的配置

cd ..
cd ..
vi webpack.config.js

'./src/index.js'修改为 './src/js/app.js'
'dist'修改为'dist/js/'
删除dist目录,重新webpack

mkdir dist/js
rm -rf dist
npx webpack
初识 webpack_第6张图片
三个js输出为一个bundle.js文件
touch src/index.html
vi src/index.html



    Document


    

把它考到dist里面cp src/index.html dist/index.html
打开页面http-server . -c-1
打开dist网页http://127.0.0.1:8080/dist
可以看到

初识 webpack_第7张图片
bundle.js把所有js里面的内容模块化执行在页面中

7. 加 sass-loader 把 SCSS 转译为 CSS

cd src
mkdir css
cd css
touch main.scss
vi main.scss

在main.scss写入简单代码:

body{
    background: red;
    #app{
        width:100px;
        height: 100px;
        border:2px solid green;
    }
}

搜索webpack sass-loader

cd ..
cd ..
npm install sass-loader node-sass webpack --save-dev
vi webpack.config.js
// webpack.config.js
module.exports = {
   ...
   module: {
       rules: [{
           test: /\.scss$/,
           use: [
               "style-loader", // creates style nodes from JS strings
               "css-loader", // translates CSS into CommonJS
               "sass-loader" // compiles Sass to CSS, using Node Sass by default
           ]
       }]
   }
};

css-loader让css文件也支持引入,因为webpack中把所有的文件都当做模块

vi src/js/app.js
import '../css/main.scss'
npx webpack

遇到任何报错,都采用npm i 缺的loader,包括(css-loader style-loader sass-loader node-sass)直到成功

初识 webpack_第8张图片
把js和scss文件都import给bundle.js模块化,然后再弄到页面中

初识 webpack_第9张图片
刷新页面,页面变成scss命令的样式

这个项目的github

这个示例项目的GitHub
注意:

touch .gitignore
vi .gitignore

在.gitignore中写入

node_modules
npm-debug.log
package-lock.json

对于已经提交到repo的代码,可以用如下命令进行移除:git rm -r -f --cached node_modules/

git add .gitignore
git commit -m "second commit"
git push

你可能感兴趣的:(初识 webpack)