最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • webpack入门学习 --Halo

    正文概述 掘金(ZZP)   2020-12-06   591

    起步和管理资源的部分

    之前一直不理解webpack和vue-cli什么关系,看了webpack文档发现,vue-cli就是帮你配置webpack,配置一个跟vue相结合的配置,如果webpack学的很好,那你甚至可以自己‘vue-cli’一个项目。

    一、初始化项目:

    创建一个项目文件夹,然后执行 npm init还有一种npm init -y这个的意思全部yes省去了按回车的步骤,初始化完项目,此时会生成一个package.json文件,里面是项目的一些配置,比如一些脚本操作,npm run build 的 build 是什么,还有安装的插件(plugins)和各种包。

    二、本地安装webpack以及webpack cli:

    npm install webpack webpack-cli --save-dev 新版本的webpack需要配合webpack-cli使用

    三、开始正式构建我们的项目:

    在根目录创建index.html以及src文件夹,在src文件夹创建index.js文件, 在html文件加入两个script标签,第一个用于引入lodash我不知道有什么用,我只知道是因为index.js里要用到这个lodash所以在这里引入了。package.json里新增 private:true确保我们的包是私有的,移除main:index.js防止意外发布我的代码。这两句话是什么意思呢? 这里的发布指的是让npm拒绝发布,这是私人存储库。 main属性也是用于发布时候的,当你的包、库发布了,别人下载之后就会默认main的地址,因为已经加了private属性,所以这个main已经没用了,因此删掉了。

    前面使用script引入的lodash就是为了引入下面三条信息:

    • 无法立即体现,脚本的执行依赖于外部扩展库(external library)。
    • 如果依赖不存在,或者引入顺序错误,应用程序将无法正常运行。
    • 如果依赖被引入但是并没有使用,浏览器将被迫下载无用代码。

    创建一个bundle文件夹:调整一下目录结构。

      webpack-demo
      |- package.json
    + |- /dist
    +   |- index.html
    - |- index.html
      |- /src
        |- index.js
    

    删除了html中对lodash的cdn引用, 那么index.js中需要用到lodash怎么办呢?此时就引出了包的安装。 npm install --save lodash 这里用到了 --save 这个的意思的是会打包到生产环境,也就是说项目上线了也需要使用这个包。而 --save-dev 就是只有在开发测试环境需要使用的包。安装好了,只需要在 index.js 文件中 import _ from 'lodash';就可以了,这个_是你自己命名的,可以命名其他的名字。

    修改对index.js 的引用,修改成 当前目录下的main.js 因为即将要使用一个操作 npx webpack执行 npx webpack,会将我们的脚本作为入口起点,然后 输出 为 main.js。

    此时打开 html 文件发现可以正常使用。

    四、使用配置文件 webpack.config.js

    const path = require('path');
    
    module.exports = {
      entry: './src/index.js',
      output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist')
      }
    };
    

    这里写的很清楚: 入口是src目录下的index.js生成总js文件名为bundle.js且生成位置为dist文件夹。 那么之前还没有 webpack.config.js 的时候,执行 npx webpack 就可以直接在dist生成 main.js 呢?显然就是默认配置,当 filename 修改为 bundle.js 的时候,再执行,发现已经变成 bundle.js 文件了。

    五、修改 package.json 文件,增加一个 npm 脚本:

      {
        "name": "webpack-demo",
        "version": "1.0.0",
        "description": "",
        "main": "index.js",
        "scripts": {
          "test": "echo \"Error: no test specified\" && exit 1",
    +     "build": "webpack"
        },
        "keywords": [],
        "author": "",
        "license": "ISC",
        "devDependencies": {
          "webpack": "^4.0.1",
          "webpack-cli": "^2.0.9",
          "lodash": "^4.17.5"
        }
      }
    

    以后就不用执行 npx webpack 换成执行 npm run build通过向 npm run build 命令和你的参数之间添加两个中横线,可以将自定义参数传递给 webpack,例如:npm run build -- --colors。

    通过之前的配置,我们只是能支持js文件,对于html css 等都是不支持的。 index.html 是直接新建在dist文件里的,而不是打包的时候生成的。 我们一个一个来解决。

    六、加载css:

    npm install --save-dev style-loader css-loader 在webpack.config.js中修改:

      const path = require('path');
    
      module.exports = {
        entry: './src/index.js',
        output: {
          filename: 'bundle.js',
          path: path.resolve(__dirname, 'dist')
        },
    +   module: {
    +     rules: [
    +       {
    +         test: /\.css$/,
    +         use: [
    +           'style-loader',
    +           'css-loader'
    +         ]
    +       }
    +     ]
    +   }
      };
    

    现在在index.js中就可以引入css文件了 import './style.css'; 引入的css文件会添加到 html的head 当中。 类似的还有:

    npm install --save-dev file-loader

    npm install --save-dev csv-loader xml-loader

            {
              test: /\.(png|svg|jpg|gif)$/,
              use: [
                'file-loader'
              ]
            },
            {
              test: /\.(csv|tsv)$/,
              use: [
                'csv-loader'
              ]
            },
            {
              test: /\.xml$/,
              use: [
                'xml-loader'
              ]
            }
    

    全局资源: 上述所有内容中最出色之处是,以这种方式加载资源,你可以以更直观的方式将模块和资源组合在一起。无需依赖于含有全部资源的 /assets 目录,而是将资源与代码组合在一起。例如,类似这样的结构会非常有用:

    - |- /assets
    + |– /components
    + |  |– /my-component
    + |  |  |– index.jsx
    + |  |  |– index.css
    + |  |  |– icon.svg
    + |  |  |– img.png
    

    这种配置方式会使你的代码更具备可移植性,因为现有的统一放置的方式会造成所有资源紧密耦合在一起。假如你想在另一个项目中使用 /my-component ,只需将其复制或移动到 /components 目录下。只要你已经安装了任何扩展依赖(external dependencies),并且你已经在配置中定义过相同的 loader,那么项目应该能够良好运行。

    但是,假如你无法使用新的开发方式,只能被固定于旧有开发方式,或者你有一些在多个组件(视图、模板、模块等)之间共享的资源。你仍然可以将这些资源存储在公共目录(base directory)中,甚至配合使用 alias 来使它们更方便 import 导入。


    起源地下载网 » webpack入门学习 --Halo

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元