美文网首页
CommonJS & ES6 Module

CommonJS & ES6 Module

作者: 隐号骑士 | 来源:发表于2020-05-14 23:59 被阅读0次

    原始

    最初,我们需要写互相依赖的功能时:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id="root"></div>
        <script>
            function reduce(arr, func) {
                return arr.reduce((a, b) => func.call(this, a, b))
            }
            function add(a, b) {
                return a + b;
            }
            function sum(arr) {
                return reduce(arr, add);
            }
            var values = [1, 2, 4, 5, 6, 7, 8, 9];
            var result = sum(values)
            document.getElementById("root").innerHTML = result;
        </script>
    </body>
    </html>
    

    使用script:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id="root"></div>
        <script type="text/javascript" src="./reduce.js"></script>
        <script type="text/javascript" src="./add.js"></script>
        <script type="text/javascript" src="./sum.js"></script>
        <script type="text/javascript" src="./main.js"></script>
    </body>
    </html>
    

    IIFE

    var myApp = {};
    
    
    (function () {
        myApp.reduce = function (arr, func) {
            return arr.reduce((a, b) => func.call(this, a, b))
        }
    })()
    
    (function () {
        myApp.add = function (a, b) {
            return a + b;
        }
    })()
    
    (function () {
        myApp.sum = function (arr) {
            return myApp.reduce(arr, myApp.add);
        }
    })()
    
    (function () {
        var values = [1, 2, 4, 5, 6, 7, 8, 9];
        var result = myApp.sum(values)
        document.getElementById("root").innerHTML = result;
    })()
    

    eg: JQuery

    CommonJS

    CommonJS 不是一个 JavaScript 库。它是一个标准化组织。
    在CommonJS中,文件=>模块

    var sum = require('./sum')
    var values = [1, 2, 4, 5, 6, 7, 8, 9];
    var result = sum(values)
    document.getElementById("root").innerHTML = result;
    
    module.exports = function (arr) {
        // ...
    }
    

    · require是同步的
    · require第一次加载模块会执行文件内容,之后加载模块只会加载上次导出的值的拷贝

    //file2.js
    console.log(12)
    
    let obj = {
        a: 1,
    }
    // setTimeout(() => {
    //     obj.a = 2
    // }, 10)
    
    setTimeout(() => {
        obj = { a: 2 }
    }, 10)
    
    module.exports = obj
    
    //file1.js
    const file2 = require('./file2')
    console.log(file2)
    
    setTimeout(() => {
        const file2 = require('./file2')
        console.log(file2)
    }, 1000)
    
    

    PS: <script>标签的module类型需要在服务环境下运行(跨域校验)

    ES6 Module

    import file from './file2.mjs';
    console.log(file)
    
    console.log(12)
    let obj = {
        a: 1,
    }
    setTimeout(() => {
        obj = { a: 2 }
    }, 10)
    // module.exports = obj
    export default obj
    

    相关文章

      网友评论

          本文标题:CommonJS & ES6 Module

          本文链接:https://www.haomeiwen.com/subject/iekmihtx.html