• webpack的使用


    ---恢复内容开始---

    webpack主要处理新语法,但是浏览器不识别,用webpack前端工具,处理成浏览器认识的

    添加webpack的依赖
    npm init -y
    npm install webpack
    处理指定的文件,并且指定输出文件的目录和名字
    webpack .srcmain.js .distubdle.js

    使用的时候

    <script src="./dist/bundle.js"></script>

    实现webpack热部署,使用webpack-dev-server,注意本地项目中必须安装webpack

    需要配置文件

    指定配置文件的名字,webpack.config.js

    安装到工程开发依赖,使用的时候和webpack的命令是一样的。直接使用webpack-dev-server

    注意是在项目中本地安装,所以不能当做脚本命令直接在命令行置直接执行,只能全局安装才能

    在package.json配置脚本命令,scripts中设置,这样就可以直接命令行通过npm run dev执行webpack-dev-server

    "dev" : "webpack-dev-server"

    注意使用的时候安装webpack-dev-server到工程的本地目录

    cnpm i webpack-dev-server -D

    这种直接是工程的根目录,如果自己想访问打包后的bundle.js,直接访问 根目录/bundle.js

    热部署使用的时候使用的是根目录下的bundle.js,打包生成的bundle.js没有存在物理磁盘中,在内存中托管

    使用的时候直接

    <scripts src="/bundle.js"></scripts>

    所以配置文件中不需要output了。

    webpack-dev-server的配置参数

    自动打开浏览器的设置,还有指定端口3000,上来打开指定的目录src,加上--hot,局部更新,减少不必要重载,浏览器自动刷新
    "dev" : "webpack-dev-server --open --port 3000 --contentBase src --hot"

    还有一种直接在webpack.config.js中直接使用webpackServer配置

    安装在内存中生成页面的插件

    安装webpack插件

    cnpm i html-webpack-plugin -D

    htmlWebpackPlugin的插件:实现HTML文件加载到内存,自己处理bundle.js文件

    const path = require('path')
    
    const htmlWebpackPlugin = require('html-webpack-plugin')
    module.exports
    = { // 入口文件 entry: path.join(__dirname, './src/mian.js'), plugins: { new htmlWebpackPlugin({// template: path.join(__dirname,'./src/index.html'), filename: 'index.html' }) } }

    解决css会发生二次ajax请求

    直接导入样式,在main.js中

    import  './css/index.css'

    需要这种方式,就需要安装style-loader 和css-loader

    cnpm i style-loader css-loader -D

    打开配置文件,新增配置节点新增配置节点modules,有个rules属性,是个数组,数组中存放所有第三方文件的匹配和处理规则

      module: { //这个节点用于配置所有的第三方模块加载器
        rules: [ //匹配规则
          {
            test: /.css$/,
            use: ['style-loader', 'css-loader']
          },
        ]
      }

    多个loader的时候调用的规则是从右到左的形式,就是先调用后面的loader

    处理less文件.使用的时候的方式import  './css/index.less'

    安装插件

    安装less

    cnpm i less -D

    安装加载器

    cnpm i less-loader -D

      module: { //这个节点用于配置所有的第三方模块加载器
        rules: [ //匹配规则
          {
            test: /.css$/,
            use: ['style-loader', 'css-loader']
          },
          //less配置的形式
          {test: /.less$/, use: ['style-loader','css-loader','less-loader']},
        ]
      }

    处理scss文件

    import  './sass/index.sass'

    cnpm i node-sass -D

    cnpm i sass-loader -D

    配置新的loader

      module: { //这个节点用于配置所有的第三方模块加载器
        rules: [ //匹配规则
          {
            test: /.css$/,
            use: ['style-loader', 'css-loader']
          },
          //less配置的形式
          {test: /.less$/, use: ['style-loader','css-loader','less-loader']},
          {test: /.sass$/, use: ['style-loader','css-loader','sass-loader']},
        ]
      }

    webpack无法处理文件中的地址,无论是图片还是字体库,

    需要第三方的loader

    cnpm i file-loader

    cnpm i url-loader

    在配置文件中添加匹配规则

      module: { //这个节点用于配置所有的第三方模块加载器
        rules: [ //匹配规则
          {
            test: /.css$/,
            use: ['style-loader', 'css-loader']
          },
          //less配置的形式
          {test: /.less$/, use: ['style-loader','css-loader','less-loader']},
          {test: /.sass$/, use: ['style-loader','css-loader','sass-loader']},
          {test: /.(jpg|png|bmp|jpeg)$/,use: 'url-loader?limit=7632&name=[name].[ext]'} 
        ]
      }

    绿色部分是指当图片大小小于指定大小就会转成base64编码的图片,否则就是专成真正的URL地址,地址也会变,主要是防止文件名字的重复,红色是指不修改名字和文件后缀,正常不设置

    或者使用下面的形式,加上前缀hash值

    {test: /.(jpg|png|bmp|jpeg)$/,use: 'url-loader?limit=7632&name=[hash:8]-[name].[ext]'} 

    页面上引用字体图标

    安装cnpm i bootstrap -D

    在main.js中直接import  'bootstrap/dist/css/bootstrap.css'

    注意不写node_modules也行,前面不要加上/

    使用url-loader处理样式文件

    {test: /.(ttf|eot|woff|woff2)$/,use: 'url-loader'}

    注意package.json是json文件,不能在里面写注释

    ---恢复内容结束---

  • 相关阅读:
    redis介绍;特性介绍
    日常2018/4/9---b/s和c/s架构分别是什么?区别?
    持续集成实践---基于ant+jmeter+jenkins接口CI
    面向过程 和 面向对象个人理解
    记一次vc++6.0中程序正常,转 vs2019 c++后报错的问题
    C# 调用C++ dll EntryPointNotFoundException错误
    uniapp踩坑记录(持续更新)
    uniapp引用组件rate评分无法点击引起对style scoped学习
    sql server之time字段详解
    sql server之timestamp字段详解(转)
  • 原文地址:https://www.cnblogs.com/feixiangdecainiao/p/11066477.html
Copyright © 2020-2023  润新知