微信小程序模块化开发
一、实验简介本次实验完成小程序模块化案例主要练习小程序中require()模块引入与module.exports模块导出语法。小程序中每一个 js 文件都是独立模块内部变量函数默认私有只有经过导出其他文件才可以访问。实验需要分别访问四类来源的数据app.js 全局模块、其他文件夹下外部模块、当前页面同目录模块、当前 js 自身模块的变量与函数。拓展任务要求为不同来源输出内容设置不同背景颜色用来区分数据来源。官方参考文档https://developers.weixin.qq.com/miniprogram/dev/reference/api/require.html二、项目文件结构做完实验之后的完整项目结构模块化 ├─ common │ └─ common.js // 不同目录的外部模块 ├─ pages │ └─ index │ ├─ index.js │ ├─ index.wxml │ ├─ index.wxss │ └─ my‑index.js // 和index同目录的模块 ├─ app.js ├─ app.json └─ app.wxss三、代码实现过程1. 编写跨目录模块 common/common.js该文件放在根目录 common 文件夹作为外部模块定义变量和函数使用module.exports向外暴露接口。// common/common.js const comMsg 来自不同目录下模块的变量 function comFunc() { return 来自不同目录下模块的函数 } module.exports { comMsg, comFunc }2. 同目录模块 pages/index/my‑index.js和 index.js 放在同一个 pages/index 文件夹作为同目录下其他模块。// pages/index/my-index.js const myIndexMsg 来自相同目录下不同模块的变量 function myIndexFunc() { return 来自相同目录下不同模块的函数 } module.exports { myIndexMsg, myIndexFunc }3. 全局文件 app.js在 App 实例挂载全局变量与函数页面中通过getApp()获取全局实例不需要 require 导入。// app.js App({ appMsg: 来自全局模块的变量, appFunc() { return 来自全局模块的函数 } })4. 页面逻辑 pages/index/index.js在 index.js 中定义自身模块数据调用getApp()拿到全局对象使用require()分别引入两个外部模块把所有数据处理后存入 Page 的data供页面渲染使用。// pages/index/index.js // 本模块自己定义变量和函数 const indexMsg 来自本模块的变量 function indexFunc() { return 来自本模块的函数 } // 获取全局app实例 const app getApp() // 引入根目录common下模块使用相对路径 const comm require(../../common/common.js) // 引入同目录my-index模块 const myIndex require(my-index.js) Page({ data: { // 全局模块数据 msg1: index.js模块引用 app.appMsg, msg2: index.js模块引用 app.appFunc(), // 不同目录 common模块数据 msg3: index.js模块引用 comm.comMsg, msg4: index.js模块引用 comm.comFunc(), // 同目录 my‑index模块数据 msg5: index.js模块引用 myIndex.myIndexMsg, msg6: index.js模块引用 myIndex.myIndexFunc(), // 当前index自身模块数据 msg7: index.js模块引用 indexMsg, msg8: index.js模块引用 indexFunc() } })5. 页面结构 pages/index/index.wxml为完成拓展作业将同一来源的两条数据放在同一个view标签添加自定义 class用于设置不同背景色。通过插值语法{{ }}绑定 data 中的数据。!--index.wxml-- navigation-bar title模块化 back{{false}} colorblack background#FFF/navigation-bar scroll-view classscrollarea scroll-y typelist view classbox view classtitle引用来自不同模块的变量和函数/view !-- 全局模块 青色背景 -- view classglobal-item view{{msg1}}/view view{{msg2}}/view /view !-- 跨目录common模块 黄色背景 -- view classdiff-dir-item view{{msg3}}/view view{{msg4}}/view /view !-- 同目录模块 紫色背景 -- view classsame-dir-item view{{msg5}}/view view{{msg6}}/view /view !-- 本模块 浅蓝背景 -- view classself-item view{{msg7}}/view view{{msg8}}/view /view /view /scroll-view6. 样式代码pages/index/index.wxss/**index.wxss**/ page { height: 100vh;微信小程序模块化学习笔记个人博客小程序开发课后练习最近做完小程序模块化的课后作业对小程序 JS 的模块机制有了比较直观的理解在这里记录一下学习过程与代码实现。在微信小程序里每一个 js 文件都属于独立模块。模块内部定义的变量和函数默认是私有外部无法直接访问。想要对外暴露内容就要用module.exports导出其他文件通过require()完成导入。另外小程序的全局数据存放在app.js页面通过getApp()获取全局实例不需要 require 引入。本次练习一共处理四种数据来源全局模块、不同目录外部模块、同目录其他模块、当前文件自身模块。拓展需求是给不同来源的内容设置不一样的背景颜色用来做视觉区分。项目目录结构模块化 ├─ common │ └─ common.js ├─ pages │ └─ index │ ├─ index.js │ ├─ index.wxml │ ├─ index.wxss │ └─ my‑index.js ├─ app.js ├─ app.json └─ app.wxss代码实现common/common.js跨目录模块const comMsg 来自不同目录下模块的变量 function comFunc() { return 来自不同目录下模块的函数 } module.exports { comMsg, comFunc }pages/index/my‑index.js同目录模块const myIndexMsg 来自相同目录下不同模块的变量 function myIndexFunc() { return 来自相同目录下不同模块的函数 } module.exports { myIndexMsg, myIndexFunc }app.js全局App({ appMsg: 来自全局模块的变量, appFunc() { return 来自全局模块的函数 } })pages/index/index.jsconst indexMsg 来自本模块的变量 function indexFunc() { return 来自本模块的函数 } const app getApp() const comm require(../../common/common.js) const myIndex require(my-index.js) Page({ data: { msg1: index.js模块引用 app.appMsg, msg2: index.js模块引用 app.appFunc(), msg3: index.js模块引用 comm.comMsg, msg4: index.js模块引用 comm.comFunc(), msg5: index.js模块引用 myIndex.myIndexMsg, msg6: index.js模块引用 myIndex.myIndexFunc(), msg7: index.js模块引用 indexMsg, msg8: index.js模块引用 indexFunc() } })pages/index/index.wxmlnavigation-bar title模块化 back{{false}} colorblack background#FFF/navigation-bar scroll-view classscrollarea scroll-y typelist view classbox view classtitle引用来自不同模块的变量和函数/view view classglobal-item view{{msg1}}/view view{{msg2}}/view /view view classdiff-dir-item view{{msg3}}/view view{{msg4}}/view /view view classsame-dir-item view{{msg5}}/view view{{msg6}}/view /view view classself-item view{{msg7}}/view view{{msg8}}/view /view /view /scroll-viewpages/index/index.wxsspage { height: 100vh; display: flex; flex-direction: column; } .scrollarea { flex: 1; overflow-y: hidden; } view { line-height: 2em; font-size: 40rpx; } .global-item { background-color: cyan; } .diff-dir-item { background-color: yellow; } .same-dir-item { background-color: plum; } .self-item { background-color: lightblue; }app.wxss.box { margin: 20rpx; padding: 20rpx; border: 2rpx solid silver; } .title { font-size: 40rpx; font-weight: bolder; text-align: center; margin-bottom: 30rpx; color: red; }运行效果页面顶部红色标题下面分四块不同底色区域青色区域输出全局模块的变量和函数黄色区域输出不同目录模块的变量和函数紫色区域输出同目录模块的变量和函数浅蓝色区域输出当前自身模块的变量和函数学习小结module.exports负责向外暴露变量与函数不导出的内容外部无法访问。require()引入外部模块路径要写对跨目录要正确书写../相对路径。同目录可以直接写文件名。getApp()获取小程序全局实例读取 app.js 挂载的数据不需要 require。wxml 中不能直接调用 js 函数需要提前把计算结果放到data再做数据绑定渲染。拓展颜色效果的实现思路把同一组内容包裹在同一个 view设置 class通过 css 设置背景色就可以实现分组上色。遇到的小问题写代码的时候踩过路径的坑如果 require 的相对路径写错就会报找不到模块。还有忘记写module.exports导入拿到的就是空对象。写的时候一定要留意模块导出这一步。

相关新闻

MacBook Pro A1278 Win7 驱动精解:Intel HD 3000 黑屏与触控板失灵修复指南

MacBook Pro A1278 Win7 驱动精解:Intel HD 3000 黑屏与触控板失灵修复指南

简介:本资源专为在2011年初款MacBook Pro(型号A1278,13英寸)上安装Windows 7 64位专业版SP1的操作系统用户提供完整驱动支持,解决Boot Camp环境下显卡、声卡、触控板、无线网卡等硬件兼容性问题。包内含1655个文件&…

2026/11/12 5:36:52 阅读更多 →
AI 原生前端研发效能度量:代码采纳率与单测覆盖率看板构建

AI 原生前端研发效能度量:代码采纳率与单测覆盖率看板构建

在企业级研发团队中引入 GitHub Copilot、Cursor 或基于 Claude Code 的自研开发流时,工程管理层最常被财务和技术 VP 灵魂拷问的一句话就是:“买了这么多 AI 编程账号,研发效能到底提升了多少?团队人效有没有翻倍?” …

2026/11/9 22:25:55 阅读更多 →
Java+MySQL构建在线评测系统:判题队列与可扩展实践

Java+MySQL构建在线评测系统:判题队列与可扩展实践

简介:这套基于Java与MySQL的Web在线评测系统,面向计算机专业课程设计及毕业设计场景,适合需要实现在线编程评测、课程作业管理或内部论坛的开发者参考。系统整合Spring MVC、Hibernate、MySQL与Lucene,完整展示从前端JSP交互到后端…

2026/11/10 1:06:23 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/12 5:00:00 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/12 5:13:20 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/12 5:13:20 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/11 17:16:37 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/11 17:16:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/12 5:13:20 阅读更多 →

日新闻

周新闻

月新闻