Systemjs

作者: 隐号骑士 | 来源:发表于2021-01-27 17:00 被阅读0次

    一个问题

    可以在浏览器中引入esm包吗?

    index.html

    <script src="./main.js"></script>
    

    main.js

    import Vue from 'https://cdn.bootcdn.net/ajax/libs/vue/2.5.18/vue.esm.browser.js'
    
    console.log(Vue)
    

    报错 Uncaught SyntaxError: Cannot use import statement outside a module

    <script> - HTML(超文本标记语言) | MDN

    如果type属性为module,代码会被当作JavaScript模块 。

    index.html

    <script type='module' src="./main.js"></script>
    

    成功打印出了Vue构造器

    进一步?

    能否像在日常开发中那样写代码,如

    import Vue from 'vue'
    

    没有npm,没有node_modules,通过网络资源加载

    此时要用上 Import maps

        <script type="importmap">
            {
              "imports": {
                "vue": "https://cdn.bootcdn.net/ajax/libs/vue/2.5.18/vue.esm.browser.js",
              }
            }
        </script>
    

    但浏览器不太支持~

    此时system.js上场

    根据 Javascript Tutorial: SystemJS intro 介绍,System.js 的特性有

    1 polyfill for import maps
    2 one file with multiple modules (one network) (System.set System.register)
    3 able to look at all the javascript modules right now (System.get System.has)
    4 import.meta.resolve
    5 import.meta.url give you the url of the current file (when we are inside of)
    6 surport JSON HTML CSS modules in browser javascript modules

    使用

    index.html

    <script type="systemjs-importmap">
            {
              "imports": {
                "vue": "https://cdn.jsdelivr.net/npm/vue@2.6.12/dist/vue.js"
              }
            }
        </script>
      <body>
        <script type="systemjs-module" src="./main.js"></script>
        <div id="container">
            {{date}}
        </div>
        <script src='https://cdn.jsdelivr.net/npm/systemjs/dist/system.js'></script>
      </body>
    
    

    main.js

    const vue = System.import("vue").then(e => {
        const Vue = e.default
        new Vue({
            el: '#container',
            data :{
                date: '2021'
            }
        })
    })
    

    相关文章

      网友评论

          本文标题:Systemjs

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