亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

在做js加載html時的復盤經驗

我们要做一个这样的功能:
在一个组件中需要加载一个 html 文件来进行展示,比如:协议之类的。

最后完美解决了这个问题,描述一下过程:
首先,觉得 js 不能 import 或 require html 文件,尝试过的确不行。

找到一个解决办法就是写一个逻辑,在构建项目的时候,把这些 html 文件放到打包的目录下,然后在业务逻辑里面,使用 iframe 引用当前文件的形式加载,可是这么做,在开发的时候就看不到效果,只能是在构建好时才能访问。

还想到过把 html 文件改造成组件,然后 import 进来,是很笨的办法。

还去网上找了一遍如何在 vue,react 中导入 html 文件,无果。

期间还是有考虑到使用 webpack 配置项的形式来处理这个问题,但是没有头绪。

最后在 webpack 官网找到了 html-loader,发现它能够处理 html 文件,于是尝试使用它,发现可行,但是它把 html 文件都集合进 js 包里面了,得将它抽离出来,于是找到 extract-loader,后来又找到 file-loader,得将它们仨合起来一起使用,才能发挥出力量。

在调 file-loader 的时候,走了很多弯路,最主要是在研究正则,怎样去排除掉index.html,因为我发现它会把 index.html 也处理了。

最后,发现一个配置项:include: [resolve('src')],
它的作用是把搜索的范围限制在 src 目录里面,又因为 index.html 文件不在 src 目录中,于是问题得以解决,也不用费劲去研究正则怎么写了。

总结:

如果一开始就往 webpack 配置项这个方向去考虑,想到 webpack 能处理一切类型的文件,只需要合适的 loader 来配合就可以。那么我就会想到会不会有一个能够处理 html 的 loader 来加载 html 文件,最后再熟悉 include 配置项,就可以缩短解决问题的时间。

代码

// module: {// rules: [{        test: /\.html$/,        include: [resolve('src')],        use: [
          {            loader: 'file-loader',            options: {              name: "[name].[ext]",              outputPath: 'html/'
            },
          },
          {            loader: 'extract-loader'
          },
          {            loader: 'html-loader',            options: {              minimize: true,              removeComments: false,              collapseWhitespace: false,
            }
          },
        ],
      },// ]// }



作者:kybetter
链接:https://www.jianshu.com/p/f861d275ab10


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消