之前写小程序导入模块有时候用import导入,有时候用require导入,好像都行得通。

之前也没仔细研究两者有什么区别。

去看小程序官方文档 https://developers.weixin.qq.com/miniprogram/dev/reference/api/require.html ,发现只能用require的方式引用模块。用module.exports的方式导出模块。也就是说仅支持CommonJS规范(nodejs原生支持的)。没说支持ES Module规范。

那为什么用import的方式导入,export的方式也能导出呢?

原来是开发小程序的时候用到了babel编译。会将import语法转码为require。

来验证一下吧:

1. 用export的方式导出,import的方式导入,开启babel编译。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码正常运行

2. 用export的方式导出,import的方式导入,关闭babel编译。(按照1的方式,仅关闭babel编译)

在这里插入图片描述
代码编译报错
在这里插入图片描述

3. 用module.exports的方式导出,require的方式导入,开启babel编译。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码正常运行

4. 用module.exports的方式导出,require的方式导入,关闭babel编译。(按照3的方式,仅关闭babel编译)

在这里插入图片描述
代码仍然正常运行

总结:ES Module规范只有在开启了babel编译时才能使用。

在阮一峰的文档 https://es6.ruanyifeng.com/#docs/module#import-%E5%91%BD%E4%BB%A4 里写了:
在这里插入图片描述

另外参考地址: https://segmentfault.com/q/1010000015690715

小程序 支持 模块 化开发,可以将一些公共的 代码 抽离成为一个单独的 js 文件,作为一个 模块 模块 只有通过 module.exports 或者 exports 才能对外暴露接口。引入 模块 通过 require 方式。创建 模块 复制引入 模块 复制这是官方提供的方法,我个人还是比较喜欢使用export和 import ,使用起来比较顺手,可能是因为我一直用Vue开发的原因,下面拿一个实际例子,讲一讲export和 import 。最近在开发的一个 小程序 项目,打算使用Promise对API这块做下封装,统一管理API请求。新
这是第二次学习 微信小程序 开发以下内容来自微信开放社区的学习内容,是自己个人的总结 数据绑定:{{变量名}}----.wxml ------使得其有动态渲染能力 data:{变量名:(java语法获得)}------.js 动态渲染:变量名可以使变量常量,表达式 逻辑语句wx:java逻辑语法关键字=“{{condition}}” 列表渲染:即数组的使用,将con...
模板引用的普通用法: 1.首先在wxml文件 写如下 代码 (解释:声明两个template,一个是模板,一个是要套用模板的,通过is=“template名字”的方式进行引用) <template name="temp"> <view>收件人:{{name}}</view> <view>联系方式:{{p...
小程序 中,主要用到 代码 函数的复用,并且使得自己定义的js文件像utils一样可以被其他文件引用,以下两个方面: 1.被引用:在utils被调用的js文件中,面向对象的方式模型输出:  module.exports={要调用的函数名称:要调用的函数名称 }; 2.引用端:在要调用的js文件中 模块 化引入utils的js文件  var object= require ("utils被调用的js文件地址...
微信小程序 @ import 的用法 # 小程序 WXSS样式如何 导入 @ import 你好! 如果你有以上的疑问, 可以仔细阅读这篇文章,了解一下@ import 的基本用法。 index.wxml <text>我是mikyatxy!</text>
1.定义模板 使用`&lt;template name="tempName"&gt;&lt;/template&gt;`标签定义模板,并将模板名称命名为tempName,赋值给属性name。在标签内部,定义模板结构 &lt;!-- template.wxml --&gt; &lt;!-- index: int msg: string time: string --&gt;