webpack打包文件不能引用_使用 webpack 打包小程序

2023-11-04

前言

针对目前市面上出现的各种小程序,如百度小程序,支付宝小程序,字节跳动小程序,快手小程序。

小程序原生开发对于开发者的开发体验并不是很友好,那如何解决这个问题呢?

问题点

样式预处理

TypeScript支持

多环境打包支持

可扩展性 如在小程序内支持md文档格式,json格式等

多端支持

问题如何解决

使用webpack 来处理以上一系列问题

webpack 官方介绍就是静态文件的打包器

上图所做的工作就是 项目中所有的静态文件 如js wxss wxml png jpg 通过webpack处理,可以输出到特定环境下可以运行的代码,webpack就是导入一些入口文件然后通过编译输出结果

回顾小程序

首先小程序由项目入口组成

脚本逻辑

配置

其次小程序也由页面/组件 组成

脚本逻辑

模版

样式

配置

因为小程序的项目中每个文件都是独立的,比如小程序一个页面由js,json,wxml.wxss组件,而不是像web一样可以将文件打包在一起,这样我们使用webpack打包小程序就有一定的限制条件,既然输出的结果一定要按照小程序的规范,那么入口文件也要根据要求去操作,可能webpack 配置就不是一个单页面的配置,就要考虑使用多入口的方式实现,那么就要解决如下问题点:

确定入口文件

在小程序的app.json中会有一个pages 里面都是小程序中所有的页面,那么我们可以通过一个方法getPages获取这些页面的所有内容如js,json,wxss,wxml等信息,但是有个问题就是因为页面中可能包含有很多组件部分,所以还需要去解析页面组件的依赖,可以通过页面json中 usingComponents 配置去解析

如图所示,页面有很多组件组成,我们可以通过一个方法getComponents方式,用递归的方式获取到项目页面中所有的组件信息,包含组件模版,样式

编译模版

问题点:webpack 无法直接去编译小程序的wxml文件

如何解决:可以自定义一个loader去解析这些文件,让webpack能够识别到。

通常导出⼀一个函数,⼊入参为上⼀一个 loader 的返回值,可以有多个⼊入参,通常为源码

返回值⼀一般为处理理后的代码,如要返回多个值,⽤用 this.callback()

使⽤用 loader-utils 来辅助处理理,例例如通过 loader-utils 获取 loader 传⼊入 options,⼀个 loader 只处理理单一事务

处理样式

可以使用如下loader编译小程序样式

saas-loader/less-loader -> postcss-loader -> css-loader -> filer-loader

处理配置

考虑一个问题,小程序的配置文件是一个json文件,我们是否可以通过webpack的file-loader去编译

上图中的确可以处理我们页面的配置文件,但是有个问题就是如果页面文件夹中出现另一个json文件,比如是一些静态数据的json文件,我们知道小程序是不能从本地引用本地文件,所以必须要通过一个loader去做这些事

移除不必要的文件

通过file-loader 打包之后会出现以下红色框的文件,但是我们小程序是不需要这些文件的,那么如何移除呢?我们知道webpack的编译过程是

Compiler 负责⽂文件监听和启动编译,包含完整 webpack 配置,全局唯⼀

compiler.hooks.* entryOption run watchRun compilation

Compilation 第⼀次以及监听到⽂文件变化创建,包含当前模块信息、编译⽣生成资源等信息

compilation.hooks.* buildModule optimize beforeChunkAssets optimizeChunkAssets

编译结果输出还不是很优雅还需要完善,后续要通过抽离公共代码,封装一些插件优化。。。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

webpack打包文件不能引用_使用 webpack 打包小程序 的相关文章

  • 多目标跟踪算法之SORT

    本文首发于微信公众号 DeepDriving 欢迎关注 简介 SORT是2016年发表的一篇文章 Simple Online and Realtime Tracking 中提出的一个经典的多目标跟踪算法 该算法结合常用的卡尔曼滤波器和匈牙利
  • 服务器128g内存显示64g,64g内存服务器

    64g内存服务器 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 接口名称GetCloudPhoneServerModel
  • httprunner 3.x学习1 - 环境安装与准备

    前言 httprunner 3 x最大的改变是执行用例用的是 python 的 pytest 框架 支持3种格式的用例 YAML JSON pytest 代码 对比 httprunner 2 x 以前版本 早期版本用的是 unittest
  • el-select 默认值显示value不显示label问题

    el select 默认值显示value不显示label问题 在做编辑页面时 需要取到列表项数据回显默认值 在做select回显的时候遇到了这个问题 明明拿到的值和value中的值一样 但是就是不转换成label 这种情况一般出现在valu
  • 清除苹果服务器位置,苹果桌面三大清理工具_服务器评测与技术-中关村在线

    值得庆幸的是 Mac App Store的有三个应用程序 可以帮助你整理桌面 保证你的桌面整洁干净 前两者都是免费的 在桌面上扫描文件和文件夹时 只要一个命令 就能按照你的原设置整理文件夹 第三虽然是付费但是功能强大 能够隐藏你的文件 即保
  • 测试框架pytest教程(2)-用例依赖库-pytest-dependency

    对于 pytest 的用例依赖管理 可以使用 pytest dependency 插件 该插件提供了更多的依赖管理功能 使你能够更灵活地定义和控制测试用例之间的依赖关系 Using pytest dependency pytest depe
  • 大数据面试题:MapReduce压缩方式

    面试题来源 大数据面试题 V4 0 大数据面试题V3 0 523道题 679页 46w字 可回答 1 Hadoop常见的压缩算法有哪些 问过的一些公司 网易云音乐 2022 11 阿里 2020 08 参考答案 1 MapReduce支持的
  • java-web eclipse内tomcat无法访问网页 Google浏览器可以

    java web eclipse内tomcat无法访问网页 Google浏览器可以 1 eclipse 安装的Tomcat服务无法访问问网页 浏览器不可以 只有从tomcat 安装目录下启动startup bat或tomcat9 0自带的t
  • ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR解决办法

    windows开发 调用 InternetQueryOption 函数失败 错误码 12178 ERROR WINHTTP AUTO PROXY SERVICE ERROR 解决方法 运行 services msc 服务 WinHTTP W
  • git merge合并分支,解决冲突

    1 git merge示意 git merge 用来做分支合并 将其他分支中的内容合并到当前分支中 比如分支结构如下 master C0 C1 C2 C4 C3 C5 issueFix 当前分支是master git checkout ma
  • android:configChanges属性总结

    http blog csdn net zhaokaiqiang1992 article details 19921703 android中的组件Activity在manifest xml文件中可以指定参数android ConfigChan
  • VSCode使用 - Remote-SSH 配置说明

    By Ailson Jack Date 2022 06 17 个人博客 http www only2fire com 本文在我博客的地址是 http www only2fire com archives 147 html 排版更好 便于学习
  • Kafka(生产者)

    Kafka 1 概述 1 1 消息队列 1 1 1 传统消息队列的应用场景 1 1 2 消息队列的两种模式 1 2 kafka基础结构 2 kafka的快速入门 2 1 集群部署 2 1 1 安装java 2 1 2 部署zookeeper
  • 第八课 SpringBoot2基础-指标监控

    第八课 SpringBoot2基础 指标监控 tags Spring Boot 2021尚硅谷 雷丰阳 文章目录 第八课 SpringBoot2基础 指标监控 第一节 SpringBoot Actuator简介 第二节 Actuator端点
  • 能不能把js文件放在服务器上,为什么要把 JavaScript 放到服务器端上运行?

    原标题 为什么要把 JavaScript 放到服务器端上运行 因为在当年 Node js的作者Ryan Dahl是一名资深的C C 程序员 在创造出Node之前 他的主要工作都是围绕高性能Web服务器进行的 经历过一些尝试和失败之后 他找到
  • wsl的图像化实现,在wsl中启动浏览器

    最近在学习wsl 原本我看以前的教程说wsl和vmware的区别有一点就是 wsl只能使用命令行 而vmware可以实现图像化 结果我在 microsoft 官方发现现在的wsl 2已经实现了 GUI 界面 所以就来记录一下吧 wsl 的
  • AOP切面Around通知测试

    1 无异常情况 配置类 package concert import org springframework context annotation Bean import org springframework context annota
  • 科技网红上门要求代码开源,UMIDIGI可以拒绝吗?可以!

    前些日子发生了一个事情 大致如下 深圳一家公司UMIDIGI开发和销售Android设备 波兰的一个开发者Patrycja 希望 UMIDIGI 能公开该公司的 UMIDIGI F2 手机 基于 Android 10 的内核源码 他对里面
  • 大淘宝服务端技术干货沉淀和总结

    网络基础 TCP三次握手 三次握手过程 客户端 发送带有SYN标志的数据包 服务端 一次握手 Client进入syn sent状态 服务端 发送带有SYN ACK标志的数据包 客户端 二次握手 服务端进入syn rcvd 客户端 发送带有A

随机推荐

  • Unity屏幕UI跟随模型移动

    public Transform target 3D物体 public RectTransform image 跟随3D物体的UI public Canvas canvas UI所在的canvas private Vector2 scree
  • Connecting to 192.168.40.244:21... failed: No route to host报错处理

    系统环境 两台虚机网络互相可以ping通 其中a主机搭建了ftp b主机获取文件时保错 处理 a主机清理防火墙策略 root localhost ssh iptables F
  • 会议论文收录信息可视化与分析

    CVPR会议论文收录信息可视化与分析 数据可视化课程报告 要求及评分标准 一 问题描述 二 数据获取与预处理 2 1爬虫获取论文数据 2 2数据预处理 2 2 1 标题数据预处理 2 2 2 作者数据预处理 三 有关热点词汇的可视化 3 1
  • 使用wireshark进行基础的日志审计

    可以通过tcpdump i 把网络流量打印出来进行审计 Wireshark下载地址 https www wireshark org download html 其中常用的几种过滤字段 ip过滤 ip src x x x x ip dst x
  • transformer模型中的self-attention和multi-head-attention机制

    对于 Attention is all you need 这篇文章中提到的transformer模型 自己最初阅读的时候并不是很理解 于是决定从头开始 一点一点梳理transformer模型 这篇论文主要亮点在于 1 不同于以往主流机器翻译
  • 定时任务超时处理方法

    final ExecutorService exec Executors newFixedThreadPool 1 Integer status 0 Callable
  • 淘好物社区推广文档

    线上测试网址 管理员端访问网址 http 123 249 47 154 8000 wangyz home 项目描述 本项目适用于社区之间推广使用 分为三部分 管理员端 商户端 用户端 主要功能包括 管理员端包含商户端大部分功能 还有一些系统
  • QT的信号与槽 以及自定义信号槽

    所谓信号槽 实际就是观察者模式 当某个事件发生之后 比如 按钮检测到自己被点击了一下 它就会发出一个信号 signal 这种发出是没有目的的 类似广播 如果有对象对这个信号感兴趣 它就会使用连接 connect 函数 意思是 用自己的一个函
  • 可移动磁盘“未格式化”提示?教程帮你重获数据!

    可移动磁盘在使用的过程中会出现各种奇怪的错误 比如小编今天碰到的一个 打开分区提示未格式化 可移动磁盘 未格式化 提示 教程帮你重获数据 可移动磁盘 未格式化 提示 教程帮你重获数据 工具 软件 sayRecy 步骤1 先下载并解压软件运行
  • forEach正常情况下不能打断

    数组方法中我最喜欢用的就是foreach 但好看的蘑菇都有毒 他不能打断 我总是考虑不到这一点 所以我就总是被坑 真的很惨 所以大家一定要记得这个特性 forEach不能打断啊啊啊啊啊 这是之前出的问题 今天下午又记吃不记打又被坑了 咱们就
  • 华为OD机试真题- 计算误码率-2023年OD统一考试(B卷)

    题目描述 误码率是最常用的数据通信传输质量指标 它可以理解为 在多少位数据中出现一位差错 移动通信网络中的误码率主要是指比特误码率 其计算公式如下 比特误码率 错误比特数 传输总比特数 为了简单 我们使用字符串来标识通信的信息 一个字符错误
  • 一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别(转)

    首先借用有心人士的一张相当直观清晰的图来划分各种协议 开源许可证GPL BSD MIT Mozilla Apache和LGPL的区别 以下是上述协议的简单介绍 BSD开源协议 BSD开源协议是一个给于使用者很大自由的协议 基本上使用者可以
  • 【数模】图论最短路径问题

    一 图的基本概念 图的数学语言描述G V G E G V vertex 指图的顶点集 E edge 指图的边集 图的分类 根据边是否有方向 分为有向图和无向图 无向图属于特殊的有向图 一个无向边可看作两个有向边 边若有权值 有权图 二 作图
  • Python pytest main.py文件报错main.py: error: unrecognized arguments: --html=./test_report.html问题解决

    ERROR usage main py options file or dir file or dir main py error unrecognized arguments html test report html inifile D
  • 【JavaScript】你真的熟悉bind吗

    引言 内容速递 看了本文您能了解到的知识 在本篇文章中 将带你了解什么是bind bind的用途 如何手写bind以及工作中实际使用bind的场景 在JavaScript中 bind 方法是用来创建一个新函数 并将其绑定到指定的对象上 从而
  • tomcat 性能调优

    文章目录 总体架构 主要的组件 执行过程 tomcat 调优 内存优化 并发优化 缓存优化 IO优化 开启线程池 添加Listener 组件优化 APR Tomcat Native 配置 性能测试 工具 1 Jmeter 可参考该博主 ht
  • upload labs 第六关

    提示是后缀加空格 windows会自动吃掉你的空格的 只需要抓包后加空格再放行即可
  • GPT全家桶再添一员!看论文神器,ResearchGPT,可立即试用

    文 Pine 发自 凹非寺源 量子位 科研人员福音 专门和论文对话的 ChatGPT 来了 懒得看论文 没关系 直接让这个工具帮你看 有什么问题直接问它就好了 而你全程要做的就只有上传论文和问问题 但又感觉心里没谱 不相信它给的答案 也没关
  • 【mysql】Navicat关闭窗口,未保存sql语句找回

    最近迁移数据比较多 好不容易写在navicat的查询框的数据 一不小心关闭 然后本着不慌的心态 找找软件有没有啥日志之类的 结果发现 真有 工具 历史记录 然后就找到了 20230727更新 实测 16 0 11版本仍然有的
  • webpack打包文件不能引用_使用 webpack 打包小程序

    前言 针对目前市面上出现的各种小程序 如百度小程序 支付宝小程序 字节跳动小程序 快手小程序 小程序原生开发对于开发者的开发体验并不是很友好 那如何解决这个问题呢 问题点 样式预处理 TypeScript支持 多环境打包支持 可扩展性 如在