02.模块化相关规范

1.模块化概述
传统开发模式的主要问题

  • 命名冲突:指的是多个js文件之间如果存在重名的变量,则会发生变量覆盖问题;
  • 文件依赖:指的是js文件之间无法实现相互的引用

通过模块化解决上述问题

  • 模块化就是把单独的一个功能封装到一个模块(文件)中,模块之间相互隔离,但是可以通过特定的接口公开内部成
    员,也可以依赖别的模块
  • 模块化开发的好处:方便代码的重用,从而提升开发效率,并且方便后期的维护

2.浏览器端模块化规范(已过时,不推荐使用,推荐使用ES6模块化规范)

  • AMD
    Require.js(http://www.requirejs.cn/)
  • CMD
    Sea.js(https://seajs.github.io/seajs/docs/)

3.服务器端模块化规范

  • CommonJS
    ①模块分为单文件模块与包
    ②模块成员导出: module.exports 和exports
    ③模块成员导入: require (‘模块标识符‘)

4.大一统的模块化规范-ES6模块化
在ES6模块化规范诞生之前,Javascript社区已经尝试并提出了AMD、 CMD、 CommonJs 等模块化规范。
但是,这些社区提出的模块化标准,还是存在一定的差异性与局限性、并不是浏览器与服务器通用的模块化标准,例如:

  • AMD和CMD适用于浏览器端的Javascript 模块化
  • CommonJs适用于服务器端的Javascript 模块化

因此,ES6语法规范中,在语言层面上定义了ES6模块化规范,是浏览器端与服务器端通用的模块化开发规范。

ES6模块化规范中定义:

  • 每个js文件都是一个独立的模块
  • 导入模块成员使用 import 关键字
  • 暴露模块成员使用 export 关键字

4.1 Node.js 中通过babel体验ES6模块化
(1)安装babel相关的依赖包
npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node
(2)安装额外的第三方插件
npm install --save @babel/polyfill
(3)项目跟目录创建文件babel.config.js
(4)babel.config.js文件内容如下代码

//presets:语法转换的数组,提供在转换期间可能会用到的语法转换插件
const presets=[
    ["@babel/env",{
    //转换完毕之后的代码至少要支持以下浏览器
        targets:{
            edge:"17",
            firefox:"60",
            chrome:"67",
            safari:"11.1"
            }
        }]
     ];
     //向外暴露,供babel来进行使用
      module.exports={presets};

(5)通过npx babel-node index.js执行代码

5 ES6模块化的基本语法
(1).默认导出与默认导入

  • 默认导出语法 export default 默认导出的成员
  • 默认导入语法 import 接收名称 from ‘模块标识符‘

默认导出

//当前文件模块为m1.js

//定义私有成员a和c
let a=10
let c=20
//外界访问不到变量d,因为它没有被暴露出去
let d=30
function show(){}

//将本模块中的私有成员暴露出去,供其它模块使用
export default{
 a,
 c,
 show
}

默认导入

//导入模块成员
import m1 from './m1.js'

console.log(m1)
//打印输出的结果为:
//{a:10,c:20,show:[Fuction:show]}

原文地址:https://www.cnblogs.com/songsongblue/p/12080572.html

时间: 2024-11-03 17:21:28

02.模块化相关规范的相关文章

JavaSript模块化-AMD规范与CMD规范

JavaScript模块化 在了解AMD,CMD规范前,先来简单地了解下什么是模块化,模块化开发. 模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解以之处理.模块化是一种处理复杂系统分解为代码结构更合理,可维护性更高的可管理的模块的方式.可以想象一个巨大的系统代码,被整合优化分割成逻辑性很强的模块时,对于软件是一种何等意义的存在.对于软件行业来说:解耦软件系统的复杂性,使得不管多么大的系统,也可以将管理,开发,维护变得"有理可循". 一些对

Javascript模块化编程-规范

实现Javascript模块化,固然很重要,但是怎样才能实现国际上都能认可的模块化呢?模块化编程规范随应运而生. 目前Javascript模块化规范主要有两种:CommonJS和AMD. CommonJS: 09年,美国程序开发人员Ryan Dahl创造了node.js项目,将JS运用于服务器端. 由于后台服务端的业务比较复杂,如果没有模块化编程规范,后台维护和开发将变得异常艰难. node.js的模块系统,就是参照CommonJS规范实现的.在CommonJS中,require(),用于加载模

项目开发相关规范

目录规范 目录规范--在开发中整体文件夹组织结构. 1.Requirement--需求文档文件夹 2.Design--设计文档文件夹 3.Test--集成测试,系统测试,测试报告,测试清单文件夹 4.Deployment--发布部署的文件夹 5.Study--预研,学习资料的文件夹 6.Src--源码文件夹 7.Help--帮助文档文件夹 基本命名规范 1.变量使用驼峰法的规则命名,要加入前缀m,如:mUserNum; 2.常量使用全大写字母标识,单词间用下划线隔开,如:USER_NAME: 3

DB2相关规范-日志<持续更新>

2015/5/26 星期二 上午 8:40:23 1. 整体的规范 1,1 关键字大写 , {} 整体快 [] 可选项 1.2 注意操作符的优先级 1.3 注意链接字符 1.4 删除重复行 关键字 distinct 显示 1.5 使用 dis [ribe] 表示表结构 2. 练习下 3. 字符跟日期要包含在单引号里面 3.1 字符大小敏感 日期格式敏感 3.2 between and 在俩个值之间 3.3 in(set) 可以俩列值 等于值列表中的一个 -- 可以练习下看看 -- 3.4 已安装

流程图相关规范

本文相关算法流程图如下图所示. 在流程图中,判断框左边的流程线表示判断条件为真时的流程,右边的流程线表示条件为假时的流程,有时就在其左.右流程线的上方分别标注“真”.“假”或“T”.“F”或“Y”.“N”. 另外还规定,流程线是从下往上或从右向左时,必须带箭头,除此以外,都不画箭头,流程线的走向总是从上向下或从左向右. 算法的结构化描述 早期的非结构化语言中都有go to语句,它允许程序从一个地方直接跳转到另一个地方去.执行这样做的好处是程序设计十分方便灵活,减少了人工复杂度,但其缺点也是十分突

js 模块化的规范

       The Module Pattern,模块模式,也译为模组模式,是一种通用的对代码进行模块化组织与定义的方式.这里所说的模块(Modules),是指实现某特定功能的一组方法和代码.许多现代语言都定义了代码的模块化组织方式,比如 Golang 和 Java,它们都使用 package 与 import 来管理与使用模块,而目前版本的 JavaScript 并未提供一种原生的.语言级别的模块化组织模式,而是将模块化的方法交由开发者来实现.因此,出现了很多种 JavaScript 模块化

Web Service相关规范

Web Service概述 Web Service是一个平台独立的.低耦合的.自包含的.基于可编程的Web应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的互操作的应用程序. 在Web Service的体系架构中有三个角色:服务提供者(Service Provider),也叫服务生产者:服务请求者(Service Requester),也叫服务消费者:服务注册中心(Service Register),也叫服务代理,服务提供

我也谈 javascript 模块化 -AMD规范

最近,读了很多有关js模块化编程方面的文章,自己也有些小小的理解,不过,还是得借助别人的总结,在这个基础上谈一谈自己的理解吧!参考:http://www.ruanyifeng.com/blog/2012/10/javascript_module.html1.网页js程序为什么要模块化?;之前做的一些网站,或者说网页,基本上是一html+css实现布局,内容展示为主.至于一些表单的验证逻辑,以及给页面实现一些特效(比如点击之后弹个窗出来,动画啊,等等)之类的,无非就是在对应的页面中写一些js脚本就

时间格式化专题及相关规范

1.多种日期时间格式 以下的日历表大家应该最熟悉不过了,我们经常在网络上查询日期,大多是如下格式显示的. 其中有两种日期格式 阳历:2020-1-17 10:48 农历:二零一九年腊月二十三 虽然阳历接近于国际化的格式,农历则是我们本土化的(localization,一些编程语言里包命名的时候经常携程I10n,为了方便书写)的习惯. 外国人需要思维转换一下才能看懂这个日期. 触类旁通:还有一些日期,受宗教及本土文化影响,偏本土化的,大家看起来比较费力,这在沟通上也不方便,例如泰历,日本历法,台湾