当前位置: 首页 > news >正文

js中函数的导入导出

js中的函数导入导出,是近几年才有官方标准的,即ES6标准。

以前的民间规范CommonJS,这里不做讨论。推荐使用官方标准。


背景
设想有这么个页面结构:

image

 一个页面h1.html要使用五项业务功能,分别写在26.js,27.js……30.js中;

而每个业务功能,又分别使用五个js文件的基础功能,分别在1-25这二十五个js文件里。

那么最终的网页文件,头部难道要包含30个js文件吗?即便如此做,还会有效率和加载时机等问题给我们添乱。


解决技术

 

js的导入/导出语法,配合文件规划,可以解决这个问题。

导出:把文件中的某些函数(也可以是全局变量),声明为可以被外界访问。关键字:export

导入:从外部文件中,引入需要的功能(变量)来使用。关键字:import

页面中的导入:在script标签中,除了文件名,添加 type="module" 属性,来识别和使用导入的js文件。


示例

在页面h1.html中,设置三个文本框和一个命令按钮。前两个文本框填入数字,点击按钮,在第三个文本框出现它们的和。

分析规划:1、把求和函数add作为功能函数,写在j1.js中。2、写一个衔接文件h1.js(此处设计为与页面同名,方便维护),调用j1等等功能文件的内容。3、网页引入h1.js。

参考代码如下

j1.js:

1 export function add(a, b) {
2   return a + b;
3 }

第一行表示该函数可以被外部调用。

h1.js:

 1 import {add} from "./j1.js";
 2 //import * as myall from "./j1.js";
 3 function b1_click() {
 4     let a, b;
 5     a = Number(document.querySelector("#i1").value);
 6     b = Number(document.querySelector("#i2").value);
 7     document.querySelector("#i3").value =add(a, b);
 8     //document.querySelector("#i3").value =myall.add(a, b);
 9 }
10 document.querySelector("#b1").addEventListener("click", b1_click);

第一行引入j1.js中的add函数,第七行使用了它。

如果需要使用功能js文件中多个函数,可以在第一行的花括号中一一列出(逗号分隔);也可以用第二行的方式给它们起个名字,用第八行的方式调用。

第三行的函数b1_click是给页面里面的命令按钮(id='b1')用的,这么命名好维护;第十行将两者关联。

h1.html:

 1 <html>
 2     <head>
 3         <title>
 4             页面
 5         </title>
 6         <script type="module" src="js/h1.js"></script>
 7     </head>
 8     <body>
 9         <input type="text" id="i1">
10         <input type="text" id="i2">
11         <input type="text" id="i3">
12         <input type="button" id="b1" value="计算">
13     </body>
14 </html>

需要特别注意,第六行加入的type属性。没有这个,浏览器不认识js中的导入导出命令。


 采用这种方式,可以更好地跨文件组织js代码。而且,浏览器会对所有js文件的加载进行优化(异步加载、懒加载等),提升用户体验,避免常见的小问题。

大家可以想想,如何用导入导出,规划前面提到的30个js文件的页面。

http://www.jsqmd.com/news/40916/

相关文章:

  • 2025 最新杭州翻译品牌推荐:涵盖多场景专业翻译服务的优质品牌榜单,杭州法律翻译/杭州移民翻译/杭州签证翻译/杭州专业翻译专业公司推荐
  • 一对一视频app开发,基于Redis+Lua实现分布式限流 - 云豹科技
  • Nginx配置proxy转发其他域名502 - Commissar
  • 2025年高温抗氧化试验炉制造企业权威推荐榜单:回转抗渣炉/中温试验炉/全自动重烧试验炉设备源头厂家精选
  • 2025 最新推荐!绝缘监测系统厂家权威榜单:变频设备 / 高压电机专用监测方案深度解析
  • 2025年制氮机生产厂家权威推荐榜单:PSA制氮机/制氮机组/PSA变压吸附制氮机源头厂家精选
  • 2025年11月牛初乳品牌口碑榜:五强实测评价与排行指南
  • 2025年11月牛初乳品牌推荐榜:免疫营养指标与认证资质全对比
  • 完整教程:Python - PEP 738 – 将 Android 添加为支持平台
  • 2025年11月AI智能客服机器人品牌推荐:性能评价榜全维度盘点
  • 如何禁用XFCE的屏幕锁
  • 2025年11月上海遗产继承律师评测榜:五强名单与选择策略
  • 05_杂记 学习方法很重要!
  • 2025年11月上海遗产继承律师评价榜:五强机构数据全解析
  • 2025年中小学生AI学习机怎么选?这品牌凭技术封神,全学段都适配!
  • 2025年11月北京物流公司推荐榜:热门企业对比与口碑排行
  • 2025年11月消音室厂家推荐榜:五强对比与性能全解析
  • 2025年11月消音室厂家推荐排名榜:五强性能数据与认证资质一览
  • 2025年11月北京物流公司优选榜:五强对比与权威排行
  • 2025年11月隔音室厂家榜单:五强口碑与实测数据综合排行
  • 2025年11月隔音室厂家推荐榜:一站式选购指南与厂家排名榜
  • 2025年11月超声波清洗机厂家推荐排行:五家主流品牌深度对比评价
  • 2025年隔音室厂家联系方式推荐:精选推荐与使用指南
  • 2025年11月隔音室厂家排名榜:五强品牌数据化选购参考
  • 2025年11月超声波清洗机厂家推荐榜:五强对比看技术实力与服务差异
  • New Inventory System Plugin
  • 14-无监督学习:讲解无需标注资料的数据分析和模式发现技巧
  • Go日志之日志库讲解
  • Why are Germans superior to Latins
  • Why are monarchies so good