美文网首页web前端高级-vue
vite环境下图片动态引入

vite环境下图片动态引入

作者: 老鼠AI大米_Java全栈 | 来源:发表于2021-11-30 17:08 被阅读0次

    开发者使用一个模块时,有时需要知道模板本身的一些信息(比如模块的路径)。现在有一个提案,为 import 命令添加了一个元属性import.meta,返回当前模块的元信息。

    import.meta

    开发者使用一个模块时,有时需要知道模板本身的一些信息(比如模块的路径)。现在有一个提案,为 import 命令添加了一个元属性import.meta,返回当前模块的元信息。

    import.meta只能在模块内部使用,如果在模块外部使用会报错。

    这个属性返回一个对象,该对象的各种属性就是当前运行的脚本的元信息。具体包含哪些属性,标准没有规定,由各个运行环境自行决定。一般来说,import.meta至少会有下面两个属性。

    (1)import.meta.url

    import.meta.url返回当前模块的 URL 路径。举例来说,当前模块主文件的路径是https://foo.com/main.jsimport.meta.url就返回这个路径。如果模块里面还有一个数据文件data.txt,那么就可以用下面的代码,获取这个数据文件的路径。

    new URL('data.txt',import.meta.url)
    

    注意,Node.js 环境中,import.meta.url返回的总是本地路径,即是file:URL协议的字符串,比如file:///home/user/foo.js

    (2)import.meta.scriptElement

    import.meta.scriptElement是浏览器特有的元属性,返回加载模块的那个<script>元素,相当于document.currentScript属性。

    // HTML 代码为
    // <script type="module" src="my-module.js" data-foo="abc"></script>
    // my-module.js 内部执行下面的代码
    import.meta.scriptElement.dataset.foo
    // "abc"
    

    Vite环境下图片动态引入

    require('./profilePic/profile_pic_01.png')
    // 等价于
    new URL('./profilePic/profile_pic_01.png', import.meta.url).href
    

    require在vite中是不可用的

    而import()在vite环境下可用,但是在css in js不可用.

    new URL()

    创建一个新 URL 对象的语法:

    url —— 完整的 URL,或者仅路径(如果设置了 base),
    base —— 可选的 base URL:如果设置了此参数,且参数 url 只有路径,则会根据这个 base 生成 URL。
    显而易见:

    ../assets/blogPhotos/${name}.jpg是相对路径,而import.meta.url 是base url (根链接)。

    可以将这个path打印出来:


    image.png

    其中有一个属性是href,正好是函数的返回值!

    import.meta

    import.meta 对象包含关于当前模块的信息。

    它的内容取决于其所在的环境。在浏览器环境中,它包含当前脚本的 URL,或者如果它是在 HTML 中的话,则包含当前页面的 URL。

    因此可以把 import.meta 打印出来:


    image.png

    可以看到,它有一个属性就是url。

    相关文章

      网友评论

        本文标题:vite环境下图片动态引入

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