前端模块化(CommenJS规范、ES6规范)

news/2024/12/29 17:34:51/

目录

  • 1. 简介
  • 2. CommonJS规范
  • 3. ES6模块化规范
    • 写法一
    • 写法二(推荐)


1. 简介

随着网站逐渐变成”互联网应用程序”,嵌入网页的Javascript代码越来越庞大,越来越复杂。

Javascript模块化编程,已经成为一个迫切的需求。理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块。但是,Javascript不是一种模块化编程语言,它不支持”类”(class),包(package)等概念,也不支持”模块”(module)。

因此引入了两种模块化规范:

  • CommonJS模块化规范
  • ES6模块化规范


2. CommonJS规范

每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。

CommonJS 使用 exports 和 require 来导出、导入模块

项目结构:
image-20210203001545536
首先创建四则运算.js,作为工具类来使用,其中定义四个方法,然后导出所有方法

//四个方法
const sum = function (a, b) {return a + b
}
const sub = function (a, b) {return a - b
}
const mul = function (a, b) {return a * b
}
const div = function (a, b) {return a / b
}//导出
// module.exports = {
//     sum: sum,
//     sub: sub,
//     mul: mul,
//     div: div
// }//可简写成
module.exports = {sum,sub,mul,div
}

然后创建test.js引入上述模块测试

const fun = require('./四则运算.js');console.log(fun.sum(1,2));
console.log(fun.sub(1,2));
console.log(fun.mul(1,2));
console.log(fun.div(1,2));

运行程序测试
image-20210203000434020



3. ES6模块化规范

ES6使用 exportimport 来导出、导入模块。

写法一

项目结构:
image-20210203002019295
首先创建工具.js,作为工具类来使用,其中定义并导出两个方法

export function get(){console.log("获取");
}export function save(){console.log("保存");
}

然后创建工具.js,用来导入上述方法并测试

//导入方法
import {get,save} from './工具.js';get();
save();

运行测试:发现报错了
image-20210203130153521
这是因为nodejs默认不支持es6的import语法,我们需要用Babel转换成ES5语法再执行

初始化项目成一个nodejs项目

npm init -y

image-20210203130634595编写.babelrc配置文件

{"presets": ["es2015"],"plugins": []
}

然后安装转码器,在项目中安装

npm install --save-dev babel-preset-es2015

image-20210203131016415
然后就可以进行转码,我们将在项目根目录下创建src目录,然后将测试.js工具.js移入,再输入如下命令转码

babel src -d dist

然后打开新生成dist/测试.js运行测试
image-20210203133121257
成功显示结果!


写法二(推荐)

工具.js修改为:

export default {get() {console.log("获取");},save() {console.log("保存");}
}

测试.js修改为:

//以对象形式导入
import tool from './工具.js';tool.get();
tool.save();

然后同样进行转码执行即可


http://www.ppmy.cn/news/605626.html

相关文章

差值结构的基态和跃迁

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点,AB训练集各由5张二值化的图片组成,让差值结构中有6个1, 行分布是0,1,1,2,2列分布是4,2. 得到数据 差值结构 A-B 迭代次数 共…

pytorch 与 numpy 的数组广播机制

20210505 从左边开始对应位置,如果一个是1,一个大于1,以大于1的为准, 不能对应位置的值不相同 缺失的维度:其中一个矩阵少某个或某些维度

LeetCode简单题之数组序号转换

题目 给你一个整数数组 arr ,请你将数组中的每个元素替换为它们排序后的序号。 序号代表了一个元素有多大。序号编号的规则如下: 序号从 1 开始编号。 一个元素越大,那么序号越大。如果两个元素相等,那么它们的序号相同。 每个数…

Webpack快速入门

目录一. 什么是Webpack二. Webpack安装三. 案例:JS打包1. 创建nodejs项目2. 编写js文件3. 编写webpack.config.js4. 打包四. 案例:JS合并CSS1. 安装style-loader和css-loader2. 修改webpack.config.js3. 编写css文件4. 修改main.js5、打包6、打开浏览器测…

LeetCode简单题之字符串中的单词数

题目 统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。 请注意,你可以假定字符串里不包括任何不可打印的字符。 示例: 输入: “Hello, my name is John” 输出: 5 解释: 这里的单词是指连续的不是空格的字符,所以 “Hello,”…

MongoDB从零开始详细教程(超详细讲解)

目录一、简介1. 简单介绍2. 业务应用场景3. 什么时候选择MongoDB4. 体系机构5. 数据类型6. 特点二、Windows安装&启动&连接1. 下载压缩包2. 解压3. 安装服务4. 启动服务5. shell连接登录&退出6. Compass图形化连接登录三、Linux安装&启动&连接1. 下载压缩包…

numpy数组方法

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 本文链接&#xff1a;https://blog.csdn.net/weixin_37887248/article/details/81744755 </div><!--一个博主专栏付费入口--><!-…