标签:业务 导入 imp 适用于 turn get ... requirejs net
// util.js function getFormatDate(date, type) { // type === 1 返回 xxxx // type === 2 返回 xxx // ... } // a-util.js function aGetFormatDate(date) { //要求返回 xxx 格式 return getFormatDate(date, 2) } // a.js var dt = new Date() console.log(aGetFormatDate(dt)) <script src="util.js"></script> <script src="a-util.js"></script> <script src="a.js"></script>
这些代码中的函数必须是全局变量,才能暴露给使用方,全局变量污染
// util.js export { function getFormatDate(date, type) { // type === 1 返回 xxxx // type === 2 返回 xxx // ... } } // a-util.js var getFormateDate require(‘util.js‘) export { function aGetFormatDate(date) { //要求返回 xxx 格式 return getFormatDate(date, 2) } } // a.js var aGetFormatDate = require(‘a-util.js‘) var dt = new Date() console.log(aGetFormatDate(dt))
//util.js define(function () { return { getFormatDate(date, type) { // type === 1 返回 xxxx // type === 2 返回 xxx // ... } } }) // a-util.js define([‘./util.js‘], function (util) { return { aGetFormatDate: function(date) { return util.getFormatDate(date,2) } } }) // a.js define([‘a-util.js‘], function (aUtil) { return { printDate: function(date) { console.log(aUtil.aGetFormatDate(date)) } } }) // main.js required([‘./a.js‘], function(){ var date = new Date() a.printDate(date) })
使用require.js
<scritp src="/require.min.js" data-main="./main.js"></scritp>
require()函数在加载依赖函数的时候是异步加载的,这样浏览器不会失去响应,它指定的回调函数,只有前面的模块加载成功,才会去执行。
因为网页在加载js的时候会停止渲染,因此我们可以通过异步的方式去加载js,而如果需要依赖某些,也是异步去依赖,依赖后再执行某些方法。
// util.js module.exports = { getFormatDate(date, type) { // type === 1 返回 xxxx // type === 2 返回 xxx // ... } } // a-util.js var util = require(‘util.js‘) module.exports = { aGetFormatDate: function(date) { return util.getFormatDate(date,2) } }
如果使用es6语法,那么则无需引入requireJS进行模块化,它的特点主要为:
导出内容有俩种关键字:
export const color = ‘#fff‘;
const color = ‘#fff‘;
export color as white
export default const color = ‘#fff‘; // export default 5; // const color = ‘#fff’; // export { color as default }
在模块中使用import关键字来导入其他模块导出的内容。 分为几种情况:
导入非默认内容,需要用结构的方式,因为在模块中,非默认导出的内容,都会被添加到一个变量中,用结构的方式拿出一个或多个内容。
import { color } from ‘./color‘;
import color from ‘./color‘;
CMD规范的实现代表是sea.js
对于依赖的模块AMD是提前执行,CMD是延迟执行。不过RequireJS从2.0开始,也改成可以延迟执行(根据写法不同,处理方式不通过)。
CMD推崇依赖就近,AMD推崇依赖前置。
//AMD define([‘./a‘,‘./b‘], function (a, b) { //依赖一开始就写好 a.test(); b.test(); }); //CMD define(function (requie, exports, module) { //依赖可以就近书写 var a = require(‘./a‘); a.test(); ... //软依赖 if (status) { var b = requie(‘./b‘); b.test(); } });
简单来说,就是sea.js属于懒加载,require.js属于预加载.
标签:业务 导入 imp 适用于 turn get ... requirejs net
原文地址:https://www.cnblogs.com/xiaoyuchen/p/10544835.html