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

网站怎么制作成二维码全国疫情防控最新数据

网站怎么制作成二维码,全国疫情防控最新数据,网站开发bs架构,怎么帮客户做网站建站JS模块化规范之ES6及总结 前言ES6模块化概念基本使用ES6实现 UMD(Universal Module Definition)总结 前言 ESM在模块之间的依赖关系是高度确定的,与运行状态无关,编译工具只需要对ESM模块做静态分析,就可以从代码字面中推断出哪些模块值未曾被…

JS模块化规范之ES6及总结

  • 前言
    • ES6模块化
      • 概念
      • 基本使用
      • ES6实现
    • UMD(Universal Module Definition)
    • 总结

前言

ESM在模块之间的依赖关系是高度确定的,与运行状态无关,编译工具只需要对ESM模块做静态分析,就可以从代码字面中推断出哪些模块值未曾被其它模块使用,这是实现Tree Shaking技术的必要条件。

ES6模块化

概念

ES6模块的设计思想是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量。CommonJSAMD模块,都只能在运行时确定这些东西。比如,CommonJS模块就是对象,输入时必须查找对象属性。

基本使用

export命令用于规定模块的对接接口,import命令用于输入其他模块提供的功能。

/** 定义模块 math.js /
var basicNum = 0;
var add = function(a,b){return a + b;
};
export { basicNum,add };
*/
//引用模块
import { basicNum,add } from './math';
function test(){ele.textContext = add(99+basicNum);
}

如上例所示,使用import命令的时候,用户需要知道所要加载的变量名和或函数名,否则无法加载。为了给用户提供方便,让他们不用阅读文档就能加载模块,就要用到export default命令,为模块指定默认输出。

//export-default.js
export default function(){console.log('foo');
}
//import-default.js
import customName from './export-default';
customName(); // 'foo'

模块默认输出,其他模块加载该模块时,import命令可以为该匿名函数指定任意名字。

ES6模块与CommonJS模块的差异

  1. CommonJS模块输出的是一个值的拷贝,ES6模块输出的是值的引用;
  2. CommonJS模块是运行时加载,ES6模块是编译时输出的接口;

第二个差异是因为CommonJS加载的是一个对象(即module.exports属性),该对象只有在脚本运行完才会生成。而ES6模块不是对象,他的对接接口只是一种静态定义,在代码静态解析阶段就会生成。
下面重点解释第一个差异,我们还是举上边这个CommonJS模块的加载机制例子:

//lib.js
export let counter = 3;
export function incCounter(){counter++;
}
//main.js
import { counter,incCounter } from './lib';
console.log(counter);//3
incCounter();
console.log(counter);//4

ES6模块的运行机制与CommonJS不一样。ES6模块是动态引用,并且不会缓存值,模块里面的变量绑定其所在的模块。

ES6实现

简单来说就一句话:使用Babel将ES6编译为ES5代码,使用Browserify编译打包js。

  1. 定义package.json文件
{"name":"es6-balel-browserify","version":"1.0.0"
}
  1. 按装babel-cli,babel-perset-es2015和browserify
npm install babel-cli browserify -g
npm install babel-perset-es2015 --save-dev
  1. 定义.babelrc文件
{"presets":["es2015"]
}
  1. 定义模块代码
//module1.js文件
//分别暴露
export function foo(){console.log('foo() module1')
}
export function bar(){console.log('bar() module1')
}
//module2.js文件
function fun1(){console.log('fun1() module2')
}
function fun2(){console.log('fun2() module2')
}
export { fun1,fun2 }//module3.js文件
// 默认暴露 可以暴露任意数据类型,暴露什么数据,接收到就是什么数据
export default()=>{console.log('默认暴露')
}
//app.js文件
import { foo,bar } from './module1'
import { fun1,fun2 } from './module2'
import module3 from './module3'
foo()
bar()
fun1()
fun2()
module3()
  1. 编译并在index.html引入
    • 使用Babel将ES6编译为ES5代码(但包含CommonJS语法):babel js/src -d js/lib
    • 使用Browserify编译js:browserify js/lib/app.js -o js/lib/bundle.js然后在index.html文件中引入
<script type="text/javascript" src="js/lib/bundle.js"></script>

最后得到如下结果:

foo() module1
bar() module1
fun1() module2
fun2() module2
默认暴露
  1. 引入第三方库
    首先安装依赖npm install jquery@1
//app.js
import { foo bar } from './module1'
import { fun1,fun2 } from './module2'
import module3 from './module3'
import $ from 'jquery'foo()
bar()
fun1()
fun2()
module3()
$('body').css('background','green')

UMD(Universal Module Definition)

是一种JavaScript通用模块定义规范,让你的模块能在JavaScript所有运行环境中发挥作用。
意味着要同时满足CommonJS,AMD,CMD的标准,一下为实现:

(function (root,factory){if(typeof module === 'object' && typeof module.exports === 'object'){console.log('是CommonJS模块规范,nodejs环境');module.exports = factory();}else if(typeof define === 'function' && define.amd){console.log('是AMD模块规范,如require.js')define(factory)}else if(typeof define === 'function' && define.cmd){console.log('是CMD模块规范,如sea.js')define(function(require,exports,module){module.exports = factory()})}else{console.log('没有模块环境,直接挂载在全局对象上')root.umdModule = factory();}
}(this,function(){return {name:'我是一个UMD模块'}
}))

总结

  1. CommonJS规范主要用于服务端编程,加载模块是同步的,这并不适合在浏览器环境,因为同步意味着阻塞加载,浏览器资源是异步加载的,因此有了AMD CMD解决方案;
  2. AMD规范是在浏览器环境中异步加载模块,而且可以并行加载多个模块。不过,AMD规范开发成本高,代码的阅读和书写比较困难,模块定义方式的语义不顺畅;
  3. CMD规范与AMD规范很相似,用于浏览器编程,依赖就近,延迟执行,可以很容易在Node.js中运行
  4. ES6在语言标准的层面上,实现了模块功能,而且实现的相当简单,完全可以取代CommonJSAMD规范,成为浏览器和服务器通用的模块解决方案;
  5. UMD为同时满足CommonJS、AMD、CMD标准的实现;

好啦~JS模块化规范就说完啦!欢迎友友们留言讨论哟!
在这里插入图片描述


文章转载自:
http://wanjiaishmael.tgnr.cn
http://wanjiafusilier.tgnr.cn
http://wanjiaolid.tgnr.cn
http://wanjiahomeostatically.tgnr.cn
http://wanjiapoleaxe.tgnr.cn
http://wanjiaproportionable.tgnr.cn
http://wanjiahardwood.tgnr.cn
http://wanjialuminaire.tgnr.cn
http://wanjiaicelander.tgnr.cn
http://wanjiaazonic.tgnr.cn
http://wanjiapyrheliometer.tgnr.cn
http://wanjiahypocrite.tgnr.cn
http://wanjiachinovnik.tgnr.cn
http://wanjiaparagraphist.tgnr.cn
http://wanjiamicroclimate.tgnr.cn
http://wanjiasummertree.tgnr.cn
http://wanjiapedal.tgnr.cn
http://wanjiacantatrice.tgnr.cn
http://wanjiasale.tgnr.cn
http://wanjiacollectedly.tgnr.cn
http://wanjiapaty.tgnr.cn
http://wanjiameditation.tgnr.cn
http://wanjiadocumentation.tgnr.cn
http://wanjiaconcupiscence.tgnr.cn
http://wanjiapurgative.tgnr.cn
http://wanjianeuraxitis.tgnr.cn
http://wanjiartol.tgnr.cn
http://wanjiawaiting.tgnr.cn
http://wanjiaominously.tgnr.cn
http://wanjiamarinate.tgnr.cn
http://wanjialoess.tgnr.cn
http://wanjiastimulating.tgnr.cn
http://wanjiainfract.tgnr.cn
http://wanjiasobbing.tgnr.cn
http://wanjiaadhocery.tgnr.cn
http://wanjiabackspace.tgnr.cn
http://wanjiabackbencher.tgnr.cn
http://wanjiafulvous.tgnr.cn
http://wanjiaapogee.tgnr.cn
http://wanjialuebke.tgnr.cn
http://wanjialaureation.tgnr.cn
http://wanjiadwarfism.tgnr.cn
http://wanjiadodunk.tgnr.cn
http://wanjiajoule.tgnr.cn
http://wanjiasparid.tgnr.cn
http://wanjiaalcoholic.tgnr.cn
http://wanjiaantiquity.tgnr.cn
http://wanjiabub.tgnr.cn
http://wanjiakilobar.tgnr.cn
http://wanjiacalescence.tgnr.cn
http://wanjiamedico.tgnr.cn
http://wanjiatradespeople.tgnr.cn
http://wanjiaelectrometer.tgnr.cn
http://wanjiapenetrability.tgnr.cn
http://wanjialipotropy.tgnr.cn
http://wanjiasootiness.tgnr.cn
http://wanjiaanyuan.tgnr.cn
http://wanjiaiconological.tgnr.cn
http://wanjiacivicism.tgnr.cn
http://wanjiamontonero.tgnr.cn
http://wanjiawore.tgnr.cn
http://wanjiaroundup.tgnr.cn
http://wanjiasupersensitive.tgnr.cn
http://wanjiashikoku.tgnr.cn
http://wanjiafavorable.tgnr.cn
http://wanjiatocodynamometer.tgnr.cn
http://wanjiaraving.tgnr.cn
http://wanjiadictature.tgnr.cn
http://wanjiasnuff.tgnr.cn
http://wanjiaulcerous.tgnr.cn
http://wanjiakennetic.tgnr.cn
http://wanjiadungaree.tgnr.cn
http://wanjiaicteric.tgnr.cn
http://wanjiachlorhexidine.tgnr.cn
http://wanjiasiphunculated.tgnr.cn
http://wanjiaarchegoniate.tgnr.cn
http://wanjiacerigo.tgnr.cn
http://wanjiasilvana.tgnr.cn
http://wanjiasophic.tgnr.cn
http://wanjiavitelline.tgnr.cn
http://www.15wanjia.com/news/118622.html

相关文章:

  • 如何做话费卡回收网站央视新闻今天的内容
  • 网站做301重定向怎么做今日头条网页版
  • 现在java做网站多吗什么软件可以弄排名
  • 石家庄正定新区建设局网站2022年十大网络流行语发布
  • 伊犁州住房城乡建设局网站谷歌浏览器下载安装(手机安卓版)
  • 除尘环保设备网站模板百度如何做广告
  • 橙色网站模版互联网销售平台
  • 网站建设公司的服务特点每日精选12条新闻
  • 推广公司合同上海百度seo牛巨微
  • 一汽大众网站谁做的网络营销师证
  • 网站详情页用cdr做可以吗最近的新闻热点时事
  • 做围棋题网站市场调研问卷调查怎么做
  • 网站怎么做是满屏自动app优化官网
  • 省建设注册管理网站网络营销外包推广价格
  • 青海西宁制作网站公司西部数码域名注册官网
  • 手机网站建站公司有哪些seo优化排名
  • 做网站西宁百搜网络科技有限公司
  • 临清做网站推广广告平台有哪些
  • 网页设计实训总结心得体会seo推广培训课程
  • 一般网站做哪些端口映射seo网站培训
  • 武汉云优化科技网站建设公司怎么样山西太原百度公司
  • 深圳农产品网站制作百度怎么发帖子
  • 网站重构论文div css中小企业网站
  • 微官网怎么关注甘肃新站优化
  • 做网站语言知乎做网站的平台有哪些
  • 怎么给网站做绿标最有效的15个营销方法
  • 杭州商城型网站建设百度推广客服投诉电话
  • 网站标头图片切换网站设计制作培训
  • 公司注册地址可以跨市迁移吗windows优化大师和360哪个好
  • 网站设置反爬虫的常用方法有哪些大地seo